(Python) 기대치 · 몬테카를로 샘플링을 정중하게 이해하려고했습니다
소개
베이즈 통계학을 배우는 데 기대치를 드러냈습니다.
하기 책을 참고로 했습니다.
기대치란?
기대치(expectation)란, 어느 함수 $f(x)$의 확률 분포 $p(x)$ 아래에서의 $f(x)$의 평균치를 가리킵니다. 표기법으로는 $E[f]$라고 씁니다.
이산 분포에서는 다음과 같이 나타냅니다.
E[f] = \sum_x p(x)f(x)
반면 연속 변수의 경우 적분으로 표현할 수 있습니다.
E[f] = \int p(x)f(x)dx
엔트로피
확률 분포 $p(x)$에 대한 다음과 같은 기대치를 엔트로피(entropy)라고 합니다.
\begin{align}
H[p(x)]& = - \sum_x p(x) ln(p(x))\\
\end{align}
유한화에서의 근사(몬테카를로 샘플링)
분포 $p(x)$에서 독립적으로 추출된 샘플 집합을 $\bf {z}^{(n)} (n = 1,...,N)$로 했을 때 기대값은 처럼 근사할 수 있습니다.
E[f] = \frac{1}{L} \sum_{n=1}^{N}f(\bf{z}^{(N)})
됩니다.
여기서 예제로 생각합니다.
예제
$p(x=1)=0.3,p(x=1)=0.7$가 되는 이산 분포를 생각합니다.
엔트로피의 정의에서 엔트로피는
\begin{align}
H[p(x)]& = - \sum_x p(x) ln(p(x))\\
&=-(p(x=1)lnp(x=1) + p(x=0)lnp(x=0) )\\
&= -(\frac{3}{10}ln\frac{3}{10}+\frac{7}{10}ln\frac{7}{10})\\
&=0.610
\end{align}
됩니다.
음, 이것을 유한화로 근사하는 경우의 계산을 해 보겠습니다.
random.uniform
메소드에 의해 0~1의 무작위인 값을 출력시켜, 그것이 $p(x=1)=0.3$보다 커지는지 어떤지로 $x=1$인가 $x=2$인가 어떤가 판별하고 있습니다.그리고, $x=1,2$가 되는 횟수를
cnt
로 세게 하는 것을 하고 있습니다.아래와 같은 프로그램이 됩니다. 시험에 1000회 계산하고 있습니다.
cnt = []
proba_1 =[]
proba_2 =[]
time = 1000
a = random.uniform(0,1)
exp =[]
for i in range(time):
a = random.uniform(0,1)
if a > p1:
cnt = np.append(cnt,1)
else:
cnt = np.append(cnt, 0)
proba_1 = np.append(proba_1, (i+1-sum(cnt))/(i+1))
proba_2 = np.append(proba_2, sum(cnt)/(i+1))
exp = np.append(exp, -(((i+1-sum(cnt))*math.log(p1))+((sum(cnt))*math.log(p2)))/(i+1))
plt.xlabel('time')
plt.ylabel('probability')
plt.plot(time_plot, proba_2, label="p2")
plt.plot(time_plot, proba_1, label="p1")
plt.legend()
$p(x=1)=0.3,p(x=2)=0.7$에 대략 100회 이후 수렴해 나가는 것을 알았습니다.
이쪽도 100회 이후로 원래 요구하고 있던 기대치(=엔트로피)의 0.61당에 수렴하고 있는 것을 알았습니다.
확실히 이 기대치 근사의 수법이 문제없는 것을 확인할 수 있었습니다.
끝에
이번은 매우 간단한 예제였기 때문에, 산출 및 확인하는 것이 용이했습니다. 그러나 실제 문제에서는 기대치가 해석적으로 구하기 어려운 경우가 대부분입니다.
따라서, 이 몬테카를로 샘플링으로 근사하는 것을 기억해 두면 유익하다고 생각합니다.
프로그램 전문은 여기입니다.
htps : // 기주 b. 코m/후미오-에이씨/ゔぃ20200520
Reference
이 문제에 관하여((Python) 기대치 · 몬테카를로 샘플링을 정중하게 이해하려고했습니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Fumio-eisan/items/23114df82a6acd0034e3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여((Python) 기대치 · 몬테카를로 샘플링을 정중하게 이해하려고했습니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Fumio-eisan/items/23114df82a6acd0034e3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)