Rejection sampling이란?
Rejection sampling(기각 샘플링)은 어떠한 주어진 확률 분포에서 효율적으로 샘플을 생성하기 위해 많이 이용되는 알고리즘이다. Rejection sampling은 확률 밀도 함수를 알고는 있지만, 그 함수를 통해 샘플을 생성하기 어려울 때 활용할 수 있다.
Rejection sampling의 기본적인 동작은 쉽게 샘플을 생성할 수 있는 $q$에서 샘플들을 생성한 뒤에 이 샘플들의 분포가 $p$(타겟 분포)를 따르도록 수정하는 것이다. 이를 통해 실제로는 $q$에서 샘플이 생성되었지만, 그 결과는 $p$에서 생성된 것처럼 만드는 것이다. 이때 쉽게 샘플을 생성할 수 있도록 임의로 설정한 $q$를 제안 분포 (proposal distribution) 이라고 한다. 제안 분포는 uniform distribution, normal distribution 등이 이용될 수 있으며, 가능하면 $p$와 비슷한 형태의 확률 분포를 사용하는 것이 좋다.
제안 분포를 설정한 다음에는 상수 $M$을 설정한다. 이때 $M$은 모든 $x$에 대해 $p(x) \leq Mq(x)$가 되도록 설정해야 한다.
Rejection sampling의 첫 번째 단계는 $q$에서 샘플 $x_{0}$를 생성하는 것이다.
그 다음 $[0, Mq(x_{0})]$ 사이의 uniform distribution에서 $u$를 생성하여 $u$가 A 영역에 존재한다면 $x_{0}$를 기각하고, B 영역에 존재한다면 $x_{0}$를 샘플로 이용한다. 이 과정을 통해 $q$에서 생성된 샘플들은 $p$를 따르게 된다.
$q$에서 샘플을 생성하여 $[0, Mq(x_{0})]$ 사이의 난수에 따라 샘플을 기각-수용하는 과정을 무한히 반복하면, rejection sampling을 통해 얻은 샘플들은 결국 $p$에서 생성된 샘플처럼 보이게 된다.
Rejection sampling 예제 파이썬 코드 구현
2023.06.08 - [AI/파이썬] - Rejection Sampling을 통한 Beta 분포 확률변수 생성
'Studies > 확률&통계' 카테고리의 다른 글
연속형 확률분포 - 지수 분포(Exponential Distribution) (0) | 2023.06.27 |
---|---|
가설 검정 (Hypothesis-testing) (0) | 2023.06.27 |
연속형 확률분포 - 균일 분포(Uniform Distribution) (0) | 2023.05.23 |
연속형 확률 변수 (Continuous random variable) (0) | 2023.05.22 |
이산형 확률분포 - 기하 분포(Geometric Distribution), 음이항 분포(Negative Binomial Distribution), 초기하 분포(Hypergeometric Distribution) (0) | 2023.05.11 |
댓글