J'ai passé en revue les attentes concernant l'étude des statistiques bayésiennes.
Je me suis référé au livre suivant.
[Introduction à l'apprentissage automatique par l'inférence bayésienne de la série de démarrage Machine Learning](https://www.amazon.co.jp/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92] % E3% 82% B9% E3% 82% BF% E3% 83% BC% E3% 83% 88% E3% 82% A2% E3% 83% 83% E3% 83% 97% E3% 82% B7% E3 % 83% AA% E3% 83% BC% E3% 82% BA-% E3% 83% 99% E3% 82% A4% E3% 82% BA% E6% 8E% A8% E8% AB% 96% E3% 81% AB% E3% 82% 88% E3% 82% 8B% E6% A9% 9F% E6% A2% B0% E5% AD% A6% E7% BF% 92% E5% 85% A5% E9% 96% 80-KS% E6% 83% 85% E5% A0% B1% E7% A7% 91% E5% AD% A6% E5% B0% 82% E9% 96% 80% E6% 9B% B8-% E9% A0 % 88% E5% B1% B1-% E6% 95% A6% E5% BF% 97 / dp / 4061538322)
[Reconnaissance de formes et apprentissage automatique (prédiction statistique par la théorie bayésienne)](https://www.amazon.co.jp/%E3%83%91%E3%82%BF%E3%83%BC%E3 % 83% B3% E8% AA% 8D% E8% AD% 98% E3% 81% A8% E6% A9% 9F% E6% A2% B0% E5% AD% A6% E7% BF% 92-% E4% B8% 8B-% E3% 83% 99% E3% 82% A4% E3% 82% BA% E7% 90% 86% E8% AB% 96% E3% 81% AB% E3% 82% 88% E3% 82 % 8B% E7% B5% B1% E8% A8% 88% E7% 9A% 84% E4% BA% 88% E6% B8% AC-CM-% E3% 83% 93% E3% 82% B7% E3% 83% A7% E3% 83% 83% E3% 83% 97 / dp / 4621061240)
L'espérance est la valeur moyenne de $ f (x) $ sous la distribution de probabilité $ p (x) $ d'une fonction $ f (x) $. En tant que notation, écrivez $ E [f] $.
Dans la distribution discrète, il s'exprime comme suit.
E[f] = \sum_x p(x)f(x)
D'autre part, les variables continues peuvent être exprimées sous forme d'intégrales.
E[f] = \int p(x)f(x)dx
La valeur attendue suivante pour la distribution de probabilité $ p (x) $ est appelée entropie.
\begin{align}
H[p(x)]& = - \sum_x p(x) ln(p(x))\\
\end{align}
Lorsque l'ensemble des échantillons extraits indépendamment de la distribution $ p (x) $ est $ \ bf {z} ^ {(n)} (n = 1, ..., N) $, les valeurs attendues sont les suivantes. Peut être approximé comme
E[f] = \frac{1}{L} \sum_{n=1}^{N}f(\bf{z}^{(N)})
Ce sera.
Prenons un exemple ici. exemple Considérons une distribution discrète telle que $ p (x = 1) = 0,3 et p (x = 1) = 0,7 $.
D'après la définition de l'entropie, l'entropie est
\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}
Ce sera.
Maintenant, calculons lors de l'approximation de cela avec une somme finie. La méthode random.uniform
génère une valeur aléatoire entre 0 et 1 et $ x = 1 $ ou $ x = 2 $ selon qu'elle est supérieure ou non à $ p (x = 1) = 0,3 $. J'essaie de déterminer si c'est le cas.
Et, le nombre de fois que $ x = 1,2 $ est compté par cnt
.
Le programme sera le suivant. J'ai calculé 1000 fois à titre d'essai.
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()
On a constaté qu'il converge vers $ p (x = 1) = 0,3 et p (x = 2) = 0,7 $ après environ 100 fois.
Il a été constaté que cela convergeait également vers environ 0,61 de la valeur attendue (= entropie) initialement obtenue après 100 fois.
Il a été confirmé qu'il n'y a pas de problème avec cette méthode d'approximation de la valeur attendue.
Cette fois, c'était un exemple très simple, donc c'était facile à calculer et à confirmer. Cependant, dans les problèmes réels, il est souvent difficile d'obtenir analytiquement la valeur attendue. Par conséquent, je pense qu'il est utile de se rappeler que cet échantillonnage de Monte Carlo est approximatif.
Le texte intégral du programme est ici. https://github.com/Fumio-eisan/VI20200520
Recommended Posts