[PYTHON] Bayesianisches Update, versucht, die Binomialverteilung / Wahrscheinlichkeitsfunktion zu verstehen

Einführung

Beim letzten Mal habe ich etwas über die Bayes'sche Schätzung gelernt, die meiner Meinung nach beim Erlernen von maschinellem Lernen unvermeidlich ist. Dieses Mal haben wir anschließend Bayes'sche Aktualisierungen, Binomialverteilungen und Wahrscheinlichkeitsfunktionen zusammengefasst.

Ich habe mich sehr bemüht, den Satz von Bayes zu verstehen (glaube ich), der durch maschinelles Lernen nicht vermieden werden kann https://qiita.com/Fumio-eisan/items/f33533c1e5bc8d6c93db

Maschinelles Lernen und seine Theorie (Vorlesungsmaterial zum Frühjahrstrainingslager der Informationsolympiade 2015) https://www.slideshare.net/irrrrr/2015-46395273

Bayesianische Updates verstehen

Es gibt ein Bayes'sches Update als Idee, die den Bayes'schen Satz anwendet. Dies bezieht sich auf die Idee, dass die Vorwahrscheinlichkeit die aktualisierte Nachwahrscheinlichkeit ist. Nehmen wir als Beispiel die Idee eines Junk-Mail-Filters und führen eine konkrete Berechnung durch.

Junk-Mail-Filter

Überlegen Sie, ob eine E-Mail $ A $ eine Junk-E-Mail $ A_1 $ oder eine Nicht-Junk-E-Mail $ A_2 $ ist. Die E-Mail enthielt Wörter wie "absoluter Sieg" und "völlig kostenlos", die leicht in Junk-E-Mails eingegeben werden können. Die Wahrscheinlichkeit, dass diese Wörter in Junk- und Nicht-Junk-Mails enthalten sind, stammt aus der Datenbank, wie in der folgenden Tabelle gezeigt.

Spam 非Spam
Absoluter Sieg 0.11 0.01
Komplett frei 0.12 0.02

Nehmen wir nun an, dass das Ereignis, das das Wort "absoluter Sieg" enthält, $ B_1 $ ist und das Ereignis, das es nicht enthält, $ B_2 $ ist. Dann

P(B_1|A_1) = P(Absoluter Sieg|Spam) = 0.11\\
P(B_1|A_2) = P(Absoluter Sieg|Nicht-Junk-Mail) = 0.01

Es wird sein. Selbst in Nicht-Junk-Mails wird etwa 1 von 100 als absoluter Sieg geschrieben. Die ** Datenbank zeigt nun, dass das Verhältnis von Junk-Mail zu aller Mail $ P (A_1) = 0,6 $ beträgt. Zu diesem Zeitpunkt wird die "Wahrscheinlichkeit, dass eine E-Mail mit dem Wort" absoluter Sieg "eine Junk-E-Mail ist" aus dem Satz von Bayes berechnet.

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

Es wird sein.

Daher wurde festgestellt, dass etwa 94% der E-Mails mit "absolutem Sieg" unerwünschte E-Mails und etwa 6% Nicht-Junk-E-Mails sind. Aus dieser Berechnung wurde die Annahme, dass 60% Junk-Mail waren, durch die Annahme ersetzt, dass 94% Junk-Mail waren. Dies ist die Idee, dass ** die hintere Wahrscheinlichkeit die Vorwahrscheinlichkeit ist. ** Basierend auf dieser Idee wird das Prinzip des Bayes'schen Updates auf "völlig kostenlos" angewendet.

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

ist geworden. Mit anderen Worten, es wurde festgestellt, dass etwa 99% der E-Mails, die "völlig kostenlos" enthalten, Junk-E-Mails sind. Diese Denkweise wird als Bayes'sches Update bezeichnet.

Verstehen Sie die Bernoulli-Verteilung und den Binomialsatz

Die Bernoulli-Verteilung ist eine Verteilung, die die Wahrscheinlichkeitsverteilung zeigt.


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

$ x $ ist eine stochastische Variable mit 1 oder 0. Normalerweise werden die Vorder- und Rückseite der Münze, das Vorhandensein oder Nichtvorhandensein einer Krankheit usw. durch diese 1,0 dargestellt. Außerdem bezieht sich $ θ $ auf die Wahrscheinlichkeit, dass das Ereignis eintritt. Dieses $ θ $, auch Population genannt, ist ein numerischer Index, der die Wahrscheinlichkeitsverteilung charakterisiert.

Binomialverteilung verstehen

Die zuvor erwähnte Bernoulli-Verteilung stellt übrigens einen Versuch dar. Betrachten Sie als nächstes den Fall, in dem dieser Versuch N-mal durchgeführt wird. Nehmen Sie als Beispiel Basketball. Es gibt Spieler, die mit $ \ frac {1} {3} $ Freiwürfe machen können. Betrachten Sie die Wahrscheinlichkeit, dreimal zu werfen und zweimal erfolgreich zu sein. Zum Beispiel ist die Wahrscheinlichkeit, dass Erfolg ⇒ Erfolg ⇒ Fehler beobachtet wird


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

Es wird sein. Es gibt jedoch drei Erfolgsmuster: ⇒ Misserfolg ⇒ Erfolg, Misserfolg ⇒ Erfolg ⇒ Erfolg. Daher kann es als \ frac {2} {9} berechnet werden. Um dies zu verallgemeinern


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

Mal sehen, wie diese Wahrscheinlichkeitsverteilung gezeichnet wird, wenn $ 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

Bei 30 Versuchen wurde festgestellt, dass die höchste Anzahl von Beobachtungen etwa 9-mal mit einer Wahrscheinlichkeit von 0,3, etwa 15-mal mit einer Wahrscheinlichkeit von 0,5 und etwa 25-mal mit einer Wahrscheinlichkeit von 0,8 betrug. Der Grund für den niedrigsten Peak mit einer Wahrscheinlichkeit von 0,5 ist die höchste Varianz.

Verstehe die Wahrscheinlichkeitsfunktion

Betrachten wir die Binomialverteilung, die früher erscheint. Im vorherigen Beispiel haben wir die Population als 30-mal als Konstante und die Wahrscheinlichkeit als Variable betrachtet. Im Gegensatz zu dieser Idee wird eine Funktion, deren Population die Anzahl der Versuche ist, als Variable und deren Wahrscheinlichkeit als Konstante als Wahrscheinlichkeitsfunktion ** bezeichnet. Der durch diese Wahrscheinlichkeitsfunktion erhaltene Wert wird Wahrscheinlichkeit genannt.


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

Lassen Sie es uns auf die gleiche Weise wie zuvor zeichnen. Berechnen Sie als $ θ = 30,50,80 $ und die Wahrscheinlichkeit beträgt 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

Es wurde festgestellt, dass mit zunehmender Anzahl von Versuchen die Varianz zunahm und der erwartete Wert (Peak) abnahm.

abschließend

Dieses Mal war es leicht, den Binomialsatz zu verstehen, da er im Rahmen des Lernens in der Mathematik der High School liegt. Es war jedoch erfrischend, dass sich die Bedeutung der Wahrscheinlichkeitsfunktion und die Idee der Wahrscheinlichkeit geringfügig änderten, je nachdem, was als Variable platziert wurde. Obwohl ich verstanden habe, dass das Bayes'sche Update ein Konzept ist, das beim maschinellen Lernen angewendet werden kann, stellte ich fest, dass es sehr wichtig ist, die Vorauswahrscheinlichkeit selbst sehr sorgfältig zu bestimmen. Es kann Fallstricke geben, wenn wir nicht aus der Perspektive arbeiten, ob die Prämisse wirklich gültig ist.

Referenz-URL https://lib-arts.hatenablog.com/entry/implement_bayes1

Recommended Posts

Bayesianisches Update, versucht, die Binomialverteilung / Wahrscheinlichkeitsfunktion zu verstehen
(Maschinelles Lernen) Ich habe versucht, die Bayes'sche lineare Regression bei der Implementierung sorgfältig zu verstehen
Ich habe versucht, Slack über das Update von Redmine zu informieren
Bewegen Sie Ihre Hand, um die Chi-Quadrat-Verteilung zu verstehen