
머신러닝
Probability Theory확률론
확률론은 불확실한 사건의 가능성을 수학적으로 다루는 이론이다. 측도론적 기반 위에 구축되며 머신러닝, 통계학, 정보 이론, 금융수학의 공통 언어를 제공한다.
핵심 정의
확률 공간 (Ω, F, P):
Ω: 표본 공간 (모든 가능한 결과의 집합)
F: σ-대수 (사건의 집합)
P: 확률 측도 (P(Ω)=1, 비음수, 가산 가법성)
확률 변수: X: Ω → R
기댓값: E[X] = Σ x·P(X=x) (이산)
E[X] = ∫ x·f(x)dx (연속)
분산: Var(X) = E[(X-μ)²] = E[X²] - (E[X])²
공분산: Cov(X,Y) = E[(X-μX)(Y-μY)]주요 확률 분포
python
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
distributions = {
'정규분포 N(0,1)': stats.norm(loc=0, scale=1),
'지수분포 Exp(1)': stats.expon(scale=1),
'포아송 Po(3)': stats.poisson(mu=3),
'이항 B(10,0.3)': stats.binom(n=10, p=0.3),
}
# 정규분포 성질
mu, sigma = 5, 2
dist = stats.norm(mu, sigma)
print(f"P(X < 7): {dist.cdf(7):.4f}")
print(f"P(3 < X < 7): {dist.cdf(7) - dist.cdf(3):.4f}")
print(f"95번째 백분위수: {dist.ppf(0.95):.4f}")중심 극한 정리
python
import numpy as np
def demonstrate_clt(distribution, n_samples, n_experiments=10000):
"""중심 극한 정리: 어떤 분포든 표본 평균은 정규분포에 수렴"""
sample_means = [
distribution(n_samples).mean()
for _ in range(n_experiments)
]
return np.array(sample_means)
# 균등 분포 [0,1]의 표본 평균
uniform_means_small = demonstrate_clt(lambda n: np.random.uniform(0,1,n), 5)
uniform_means_large = demonstrate_clt(lambda n: np.random.uniform(0,1,n), 100)
print(f"n=5: 평균={uniform_means_small.mean():.3f}, 표준편차={uniform_means_small.std():.3f}")
print(f"n=100: 평균={uniform_means_large.mean():.3f}, 표준편차={uniform_means_large.std():.3f}")
# n=100일 때 표준편차 ≈ 1/√(12·100) ≈ 0.029대수의 법칙과 수렴 개념
python
# 큰 수의 법칙 시각화
import numpy as np
def simulate_law_of_large_numbers(true_p=0.5, max_n=10000):
"""동전 던지기: n이 커질수록 표본 평균이 기댓값에 수렴"""
flips = np.random.binomial(1, true_p, max_n)
cumulative_means = np.cumsum(flips) / np.arange(1, max_n + 1)
return cumulative_means
means = simulate_law_of_large_numbers()
print(f"n=100: {means[99]:.4f}")
print(f"n=1000: {means[999]:.4f}")
print(f"n=10000: {means[9999]:.4f}") # 0.5에 수렴관련 문서
- •/wiki/bayesian-inference
- •/wiki/information-theory
- •/wiki/statistics