[PYTHON] Mise à jour bayésienne, essayé de comprendre la distribution binomiale / fonction de vraisemblance

introduction

La dernière fois, j'ai découvert l'estimation bayésienne, ce qui, je pense, est inévitable lors de l'apprentissage de l'apprentissage automatique. Cette fois, nous avons par la suite résumé les mises à jour bayésiennes, les distributions binomiales et les fonctions de vraisemblance.

J'ai essayé de comprendre le théorème de Bayes (je pense) qui ne peut être évité par le machine learning https://qiita.com/Fumio-eisan/items/f33533c1e5bc8d6c93db

L'apprentissage automatique et sa théorie (Information Olympics 2015 Spring Training Camp Lecture Material) https://www.slideshare.net/irrrrr/2015-46395273

Comprendre les mises à jour bayésiennes

Il y a une mise à jour bayésienne comme idée qui applique le théorème bayésien. Cela fait référence à l'idée que la pré-probabilité est la post-probabilité mise à jour. Prenons comme exemple l'idée d'un filtre de courrier indésirable et faisons un calcul concret.

Filtre de courrier indésirable

Pensez à déterminer si un e-mail $ A $ est un e-mail indésirable $ A_1 $ ou un e-mail non indésirable $ A_2 $. L'e-mail contenait des mots tels que «victoire absolue» et «totalement gratuit» qui sont faciles à saisir dans les courriers indésirables. La probabilité que ces mots soient inclus dans le courrier indésirable et le courrier non indésirable est ** de la base de données ** comme indiqué dans le tableau ci-dessous.

Spam 非Spam
Victoire absolue 0.11 0.01
Complètement libre 0.12 0.02

Maintenant, disons que l'événement qui inclut le mot «victoire absolue» est $ B_1 $ et l'événement qui ne l'inclut pas est $ B_2 $. Puis

P(B_1|A_1) = P(Victoire absolue|Spam) = 0.11\\
P(B_1|A_2) = P(Victoire absolue|Courrier non indésirable) = 0.01

Ce sera. Cela indique que même dans le courrier non indésirable, environ 1 sur 100 peut être écrit comme une victoire absolue. Maintenant, la base de données ** montre que le rapport du courrier indésirable à l'ensemble du courrier est $ P (A_1) = 0,6 $. A ce moment, la «probabilité qu'un e-mail contenant le mot« victoire absolue »soit un courrier indésirable» est calculée à partir du théorème de Bayes.

\begin{align}
P(A_1|B_1)& =  P(Spam|Victoire absolue)= \frac{P(B_1|A_1)P(A_1)}{P(B_1)}\\
&=\frac{P(Victoire absolue|Spam)P(Spam)}{P(Victoire absolue)}\\
&=\frac{0.11×0.6}{0.11×0.6+0.01×(1-0.6))}\\
&=0.9429
\end{align}

Ce sera.

Par conséquent, il a été constaté qu'environ 94% des e-mails contenant une «victoire absolue» sont des e-mails non sollicités et environ 6% sont des e-mails non indésirables. À partir de ce calcul, l'hypothèse que 60% était du courrier indésirable a été remplacée par l'hypothèse que 94% était du courrier indésirable. C'est l'idée que ** la probabilité postérieure est la pré-probabilité. ** Sur la base de cette idée, le principe de mise à jour bayésienne est appliqué à "totalement gratuit".

\begin{align}
P(A_1|B_2)& =  P(Spam|Complètement libre)= \frac{P(B_2|A_1)P(A_1)}{P(B_2)}\\
&=\frac{P(Complètement libre|Spam)P(Spam)}{P(Complètement libre)}\\
&=\frac{0.12×0.9429}{0.12×0.9429+0.01×(1-0.9429))}\\
&=0.9900
\end{align}

est devenu. En d'autres termes, il a été constaté qu'environ 99% des e-mails contenant «totalement gratuits» sont des courriers indésirables. Cette façon de penser est appelée mise à jour bayésienne.

Comprendre la distribution de Bernoulli et le théorème binomial

La distribution de Bernoulli est une distribution qui montre la distribution de probabilité.


f(x|θ) = θ^x(1-θ)^{1-x}, x=0,1

$ x $ est une variable stochastique, prenant 1 ou 0. Habituellement, le recto et le verso de la pièce, la présence ou l'absence de maladie, etc. sont représentés par ce 1,0. De plus, $ θ $ fait référence à la probabilité que l'événement se produise. Ce $ θ $, également appelé population, est un indice numérique qui caractérise la distribution de probabilité.

Comprendre la distribution binomiale

À propos, la distribution de Bernoulli mentionnée précédemment représente un essai. Ensuite, considérons le cas où cet essai est effectué N fois. Prenons le basket-ball comme exemple. Il y a des joueurs qui peuvent faire des lancers francs avec $ \ frac {1} {3} $. Considérez la probabilité de lancer 3 fois et de réussir 2 fois. Par exemple, la probabilité de succès ⇒ succès ⇒ échec observé est


θ^2×(1-θ)^1 = {\frac{1}{3}}^2×(1-\frac{1}{3})=\frac{2}{27}

Ce sera. Cependant, il existe trois modèles de succès ⇒ échec ⇒ succès, échec ⇒ succès ⇒ succès. Par conséquent, il peut être calculé comme \ frac {2} {9}. Pour généraliser cela


f(x;N,θ) = nCx×θ^x(1-θ)^{n-x}, x=0,1

Voyons comment cette distribution de probabilité est dessinée lorsque $ n = 30 $, $ θ = 0,3,0,5,0,8 $.

bayes.ipynb


import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import binom

k = np.arange(0,30,1)
p_1 = binom.pmf(k, 30, 0.3, loc=0)
p_2 = binom.pmf(k, 30, 0.5, loc=0)
p_3 = binom.pmf(k, 30, 0.8, loc=0)

plt.plot(k,p_1,label='p_1=0.3')
plt.plot(k,p_2, color="orange",label='p_2=0.5')
plt.plot(k,p_3, color="green",label='p_3=0.8')
plt.legend()
plt.show()

002.png

Dans le cas de 30 essais, il a été constaté que le nombre le plus élevé d'observations était environ 9 fois avec une probabilité de 0,3, environ 15 fois avec une probabilité de 0,5 et environ 25 fois avec une probabilité de 0,8. La raison du pic le plus bas avec une probabilité de 0,5 est la variance la plus élevée.

Comprendre la fonction de vraisemblance

Considérons la distribution binomiale qui apparaît plus tôt. Dans l'exemple précédent, nous avons considéré la population à essayer 30 fois comme une constante et la probabilité comme une variable. En inversant cette idée, une fonction dont la population est le nombre d'essais est appelée une variable et dont la probabilité est une constante est appelée une fonction de vraisemblance **. La valeur obtenue par cette fonction de vraisemblance est appelée vraisemblance.


f(x;N,θ) = nCx×θ^x(1-θ)^{n-x}, x=0,1

Tracons-le de la même manière qu'avant. Calculez comme $ θ = 30,50,80 $ et la probabilité est de 0,3.

bayes.ipynb


import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import binom

k = np.arange(0,50,1)
p_1 = binom.pmf(k, 30, 0.3, loc=0)
p_2 = binom.pmf(k, 50, 0.3, loc=0)
p_3 = binom.pmf(k, 80, 0.3, loc=0)

plt.plot(k,p_1,label='θ=30')
plt.plot(k,p_2, color="orange",label='θ=50')
plt.plot(k,p_3, color="green",label='θ=80')
plt.legend()
plt.show()

003.png

Il a été constaté qu'à mesure que le nombre d'essais augmentait, la variance augmentait et la valeur attendue (pic) diminuait.

en conclusion

Cette fois, il était facile de comprendre le théorème binomial car il s'inscrit dans le cadre de l'apprentissage des mathématiques au secondaire. Cependant, il était rafraîchissant de constater que la signification de la fonction de vraisemblance et l'idée de probabilité changeaient légèrement en fonction de ce qui était placé comme variable. De plus, même si j'ai compris que la mise à jour bayésienne est un concept qui peut être appliqué à l'apprentissage automatique, j'ai trouvé qu'il était très nécessaire d'être très prudent pour déterminer moi-même la probabilité d'avance. Il peut y avoir des pièges si nous ne travaillons pas du point de vue de la validité de la prémisse.

URL de référence https://lib-arts.hatenablog.com/entry/implement_bayes1

Recommended Posts

Mise à jour bayésienne, essayé de comprendre la distribution binomiale / fonction de vraisemblance
(Apprentissage automatique) J'ai essayé de comprendre attentivement la régression linéaire bayésienne avec l'implémentation
J'ai essayé d'informer Slack de la mise à jour de Redmine
Déplacez votre main pour comprendre la distribution du chi carré