Ich habe darüber gesprochen, Bayes in der Atmosphäre zu aktualisieren, also wollte ich richtig lernen und es zusammenfassen. Dies ist der n-te Abkochartikel.
Die Bayes'sche Schätzung wird grob zusammengefasst, und die Verteilung der Parameter wird unter Verwendung des Bayes'schen Theorems geschätzt, anstatt die Parameter der Wahrscheinlichkeit (= Modell) mit MLE punktuell zu schätzen. Der Satz von Bayes wird durch die folgende Gleichung ausgedrückt.
p(w|x) = \frac{p(x|w)p(w)}{p(x)}
Das Bayes'sche Update ist ein Mechanismus, der den Bayes'schen Satz verwendet, um die posteriore Verteilung sequentiell zu aktualisieren. Die folgende Entwicklung basiert auf hier. Zunächst transformieren wir den Bayes'schen Satz.
\begin{align}
&p(A, B, C) = p(A|B, C)p(B, C) = p(B, C|A)p(A) \\
\Rightarrow& p(A|B, C) = \frac{p(B, C|A)p(A)}{p(B, C)}
\end{align}
Bis zu diesem Punkt gilt es in der Regel.
Als nächstes nehmen wir an, dass B und C bei A unabhängig und bedingt unabhängig sind. Dann erhalten wir die folgende Gleichung:
\begin{align}
p(A|B, C) &= \frac{p(B, C|A)p(A)}{p(B, C)} \\
&= \frac{p(B|A)p(C|A)p(A)}{p(B)p(C)} \\
&= \frac{p(C|A)}{p(C)}\frac{p(B|A)p(A)}{p(B)} \\
&= \frac{p(C|A)}{p(C)}p(A|B)
\end{align}
Setzen wir nun $ w $ in A, die ersten beobachteten Daten $ x_1 $ in B und die zweiten beobachteten Daten $ x_2 $ in C. "$ X_1 $ und $ x_2 $ sind unabhängig und bedingte Unabhängigkeit bei $ w $" bedeutet, dass die beobachteten Daten unabhängig von der Verteilung generiert werden und die Wahrscheinlichkeit (= Modell) ebenfalls $ x_1 beträgt. Dies bedeutet, dass $ und $ x_2 $ unabhängig voneinander modelliert werden. Beachten Sie, dass diese Eigenschaft nicht für Daten gilt, die zeitreihenkorreliert sind. Zu diesem Zeitpunkt gilt die folgende Gleichung.
\begin{align}
p(w|x_1, x_2) = \frac{p(x_2|w)}{p(x_2)}p(w|x_1)
\end{align}
Die hintere Verteilung von $ w $ unter Berücksichtigung der Daten $ x_1 $ und $ x_2 $ ist der Bayes'sche Satz von $ x_2 $ und $ w $ mit $ p (w | x_1) $ als vorheriger Verteilung. Ich werde! Geben Sie unter Verwendung dieser Beziehung eine geeignete vorherige Verteilung an → Finden Sie die hintere Verteilung, wenn Daten angegeben werden → Ersetzen Sie die hintere Verteilung durch die vorherige Verteilung → Finden Sie die hintere Verteilung, wenn Daten angegeben werden → ... und so weiter. Sie können die Distribution aktualisieren. So funktioniert das Bayes-Update.
Berechnen wir das Bayes'sche Update unter hier.
Betrachten Sie eine verzerrte Münze. Schätzen wir die Wahrscheinlichkeit, dass diese Münze auf dem Tisch erscheint. Angenommen, die Münzrolle wird bei jedem Versuch unabhängig erhalten. Betrachten Sie zunächst die Wahrscheinlichkeit oder das Modell des Münzwurfs. Da Vorder- und Rückseite der Münze binäre Variablen sind, folgen sie der Bernoulli-Verteilung. Daher ist die Wahrscheinlichkeit eine Bernoulli-Verteilung. Entsprechen Sie der Vorderseite $ x = 1 $ und der Rückseite $ x = 0 $. $ w $ ist eine reelle Zahl zwischen 0 und 1 und entspricht der Wahrscheinlichkeit, dass die Tabelle angezeigt wird. Daher ist die Verteilung von $ w $, die durch das Bayes'sche Update selbst erhalten wird, die Verteilung der Wahrscheinlichkeit, dass die Tabelle erscheint.
Die Bernoulli-Distribution kann wie folgt geschrieben werden:
\begin{align}
p(x|w) = w^x(1-w)^{1-x}
\end{align}
Nehmen wir an, dass die vorherige Verteilung als informationslose vorherige Verteilung $ p (w) = 1 $ ist. $ p (x) $ ist unbekannt, aber wenn Sie sich auf $ w $ konzentrieren, handelt es sich um eine standardisierte Konstante, sodass sie automatisch unter der Bedingung berechnet werden kann, dass die Integration von $ p (w | x) $ 1 ist.
Jetzt schütteln wir die Münze.
\begin{align}
p(w|x_1=1) \propto p(x_1=1|w)p(w) = w
\end{align}
Es wurde bereits standardisiert, da es bei der Integration von 0 auf 1 zu 1 wird.
\begin{align}
p(w|x_1=1) = w
\end{align}
Dies ist die zweite vorherige Verteilung $ p (w) = p (w | x_1 = 1) = w $.
\begin{align}
p(w|x_1=1, x_2=1) \propto p(x_2=1|w)p(w) = w^2
\end{align}
Wenn es integriert ist, wird es 1/3, und wenn es standardisiert ist, wird es wie folgt.
\begin{align}
p(w|x_1=1, x_2=1) = 3w^2
\end{align}
Dies ergibt die dritte vorherige Verteilung $ p (w) = p (w | x_1 = 1, x_2 = 1) = 3w ^ 2 $.
\begin{align}
p(w|x_1=1, x_2=1, x_3=0) \propto p(x_3=0|w)p(w) = 3(1-w)w^2
\end{align}
Wenn es integriert ist, wird es 1/4, und wenn es standardisiert ist, wird es wie folgt.
\begin{align}
p(w|x_1=1, x_2=1, x_3=0) = 12(1-w)w^2
\end{align}
Auf diese Weise können Sie die Verteilung der Wahrscheinlichkeit ermitteln, mit der Münzen auf den Kopf gestellt werden.
Lassen Sie uns das oben gezeigte Beispiel in Python implementieren. Für die Implementierung habe ich auf [hier] verwiesen (https://rmizutaa.hatenablog.com/entry/2019/02/15/200700%EF%BC%89).
import sympy
import numpy as np
import matplotlib.pyplot as plt
np.random.rand()
#Vordere und hintere Reihe von Münzen
xs = [1, 1, 0] #Vorne, vorne, hinten
#Die vorherige Verteilung ist eine informationslose vorherige Verteilung
prior_prob = 1
#Symbol zum Integrieren
w = sympy.Symbol('w')
#Initialisieren
#Erforderlich, wenn wiederholt mit einem Jupyter-Notebook ausgeführt wird
posterior_prob = None
#Sequentielle Berechnung der posterioren Verteilung
for x in xs:
#Berechnung der posterioren Verteilung (nicht standardisiert)
if x==1:
posterior_prob = w*prior_prob
else:
posterior_prob = (1-w)*prior_prob
#Standardisierung
Z = sympy.integrate(posterior_prob, (w, 0, 1))
posterior_prob = posterior_prob/Z
#Ersatz der vorherigen Verteilung
prior_prob = posterior_prob
plt.figure(figsize=(5, 4))
X = np.linspace(0, 1, 100)
plt.plot(X, [posterior_prob.subs(w, i) for i in X])
plt.xlabel("w")
plt.show()
Versuchen wir zu schätzen, wann etwas mehr Daten vorhanden sind. Erhöhen Sie mit einer Münze mit einer Wahrscheinlichkeit von 0,35 die Anzahl der Versuche auf 30 und schätzen Sie. Wenn die Daten zunehmen, wird die Schätzung genauer und die Verteilung wird schärfer.
import sympy
import numpy as np
import matplotlib.pyplot as plt
np.random.rand(0)
def bernoulli_sampler(w, n):
"""w ist die Wahrscheinlichkeit, dass 1 ausgegeben wird, und n ist die Anzahl der zu erzeugenden Daten."""
xs = np.random.rand(n)
xs = xs<w
return xs.astype("int")
#Vordere und hintere Reihe von Münzen
xs = bernoulli_sampler(0.35, 30)
#Die vorherige Verteilung ist eine informationslose vorherige Verteilung
prior_prob = 1
#Symbol zum Integrieren
w = sympy.Symbol('w')
#Initialisieren
#Erforderlich, wenn wiederholt mit einem Jupyter-Notebook ausgeführt wird
posterior_prob = None
#Sequentielle Berechnung der posterioren Verteilung
for x in xs:
#Berechnung der posterioren Verteilung (nicht standardisiert)
if x==1:
posterior_prob = w*prior_prob
else:
posterior_prob = (1-w)*prior_prob
#Standardisierung
Z = sympy.integrate(posterior_prob, (w, 0, 1))
posterior_prob = posterior_prob/Z
#Ersatz der vorherigen Verteilung
prior_prob = posterior_prob
plt.figure(figsize=(5, 4))
X = np.linspace(0, 1, 100)
plt.plot(X, [posterior_prob.subs(w, i) for i in X])
plt.xlabel("w")
plt.show()
Der Punkt ist, dass B und C unabhängig und bedingte Unabhängigkeit sind, wenn A gegeben ist.