이 문서는 특정 확률 분포를 따르는 난수(샘플)를 추출하는 네 가지 주요 방법인 역변환법, 기각-채택법, 박스-뮬러 변환, MCMC에 대해 상세히 설명합니다.
1. 역변환법 (Inverse Transform Method)
가장 기본적이고 직관적인 방법으로, 누적 분포 함수(CDF)의 역함수를 이용합니다.
기본 원리
모든 누적 분포 함수 $F(x)$는 0과 1 사이의 값을 가집니다. 만약 $U$가 $(0, 1)$ 구간의 균등 분포(Uniform Distribution)를 따른다면, $X = F^{-1}(U)$는 $F$를 누적 분포 함수로 갖는 확률 변수가 됩니다.
알고리즘
- 목표 확률 분포의 PDF $f(x)$를 적분하여 CDF $F(x)$를 구합니다.
- $F(x) = u$ 로 놓고, $x$에 대해 풀어 역함수 $x = F^{-1}(u)$를 구합니다.
- 0과 1 사이의 균등 분포에서 난수 $u$를 생성합니다 ($u \sim U(0,1)$).
- $x = F^{-1}(u)$를 계산하면, 이 $x$는 목표 분포 $f(x)$를 따르는 샘플이 됩니다.
장점 및 단점
- 장점: 원리가 간단하고, 역함수를 구하기 쉬운 경우(예: 지수 분포) 매우 효율적입니다.
- 단점: CDF의 역함수 $F^{-1}$를 해석적(analytic)으로 구하기 어려운 분포(예: 정규 분포)에는 적용하기 어렵습니다.
2. 기각-채택법 (Rejection Sampling)
직접 샘플링하기 어려운 목표 분포 $f(x)$ 대신, 샘플링하기 쉬운 제안 분포(Proposal Distribution) $g(x)$를 사용하여 샘플을 추출하고, 특정 조건에 따라 이를 받아들이거나 버리는 방법입니다.
기본 원리
목표 분포 $f(x)$를 덮을 수 있는 상수 $M$과 제안 분포 $g(x)$를 설정하여 $f(x) \leq M \cdot g(x)$가 되도록 합니다. $g(x)$에서 샘플을 뽑은 뒤, 그래프 아래 영역에 들어오는지 확인합니다.
알고리즘
- 샘플링하기 쉬운 제안 분포 $g(x)$와 상수 $M$을 정합니다 (단, 모든 $x$에 대해 $f(x) \leq M g(x)$).
- 제안 분포 $g(x)$에서 샘플 $Y$를 추출합니다.
- 균등 분포 $U(0, 1)$에서 난수 $u$를 추출합니다.
- 기각/채택 조건:
- 만약 $u < \frac{f(Y)}{M g(Y)}$ 이면 (즉, 샘플이 목표 분포 그래프의 아래쪽 영역에 포함되면), $Y$를 채택(Accept)하여 샘플 $X$로 사용합니다.
- 그렇지 않으면 $Y$를 기각(Reject)하고 단계 2로 돌아갑니다.
장점 및 단점
- 장점: CDF의 역함수를 몰라도 PDF($f(x)$)의 비율만 알면 사용할 수 있습니다. 정규화 상수(Normalizing Constant)를 몰라도 됩니다.
- 단점: $M$을 너무 크게 잡거나 $g(x)$가 $f(x)$와 모양이 많이 다르면, 기각되는 비율이 높아져 계산 효율이 매우 떨어집니다(Sample efficiency 저하).
3. 박스-뮬러 변환 (Box-Muller Transform)
표준 정규 분포(Standard Normal Distribution)를 따르는 난수를 생성하기 위해 특화된 방법입니다.
기본 원리
두 개의 독립적인 균등 분포 샘플을 이용하여, 극좌표계(Polar Coordinates) 변환을 통해 두 개의 독립적인 표준 정규 분포 샘플을 만들어냅니다.
알고리즘
- 두 개의 독립적인 균등 분포 난수 $U_1, U_2 \sim U(0, 1)$를 생성합니다.
- 다음 공식을 사용하여 $Z_0$와 $Z_1$을 계산합니다.$$Z_0 = \sqrt{-2 \ln U_1} \cos(2\pi U_2)$$$$Z_1 = \sqrt{-2 \ln U_1} \sin(2\pi U_2)$$
- 이렇게 생성된 $Z_0$와 $Z_1$은 서로 독립이며 표준 정규 분포 $N(0, 1)$을 따릅니다.
장점 및 단점
- 장점: 정규 분포 샘플을 생성하는 데 있어 역변환법(정규분포는 역함수를 구하기 힘듦)보다 훨씬 효율적이고 정확합니다.
- 단점: 정규 분포 생성에만 특화되어 있어, 다른 분포에는 바로 적용할 수 없습니다. (로그와 삼각함수 계산은 단순 사칙연산보다 컴퓨터 연산 비용이 높기 때문에, 대량의 난수 생성 속도가 중요한 경우에는 Ziggurat 알고리즘 같은 더 빠른 기법이 사용되기도 합니다.)
4. MCMC (Markov Chain Monte Carlo)
고차원의 복잡한 분포에서 샘플을 추출할 때 사용되는 강력한 방법입니다. 샘플들이 독립적이지 않고 마르코프 체인(Markov Chain)을 형성합니다.
기본 원리
목표 분포 $f(x)$를 정적 분포(Stationary Distribution)로 갖는 마르코프 체인을 설계합니다. 체인이 충분히 길어지면(수렴하면), 체인이 특정 상태에 방문하는 빈도가 목표 확률 분포 $f(x)$에 비례하게 되어 이를 샘플로 간주할 수 있습니다. 대표적인 알고리즘으로 메트로폴리스-헤이스팅스(Metropolis-Hastings)와 깁스 샘플링(Gibbs Sampling)이 있습니다.
메트로폴리스-헤이스팅스 알고리즘 (간략)
- 임의의 시작점 $x_0$를 정합니다.
- 현재 상태 $x_t$에서 제안 분포 $q(x'|x_t)$를 이용해 후보 $x'$를 제안합니다.
- 채택 확률 $\alpha$를 계산합니다:$$\alpha = \min \left(1, \frac{f(x')q(x_t|x')}{f(x_t)q(x'|x_t)} \right)$$
- 균등분포 $u \sim U(0,1)$을 뽑아 $u \le \alpha$이면 후보 $x'$를 받아들여 $x_{t+1} = x'$로 업데이트하고, 아니면 $x_{t+1} = x_t$ (현 상태 유지)로 둡니다.
장점 및 단점
- 장점:차원이 높거나(High-dimensional) 복잡한 분포에서 효과적입니다.분포의 정규화 상수(전체 적분값)를 몰라도 샘플링이 가능합니다. (베이지안 통계학의 사후 분포 추론에 필수적)
- 단점:샘플 간의 자기 상관(Auto-correlation)이 존재하여 독립적인 샘플을 얻기 위해 'Thinning'이 필요할 수 있습니다.체인이 아직 목표 분포인 정적 분포에 수렴하지 않은 초기 단계의 데이터를 배제하기 위해, 초반 샘플을 버리는 '번인(Burn-in)' 과정이 필요합니다.체인이 목표 분포에 수렴했는지 판단하기 까다로울 수 있습니다.
'수학 > 확률과 통계' 카테고리의 다른 글
| 두 벡터의 내적의 분산 구하기 (0) | 2025.10.22 |
|---|---|
| 확률(Probability)과 우도(Likelihood): 명확한 개념 비교 (0) | 2025.10.18 |