"In Python erlebte Bayes-Inferenz"
Ich habe es einmal geschrieben, bin aber nicht daran gewöhnt, also habe ich diesen Artikel gelöscht. Deshalb habe ich es wieder geschrieben. .. Tohoho.
Frequenzismus ist eine klassische Statistik, die es schon lange gibt. Im Frequenzprinzip wird die Wahrscheinlichkeit als "Häufigkeit von Ereignissen in einem langen Zeitraum" angesehen.
Im Bayesianismus wird Wahrscheinlichkeit als der Grad des "Glaubens" oder "Vertrauens" angesehen, bei dem ein Ereignis eintritt. Wahrscheinlichkeit als Glauben zu betrachten, ist für den Menschen eine natürliche Idee.
Die Annahme, dass ein Ereignis eintritt, wird als $ P (A) $ ausgedrückt, die als Vorwahrscheinlichkeit bezeichnet wird, und die mit Beweisen $ X $ aktualisierte Annahme wird als $ P (A | X) $ ausgedrückt. Dies ist die Wahrscheinlichkeit von $ A $ bei gegebenem Beweis X. Dies wird als hintere Wahrscheinlichkeit bezeichnet.
Bayesianische Inferenzfunktionen geben Wahrscheinlichkeiten zurück, während frequenzbasierte Inferenzfunktionen numerische Werte zurückgeben, die Schätzungen darstellen. .. Dies ist wichtig und sollte beachtet werden.
Betrachten Sie beispielsweise ein Programmbeispiel Wenn Sie frequenzbasiert denken: "Dieses Programm hat alle Tests bestanden. (Information X) Gibt es ein Problem mit diesem Programm?", Würden Sie sagen: "Ja, das Programm enthält keine Fehler."
Wenn Sie im Bayesianismus daran denken, antworten Sie: "Ja, die Wahrscheinlichkeit, keine Fehler zu haben, beträgt 0,8. Nein, die Wahrscheinlichkeit, Fehler zu haben, beträgt 0,2." Im Bayesianismus können Sie immer Vorkenntnisse hinzufügen, dass ein Programm einen Fehler als Argument hat.
Wenn die Menge an Beweisen (Information X) zunimmt und eine unendliche Anzahl von (sehr großen) Beweisstücken gesammelt wird, führen Frequenzismus und Bayesismus zu ähnlichen Inferenzergebnissen.
Ein relativ einfacher Algorithmus wird zur Analyse und Vorhersage unter Verwendung von Big Data verwendet. Mit anderen Worten, die Schwierigkeit, Big Data zu analysieren, liegt nicht im Algorithmus. Die schwierigsten Probleme sind "mittlere Daten" und "kleine Daten". Hier wird der Bayesianismus lebendig.
Bayes-Theorem (Bayes-Gesetz)
P( A | X ) = \displaystyle \frac{ P(X | A) P(A) } {P(X) }
Die Bayes'sche Inferenz verbindet die Vorwahrscheinlichkeit $ P (A) $ nur mathematisch mit der Wahrscheinlichkeit $ P (A | X) $ nach der Aktualisierung.
Wenn $ Z $ ein diskreter Wert ist, ist die Wahrscheinlichkeitsverteilung eine Wahrscheinlichkeitsmassenverteilung. Dies ist die Wahrscheinlichkeit, dass $ Z $ $ k $ nimmt. Dies wird ausgedrückt als $ P (Z = k) $. Es gibt eine Poisson-Verteilung in der stochastischen Massenfunktion. Die stochastische Massenfunktion von $ Z $ folgt der Poisson-Verteilung und wird durch die folgende Gleichung ausgedrückt.
P(Z = k) =\frac{ \lambda^k e^{-\lambda} }{k!}, \; \; k=0,1,2, \dots
$ \ lambda $ ist ein Parameter, der die Form der Verteilung bestimmt, und im Fall der Poisson-Verteilung ist $ \ lambda $ eine positive reelle Zahl. Das Erhöhen von $ \ lambda $ erhöht die Wahrscheinlichkeit großer Werte, und das Verringern von $ \ lambda $ erhöht die Wahrscheinlichkeit kleiner Werte. $ \ Lambda $ ist also die Stärke der Poisson-Verteilung.
$ k $ ist eine nicht negative ganze Zahl. Beachten Sie, dass $ k $ eine Ganzzahl ist. Schreiben Sie, dass die stochastische Variable $ Z $ der Poisson-Verteilung wie folgt folgt.
Z\sim \text{Poi}(\lambda)
Eine bequeme Eigenschaft der Poisson-Verteilung ist, dass der erwartete Wert gleich dem Verteilungsparameter ist.
E\large[ \;Z\; | \; \lambda \;\large] = \lambda
Dies ist eine Darstellung der stochastischen Massenfunktion, bei der $ \ lambda $ geändert wurde.
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import scipy.stats as stats
import numpy as np
a = np.arange(25)
#Poisson-Verteilungsfunktion von Scipy
poi = stats.poisson
lambda_ = [1.5, 4.25,8.50]
colours = ["#348ABD", "#A60628","#5AFF19"]
plt.bar(a, poi.pmf(a, lambda_[0]), color=colours[0],
label="$\lambda = %.1f$" % lambda_[0], alpha=0.60,
edgecolor=colours[0], lw="3")
plt.bar(a, poi.pmf(a, lambda_[1]), color=colours[1],
label="$\lambda = %.1f$" % lambda_[1], alpha=0.60,
edgecolor=colours[1], lw="3")
plt.bar(a, poi.pmf(a, lambda_[2]), color=colours[2],
label="$\lambda = %.1f$" % lambda_[2], alpha=0.60,
edgecolor=colours[1], lw="3")
plt.xticks(a + 0.4, a)
plt.legend()
plt.ylabel("probability of $k$")
plt.xlabel("$k$")
plt.title("Probability mass function of a Poisson random variable;\
differing \$\lambda$ values");
Es gab zwei Bücher, $ \ lambda = 1,5,4,25 $, also fügte ich weitere 8,5 hinzu und berechnete drei.
Das Erhöhen von $ \ lambda $ erhöht die Wahrscheinlichkeit großer Werte, und das Verringern von $ \ lambda $ erhöht die Wahrscheinlichkeit kleiner Werte, was in der Grafik als Ergebnis dargestellt wird.
Es wird durch eine Wahrscheinlichkeitsdichteverteilungsfunktion dargestellt, nicht durch eine kontinuierliche Wahrscheinlichkeitsvariable oder eine Wahrscheinlichkeitsmassenvariable. Die Wahrscheinlichkeitsdichtefunktion hat eine Exponentialverteilung.
f_Z(z | \lambda) = \lambda e^{-\lambda z }, \;\; z\ge 0
Exponentialverteilungswahrscheinlichkeitsvariablen nehmen nicht negative Werte an. Da es sich um einen kontinuierlichen Wert handelt, eignet er sich für Daten, die positive reelle Werte wie Zeit und Temperatur (Kelvin) annehmen. Die Wahrscheinlichkeitsvariable $ Z $ folgt einer Exponentialverteilung, wenn die Dichteverteilungsfunktion exponentiell ist. Mit anderen Worten
Z \sim \text{Exp}(\lambda)
Der erwartete Wert der Exponentialverteilung ist die Umkehrung des Parameters $ \ lambda $.
E[\; Z \;|\; \lambda \;] = \frac{1}{\lambda}
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import scipy.stats as stats
import numpy as np
a = np.linspace(0, 10, 100)
expo = stats.expon
lambda_ = [0.5, 1, 5]
colours = ["#348ABD", "#A60628","#5AFF19"]
for l, c in zip(lambda_, colours):
plt.plot(a, expo.pdf(a, scale=1./l), lw=3,
color=c, label="$\lambda =!
%.1f$" % l)
plt.fill_between(a, expo.pdf(a, scale=1./l), color=c, alpha=.33)
plt.legend()
plt.ylabel("PDF at $z$")
plt.xlabel("$z$")
plt.ylim(0,1.2)
plt.title("Probability density function of an Exponential random variable;\
differing $\lambda$");
Sie können $ \ lambda $ nicht bekommen. Wir wissen nur $ Z $. Außerdem haben $ \ lambda $ und $ Z $ keine Eins-zu-Eins-Beziehung.
Was ist der Wert von $ \ lambda $, mit dem sich die Bayes'sche Inferenz befasst? Ist der Glaube von. Das Wichtigste ist also nicht, den genauen Wert von $ \ lambda $ zu finden, sondern über die Wahrscheinlichkeitsverteilung für $ \ lambda $ nachzudenken, die besagt, dass $ \ lambda $ wahrscheinlich dieser Wert ist.
Wenn Sie denken, dass $ \ lambda $ eine Konstante ist, also keine stochastische Variable, und wie Sie dem Wert einer nicht-probabilistischen Konstante, die überhaupt nicht zufällig ist, eine Wahrscheinlichkeit geben können, bedeutet dies, dass Sie bereits vom Frequenzismus befallen sind. Ist. Der Bayesianismus betrachtet Wahrscheinlichkeiten als einen Glauben, so dass Sie tatsächlich alles Wahrscheinlichkeiten zuweisen können.
Mit anderen Worten
Das ist was es bedeutet.
Nächster Artikel "Konzept des Bayes'schen Denkens (3) ... Tatsächliche Berechnung durch pymc3"
Recommended Posts