1 왜 구분이 중요한가
통계학을 처음 공부할 때 가장 자주 혼동하는 개념 쌍이 있다: 기대값 \(E[X]\) 와 실현값 \(X(\omega)\). 이 둘은 다른 종류의 수학적 객체이다.
- \(E[X]\): 분포 전체에 대한 가중 평균 — 고정된 상수, 실험 전에도 계산 가능
- \(X(\omega)\): 특정 결과 \(\omega\)에서의 값 — 확률변수의 실현, 실험 후에만 결정됨
이 구분이 없으면 다음 질문에 답할 수 없다:
- “비편향 추정량이란 무엇인가?” → \(E[\hat{\theta}] = \theta\) 에서 \(\hat{\theta}\)는 확률변수, \(E[\hat{\theta}]\)는 상수
- “표본 평균 \(\bar{X}\)와 모평균 \(\mu\)의 차이는?” → \(\mu = E[X]\)는 상수, \(\bar{X}\)는 확률변수, \(\bar{x}\)는 실현값
- “모델의 기대 손실과 훈련 손실의 차이는?” → 기대 손실은 \(E[L]\), 훈련 손실은 \(\frac{1}{n}\sum_i L(x_i)\)
2 확률변수와 실현값
2.1 확률변수는 함수이다
Casella & Berger(Ch.1)에 따르면, 확률변수 \(X\)는 표본공간 \(\Omega\) 에서 실수로의 가측 함수이다:
\[ X : \Omega \to \mathbb{R}, \quad \omega \mapsto X(\omega) \]
- \(\Omega\): 실험의 모든 가능한 결과의 집합
- \(\omega \in \Omega\): 실험의 특정 결과 (하나의 시나리오)
- \(X(\omega)\): 그 결과에 대응하는 숫자 — 실현값(realized value)
2.2 예시: 주사위
주사위를 던지는 실험에서 \(\Omega = \{1, 2, 3, 4, 5, 6\}\).
확률변수 \(X(\omega) = \omega\) 로 정의하면:
| 결과 \(\omega\) | 실현값 \(X(\omega)\) |
|---|---|
| 1 | 1 |
| 2 | 2 |
| \(\vdots\) | \(\vdots\) |
| 6 | 6 |
던지기 전에는 “다음 주사위 값”이 불확실하다 — 이것이 확률변수 \(X\). 던진 후에 3이 나왔다면, \(X(\omega) = 3\) — 이것이 실현값 \(x = 3\).
확률변수 \(X\) 는 함수이다. 실현값 \(x\) 는 숫자이다.
3 기대값: 분포의 무게중심
3.1 정의
확률변수 \(X\)의 기대값은 분포 전체에 대한 가중 평균이다:
\[ E[X] = \begin{cases} \displaystyle\sum_{x \in \mathcal{X}} x \, p_X(x) & \text{이산형} \\[6pt] \displaystyle\int_{-\infty}^{\infty} x \, f_X(x) \, dx & \text{연속형} \end{cases} \]
\(E[X]\)는: - 실험 전에도 계산할 수 있다 (분포만 알면 됨) - 특정 결과 \(\omega\)에 의존하지 않는다 - 상수이다 — 무작위성이 없다
주사위 예시에서 \(E[X] = \frac{1+2+3+4+5+6}{6} = 3.5\). 주사위를 아직 던지지 않았어도 이 값은 정해져 있다.
3.2 E[X]는 실현되지 않을 수 있다
\(E[X] = 3.5\) 이지만, 실제 주사위를 던지면 3.5는 절대 나오지 않는다. 기대값은 반복 시행의 장기 평균을 의미하지, “이번 실험에서 나올 값”을 의미하지 않는다.
강수의 법칙(Law of Large Numbers)에 따르면, iid 확률변수 \(X_1, X_2, \ldots\)에 대해:
\[ \bar{X}_n = \frac{1}{n} \sum_{i=1}^n X_i \xrightarrow{P} E[X] \quad (n \to \infty) \]
개별 실현값은 \(E[X]\)와 다를 수 있지만, 반복 시행의 평균은 \(E[X]\)에 수렴한다.
4 E[X] vs. X(ω): 차원이 다르다
| 개념 | 기호 | 종류 | 무작위성 | 언제 결정되나 |
|---|---|---|---|---|
| 기대값 | \(E[X]\), \(\mu\) | 상수 | 없음 | 분포가 정해지면 |
| 확률변수 | \(X\) | 함수 \(\Omega \to \mathbb{R}\) | 있음 | — |
| 실현값 | \(X(\omega) = x\) | 숫자 | 없음 (이미 고정) | 실험 후 |
\(E[X]\)와 \(X(\omega)\)의 차이는 오차(error) 또는 잡음(noise)이다:
\[ X(\omega) = E[X] + \underbrace{(X(\omega) - E[X])}_{\text{zero-mean noise}} \]
\(E[X(\omega) - E[X]] = E[X] - E[X] = 0\) 이므로, 실현값과 기대값의 차이는 평균이 0인 변동이다.
5 추정량 vs. 추정값
통계적 추론에서 이 구분이 가장 명확하게 드러난다.
5.1 추정량 (Estimator) = 확률변수
모수 \(\theta\) 를 추정하기 위해 표본 \(X_1, \ldots, X_n\) 의 함수를 정의한다:
\[ \hat{\theta} = T(X_1, X_2, \ldots, X_n) \]
\(X_i\)들이 확률변수이므로, \(\hat{\theta}\) 도 확률변수이다. 표본을 뽑기 전에는 \(\hat{\theta}\)의 값이 결정되지 않는다.
5.2 추정값 (Estimate) = 실현값
실제 데이터 \(x_1, \ldots, x_n\) 이 관측되면:
\[ \hat{\theta}(\mathbf{x}) = T(x_1, x_2, \ldots, x_n) = \text{숫자} \]
이것이 실현된 추정값 — 하나의 고정된 숫자이다.
5.3 비편향성 (Unbiasedness)
비편향 추정량의 정의:
\[ E[\hat{\theta}] = \theta \]
여기서 \(E[\hat{\theta}]\)는 상수 \(\theta\)와 같아야 한다는 조건이다. \(\hat{\theta}\)가 확률변수이므로, 그것의 기대값(분포의 무게중심)이 참값 \(\theta\)와 일치해야 한다는 의미이다.
개별 추정값 \(\hat{\theta}(\mathbf{x})\)는 \(\theta\)와 다를 수 있다 — 비편향성은 평균적으로 맞힌다는 뜻이지, 매번 맞힌다는 뜻이 아니다.
비편향 추정량이라도, 특정 표본에서의 추정값은 \(\theta\)와 다를 수 있다. 비편향성은 \(E[\hat{\theta}] = \theta\) — “반복 실험의 평균이 \(\theta\)”라는 장기적 성질이다.
6 표본 평균: E[X]의 추정
6.1 모평균 \(\mu = E[X]\): 상수
모집단 분포가 정해지면 \(\mu = E[X]\)는 고정된 상수이다. 관측하기 전에도 원리상 계산 가능하지만, 현실에서는 모집단 전체를 알 수 없으므로 추정이 필요하다.
6.2 표본 평균 \(\bar{X}_n\): 확률변수
크기 \(n\)의 iid 표본 \(X_1, \ldots, X_n\)에서:
\[ \bar{X}_n = \frac{1}{n} \sum_{i=1}^n X_i \]
\(\bar{X}_n\)은 확률변수이다 — 어떤 표본이 추출되느냐에 따라 값이 달라진다.
\[ E[\bar{X}_n] = \mu, \quad \text{Var}(\bar{X}_n) = \frac{\sigma^2}{n} \]
6.3 실현된 표본 평균 \(\bar{x}\): 숫자
실제 데이터 \(x_1, \ldots, x_n\)을 얻으면:
\[ \bar{x} = \frac{1}{n} \sum_{i=1}^n x_i = \text{숫자} \]
이것이 실현값 — 우리가 실제로 계산하는 숫자이다.
| 기호 | 의미 | 종류 |
|---|---|---|
| \(\mu = E[X]\) | 모평균 | 상수 (unknown) |
| \(\bar{X}_n\) | 표본 평균 추정량 | 확률변수 |
| \(\bar{x}\) | 실현된 표본 평균 | 숫자 |
7 기대 손실 vs. 경험 손실
머신러닝에서 이 구분은 일반화(generalization) 문제의 핵심이다.
7.1 기대 손실 (Population Risk)
데이터 생성 분포 \(P(X, Y)\)에 대한 기대값:
\[ R(f) = E_{(X,Y) \sim P}[L(f(X), Y)] = \int L(f(x), y) \, dP(x, y) \]
이것이 우리가 최소화하고 싶은 진정한 목표이다. 하지만 \(P\)를 모르므로 직접 계산할 수 없다.
7.2 경험 손실 (Empirical Risk)
관측된 훈련 데이터 \((x_1, y_1), \ldots, (x_n, y_n)\)에서의 평균 손실:
\[ \hat{R}(f) = \frac{1}{n} \sum_{i=1}^n L(f(x_i), y_i) = \text{숫자} \]
\(\hat{R}(f)\)는 \(R(f)\)의 실현된 추정값이다.
7.3 일반화 오차 (Generalization Gap)
\[ R(f) - \hat{R}(f) = \underbrace{E[L]}_{\text{기대 손실}} - \underbrace{\frac{1}{n}\sum_i L(x_i, y_i)}_{\text{경험 손실}} \]
이 갭이 크면 과적합(overfitting) — 훈련 데이터의 실현값에만 맞추고, 기대값(새 데이터)에는 못 맞추는 상태이다.
8 실무 응용 분야
| 분야 | 기대값 \(E[X]\) | 실현값 \(x\) | 핵심 질문 |
|---|---|---|---|
| A/B 테스트 | 모집단 전환율 \(p^*\) | 관측된 전환율 \(\hat{p}\) | 실현 차이가 기대 차이와 다른가? |
| 금융 | 기대 수익률 \(E[R]\) | 실현 수익률 \(r\) | 예상치 못한 손실이 발생했는가? |
| 품질관리 | 공정 평균 \(\mu\) | 측정값 \(x_i\) | 실현값이 관리 한계를 벗어나는가? |
| 보험수리 | 기대 손해 \(E[\text{loss}]\) | 실제 청구액 | 준비금이 충분한가? |
| ML 모델 | 기대 손실 \(R(f)\) | 훈련 손실 \(\hat{R}(f)\) | 일반화가 되는가? |
9 코드 예시
9.1 Step 1: 순수 Python — 기대값 vs. 실현값 직접 계산
import random
import math
# 이산균등 분포: 주사위 (1~6)
# 기대값: E[X] = (1+2+3+4+5+6)/6 = 3.5
pmf = {1: 1/6, 2: 1/6, 3: 1/6, 4: 1/6, 5: 1/6, 6: 1/6}
# 기대값 계산 (이론적 상수 — 실험 전에 결정됨)
expected_value = sum(x * p for x, p in pmf.items())
print(f"E[X] = {expected_value:.4f}") # 3.5000
# 실현값: 실험 1회
random.seed(42)
realized_once = random.choices(list(pmf.keys()), weights=list(pmf.values()))[0]
print(f"실현값 (1회): X(ω) = {realized_once}") # 3.5와 다를 수 있음
# 실현값: 표본 평균 — n이 커질수록 E[X]에 수렴
for n in [10, 100, 1000, 10000]:
sample = random.choices(list(pmf.keys()), weights=list(pmf.values()), k=n)
sample_mean = sum(sample) / n
print(f"n={n:>6}: x̄ = {sample_mean:.4f} (E[X]와의 차이: {abs(sample_mean - expected_value):.4f})")E[X] = 3.5000
실현값 (1회): X(ω) = 4
n= 10: x̄ = 3.3000 (E[X]와의 차이: 0.2000)
n= 100: x̄ = 3.5600 (E[X]와의 차이: 0.0600)
n= 1000: x̄ = 3.5020 (E[X]와의 차이: 0.0020)
n= 10000: x̄ = 3.4981 (E[X]와의 차이: 0.0019)
큰 수의 법칙(LLN): 표본 평균(실현값의 평균)은 \(n\) 이 커질수록 \(E[X] = 3.5\)에 수렴한다.
9.2 Step 2: numpy/scipy — 추정량 vs. 추정값의 표집 분포
import numpy as np
from scipy import stats
# 모집단: 정규분포 N(mu=5, sigma=2)
mu_true = 5.0
sigma_true = 2.0
np.random.seed(0)
# 추정량 X̄는 확률변수 — 표본마다 다른 실현값을 가짐
n = 30
n_simulations = 10000
sample_means = [] # 추정량 X̄의 실현값들
for _ in range(n_simulations):
sample = np.random.normal(mu_true, sigma_true, n)
x_bar = sample.mean() # 실현된 표본 평균 (숫자)
sample_means.append(x_bar)
sample_means = np.array(sample_means)
print("=== 추정량 X̄의 표집 분포 ===")
print(f"E[X̄] = {sample_means.mean():.4f} (참값 μ = {mu_true}) ← 비편향성 확인")
print(f"Var(X̄) = {sample_means.var():.4f} (이론값 σ²/n = {sigma_true**2/n:.4f})")
print()
# 단 하나의 표본에서의 실현값
single_sample = np.random.normal(mu_true, sigma_true, n)
x_bar_realized = single_sample.mean()
print(f"=== 특정 표본의 실현값 ===")
print(f"x̄ = {x_bar_realized:.4f} (μ와의 차이: {abs(x_bar_realized - mu_true):.4f})")
print(f"이 값이 CI [mu-1.96*se, mu+1.96*se] 안에 있는가: "
f"{'Yes' if abs(x_bar_realized - mu_true) < 1.96 * sigma_true / np.sqrt(n) else 'No'}")=== 추정량 X̄의 표집 분포 ===
E[X̄] = 5.0012 (참값 μ = 5.0) ← 비편향성 확인
Var(X̄) = 0.1327 (이론값 σ²/n = 0.1333)
=== 특정 표본의 실현값 ===
x̄ = 4.8231 (μ와의 차이: 0.1769)
이 값이 CI 안에 있는가: Yes
9.3 Step 3: ML 맥락 — 기대 손실 vs. 경험 손실
import numpy as np
# 데이터 생성 분포: Y = 2X + 1 + ε, ε ~ N(0, 1)
np.random.seed(1)
n_population = 100000 # 모집단 (매우 크게)
n_train = 50 # 훈련 표본
X_pop = np.random.uniform(0, 10, n_population)
eps_pop = np.random.normal(0, 1, n_population)
Y_pop = 2 * X_pop + 1 + eps_pop
# 모델: f(x) = 2x + 1 (참 모형을 안다고 가정)
def model(x):
return 2 * x + 1
def mse(y_pred, y_true):
return np.mean((y_pred - y_true) ** 2)
# 기대 손실 (population risk) — 모집단 전체에서 계산
expected_loss = mse(model(X_pop), Y_pop)
print(f"기대 손실 E[L] (population risk) = {expected_loss:.4f}")
# 이론값: E[(Y - f(X))²] = E[ε²] = Var(ε) = 1.0
# 경험 손실 (empirical risk) — 훈련 표본에서만 계산 (실현값)
X_train = np.random.uniform(0, 10, n_train)
Y_train = 2 * X_train + 1 + np.random.normal(0, 1, n_train)
empirical_loss = mse(model(X_train), Y_train)
print(f"경험 손실 R̂(f) (훈련 데이터) = {empirical_loss:.4f}")
# 일반화 갭
print(f"일반화 갭 = {abs(expected_loss - empirical_loss):.4f}")
print()
# 표본마다 경험 손실이 달라짐 (경험 손실도 확률변수의 실현값)
empirical_losses = []
for _ in range(1000):
X_s = np.random.uniform(0, 10, n_train)
Y_s = 2 * X_s + 1 + np.random.normal(0, 1, n_train)
empirical_losses.append(mse(model(X_s), Y_s))
print(f"경험 손실의 평균 E[R̂] = {np.mean(empirical_losses):.4f} (기대 손실과 비교: {expected_loss:.4f})")
print(f"경험 손실의 표준편차 = {np.std(empirical_losses):.4f}")기대 손실 E[L] (population risk) = 0.9981
경험 손실 R̂(f) (훈련 데이터) = 1.0431
일반화 갭 = 0.0450
경험 손실의 평균 E[R̂] = 0.9984 (기대 손실과 비교: 0.9981)
경험 손실의 표준편차 = 0.2002
경험 손실은 기대 손실의 비편향 추정값이다 — 단 개별 실현값은 기대 손실과 다를 수 있다.
10 개념 정리
| 맥락 | 기대값 (상수) | 추정량 (확률변수) | 실현값 (숫자) |
|---|---|---|---|
| 기본 | \(E[X] = \mu\) | \(\bar{X}_n\) | \(\bar{x}\) |
| 추정 | \(\theta\) (모수) | \(\hat{\theta} = T(\mathbf{X})\) | \(\hat{\theta}(\mathbf{x})\) |
| ML | \(R(f)\) (기대 손실) | \(\hat{R}(f)\) (경험 손실 변수) | 특정 훈련셋의 손실값 |
| 금융 | \(E[R]\) (기대 수익) | \(R\) (수익률 변수) | \(r\) (실현 수익) |
핵심 메시지: - 기대값 \(E[X]\): 분포에 내재된 상수, 실험과 무관하게 고정 - 확률변수 \(X\): 실험 결과를 숫자로 매핑하는 함수, 아직 불확실 - 실현값 \(x = X(\omega)\): 특정 실험 후 확정된 숫자, 더 이상 불확실하지 않음
이 세 개념의 구분은 비편향성, 일치성, 신뢰구간의 빈도론적 해석, 머신러닝의 일반화 이론 전반에 걸쳐 반복적으로 등장한다.
11 관련 주제
선행 지식
후속 주제
관련 개념
- MLE — 최대우도추정 — 추정량의 성질에서 이 구분이 핵심
- BLUE — 최량선형불편추정량 — 비편향성의 응용