Einführung in die Bayes'sche Modellierung mit pymc3 Bayesianische Modellierung in Python Japanische Übersetzung (Kapitel 0-2)

Es kann Fehler geben. Wenn Sie also einen finden, weisen Sie darauf hin.

Dieses Mal möchte ich die Idee von Bayes vorstellen, die beim maschinellen Lernen unvermeidlich ist. Die Erklärung wird anhand des folgenden Artikels beschrieben.

Referenz: https://github.com/markdregan/Bayesian-Modelling-in-Python

In diesem Artikel gewonnene Kenntnisse

1: Bayesianische Denkweise 2: Erleben Sie die Bayes'sche Theorie mit einem Ipython-Notizbuch 3: Bewertungsmethode des unter Verwendung der Bayes'schen Theorie optimierten Modells

Warum brauchen Sie Bayes überhaupt?

Der Zweck des maschinellen Lernens besteht darin, Muster aus Daten zu lernen und mit unbekannten Daten umzugehen, aber perfekte Daten sind es

"Vollständig, konsistent, korrekt und beschreibend"

Solche Fälle sind äußerst selten, daher ist es naheliegend, Wissen im Voraus zu vermitteln, damit es nicht leicht von seltsamen Daten beeinflusst wird.

Ich denke, dass Menschen auch Vorhersagen treffen und handeln werden, wenn sie etwas tun, um ihr Feedback zu verbessern.

Wenn Sie jedoch im Voraus einen Fehler machen, werden Sie schlechte Ergebnisse erzielen. Seien Sie also vorsichtig.

Zum Beispiel möchte ich ein Fleischrestaurant für Frauen finden (basierend auf Dogmatismus und Vorurteilen)

150912426027-thumb-815xauto-19288.jpg

  • Frauen Anfang zwanzig: Bringen Sie sie in ein unerfahrenes Modegeschäft oder in ein Geschäft, das Dinge anbietet, die Sie normalerweise nicht erleben würden.
  • Frauen Ende 20: Modegeschäfte sind bis zu einem gewissen Grad erschöpft, so dass es schwierig ist, einfach nach Modegeschäften zu suchen. Es wäre schön, einen Versteckladen oder einen Lieblingsladen zu haben

Auf diese Weise unterscheidet sich die vorherige Verteilung, selbst wenn Sie zu einer Frau gehen, je nach Alter. Wenn Sie also einen Fehler in dieser vorherigen Verteilung machen, ist dies lächerlich.

Lernprogramm

Anstatt den mathematischen Formeln zu folgen, war die englische Version dieses Mal ein Tutorial, um Bayes 'Ideen anhand der tatsächlichen Daten zu verstehen. Daher werde ich sie im Rahmen meines Studiums ins Japanische übersetzen und ein Memorandum of Practice hinterlassen.

Da Kapitel 3 und höher erweiterte Inhalte sind, können Sie, wenn Sie es auf Kapitel 2 beschränken, alles von der Modellerstellung bis zur Auswertung tun.

Wenn Sie an der Hauptgeschichte interessiert sind, sehen Sie bitte unten

https://github.com/markdregan/Bayesian-Modelling-in-Python

Datenerfassung: Abschnitt 0. Einführung.ipynb

In diesem Tutorial erhalten Sie Ihre eigenen Google Hangout-Daten. Das Erfassen der Daten dauert einige Zeit. Es wird daher empfohlen, die Daten bei anderen Arbeiten zu erfassen.

Wenn Sie keine Python-Umgebung haben, können Sie die erforderlichen Bibliotheken mithilfe von "require.txt" herunterladen.

numpy==1.9.2
ipython==4.0.0
notebook==4.0.4
jinja2==2.8
pyzmq==14.7.0
tornado==4.1
matplotlib
simplejson
pandas
seaborn
datetime
scipy
patsy
statsmodels
git+https://github.com/pymc-devs/pymc3

Ich habe es in einer OSX-Umgebung versucht, aber ich habe den folgenden Fehler erhalten.

RuntimeError**: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends.

Die entsprechende Methode ist wie folgt.

http://stackoverflow.com/questions/21784641/installation-issue-with-matplotlib-python

Die Verschachtelung der erhaltenen JSON-Datei ist erstaunlich. Hier finden Sie einige kurze Informationen zu den Datenfeldern.

Field Description Example
conversation_id Conversation id representing the chat thread Ugw5Xrm3ZO5mzAfKB7V4AaABAQ
participants List of participants in the chat thread [Mark, Peter, John]
event_id Id representing an event such as chat message or video hangout 7-H0Z7-FkyB7-H0au2avdw
timestamp Timestamp 2014-08-15 01:54:12
message Content of the message sent Went to the local wedding photographer today
sender Sender of the message Mark Regan

Das Tutorial analysiert die Daten von json und übersetzt sie für jede Nachricht in das Datenframework von Pandas.

Bitte beachten Sie, dass der folgende Code die Daten auf den Autor und Alison Darcy beschränkt, sodass Sie die Daten nur erhalten, wenn Sie hier einen Kommentar abgeben.

messages = messages[(messages['sender'] == 'Mark Regan') & (messages['participants_str'] != 'Alison Darcy, Mark Regan')]

Das Problem, das Sie lösen möchten

1: Die Reaktionszeit beeinflusst, mit wem Sie sprechen 2: Welche Faktoren beeinflussen die Reaktionszeit? 3: Was ist der schlimmste Tag?

In meinem Fall verwende ich Google Hangout nicht sehr oft, daher habe ich das folgende Ergebnis erhalten.

Screen Shot 2015-11-27 at 10.59.17.png

Dieses Mal habe ich beschlossen, die Tutorial-Daten zu verwenden, da sie nicht für das Problem verwendet werden können, das ich lösen möchte.

Vorhersage von Modellparametern: Abschnitt 1: Schätzen von Modellparametern

Hier ist der Hauptteil des Baysian-Tutorials. Es ist interessant, dass die Ergebnisse anhand von Diagrammen leicht zu verstehen sind.

Zunächst werde ich die Idee von Basian beschreiben. Als Beispiel:

Der Junge zählt jeden Tag die Anzahl der Autos, die vor seinem Haus vorbeifahren, und schreibt sie in sein Notizbuch. Sein Notizbuch beschreibt die Anzahl der vorbeifahrenden Autos.

Nach Ansicht von Bayes treten die beobachteten Daten zufällig auf, aber ich denke, dass sie mit einer gewissen Wahrscheinlichkeitsverteilung auftreten.

In diskreten Fällen wie dem Beispiel sollten Sie die Poisson-Verteilung verwenden.

Das Beispiel zeigt Fälle mit einem Durchschnitt von 5,20,40.

Screen Shot 2015-11-27 at 11.27.26.png

Grün ist eine Wahrscheinlichkeitsverteilung mit einem Durchschnitt von 5, Orange ist eine Wahrscheinlichkeitsverteilung mit einem Durchschnitt von 20 und Rosa ist eine Wahrscheinlichkeitsverteilung mit einem Durchschnitt von 40.

Indem wir die Zeit der vorherigen Antwort auf den Rahmen der Poisson-Verteilung anwenden und die Parameter mit Bayes vorhersagen, versuchen wir, die diesmal auftretende Frage zu lösen.

Screen Shot 2015-11-27 at 11.30.38.png

Der Durchschnittswert der Poisson-Verteilung wird durch die wahrscheinlichste Schätzung (logarithmisch) geschätzt. Die Wahrscheinlichkeit, diese Schätzung vorzunehmen, und der Durchschnittswert der zu schätzenden Poisson-Verteilung können nachstehend bestätigt werden.

Screen Shot 2015-11-27 at 12.52.24.png

Es kann bestätigt werden, dass der Durchschnittswert nahe bei 20 liegt und die Wahrscheinlichkeit am höchsten ist. Die Poisson-Verteilung der Antwortzeit ist wie folgt und wird meistens in 18 Sekunden zurückgegeben.

Screen Shot 2015-11-27 at 12.55.32.png

Die Information, von der im Voraus bekannt ist, dass sie Bayes in diesem Beispiel anwendet, ist, dass die Daten in den Bereich von 10 bis 60 fallen. Das Subjekt besteht darin, die Poisson-Verteilung dafür zu definieren und sie durch die wahrscheinlichste Schätzung zu erhalten.

Screen Shot 2015-11-27 at 12.57.43.png

MCMC

Dies ist eine Technik, die den Durchschnittswert dieser Zeit in Daten umwandelt und wiederholt, bis der Wert die Wahrscheinlichkeit maximiert. Der gute Punkt dieser Methode ist, dass es auch ohne Daten möglich ist, die zu schätzenden Parameter aus der vorherigen Verteilung zu bestimmen und die Werte zufällig zu schätzen und anzuhalten, wenn die Wahrscheinlichkeit maximiert ist.

Es gibt jedoch Nachteile, dass es schwierig ist, zu konvergieren, wenn viele Parameter geschätzt werden müssen, und es ist schwierig, den Effekt auszuüben, wenn die vorherige Verteilung nicht angemessen ist.

Screen Shot 2015-11-27 at 13.13.56.png

Wenn Sie es mit ipython notebook ausführen, können Sie sehen, wie Parameter beim Generieren von Daten geschätzt werden. Probieren Sie es also aus und sehen Sie, wie es funktioniert.

Dies ist das von MCMC tatsächlich geschätzte Ergebnis. Die Daten traten zwischen 17 und 19 auf, und der Durchschnittswert lag bei etwas über 18, sodass er so genau ist wie eine einfache Bayes'sche Schätzung.

Screen Shot 2015-11-27 at 13.20.00.png

Die Flugbahn der durch MCMC maximierten Wahrscheinlichkeit kann unten bestätigt werden. Da der geschätzte Durchschnittswert nicht immer wie erwartet konvergiert, können Sie anhand dieser Ablaufverfolgung überprüfen, um welche Art von Übergang es sich handelt.

Screen Shot 2015-11-27 at 13.39.47.png

Es ist auch notwendig, den Korrelationskoeffizienten zwischen der Wertausgabe in der Stichprobe und der Wertausgabe bisher zu verstehen.

Modellprüfung: Abschnitt 2: Modellprüfung

Es sind zwei Punkte zu überprüfen

1: Stellt das Modell Daten dar? 2: Modellvergleich

Lassen Sie uns die Daten und die vorhergesagte Verteilung überprüfen. Der häufigste Wert der Verteilung und die häufigste Antwortzeit stimmen nicht überein. Es stellt sich heraus, dass dieses Modell in diesem Fall nicht geeignet ist.

Screen Shot 2015-11-27 at 14.23.26.png

Wenn wir daher eine negative Binomialverteilung verwenden, die der Poisson-Verteilung relativ ähnlich ist, können wir nicht nur den Mittelwert, sondern auch die Varianz verarbeiten. Ersetzen wir sie also.

Die Verteilung ist ähnlich wie unten gezeigt.

Screen Shot 2015-11-27 at 14.18.08.png

Die negative Binomialverteilung schätzt die α- und μ-Parameter wie unten gezeigt.

Screen Shot 2015-11-27 at 14.25.39.png

Die vorhergesagten Werte sind wie folgt, α liegt im Wert von 1,4 bis 2,4 und die Ausdruckskraft der Verteilung wird durch die Rolle der Dispersion verbessert.

Screen Shot 2015-11-27 at 14.29.36.png

Unten sehen Sie ein Diagramm der Verteilung und Reaktionszeit, die unter Verwendung der zuvor geschätzten Parameter α und μ erstellt wurden. Die Verteilung ähnelt der Antwortzeitverteilung und ist charakteristischer.

Screen Shot 2015-11-27 at 14.34.35.png

Eine Kombination von Poisson- und negativen Binomialverteilungen wurde ebenfalls vorgeschlagen.

Screen Shot 2015-11-27 at 14.46.22.png

Es gibt an, dass es den Bayes'schen Faktor berechnet und anhand der folgenden Kriterien entscheidet, welches Modell verwendet werden soll.

Screen Shot 2015-11-27 at 14.48.19.png

Dieses Mal haben wir die Grundlagen bis Kapitel 2 erledigt, aber da Kapitel 3 eine erweiterte Version sein wird, fordern Sie bitte heraus.

https://github.com/markdregan/Bayesian-Modelling-in-Python/blob/master/Section%203.%20Hierarchical%20modelling.ipynb

Referenz

Pakutaso https://www.pakutaso.com/

Lernen Sie statistische Modellierung mit Stan (2): Was war MCMC überhaupt? http://tjo.hatenablog.com/entry/2014/02/08/173324

Wissen, um vorzutäuschen, Bayes'sche Schätzungen zu kennen http://www.anlyznews.com/2012/01/blog-post_31.html

Bayesian-Modelling-in-Python https://github.com/markdregan/Bayesian-Modelling-in-Python

Nächster Artikel

DRBD Cinder Volume Driver-Betrieb mit OpenStack LIBERTY von [tksarah] bestätigt (http://qiita.com "tksarah") !!

Recommended Posts

Einführung in die Bayes'sche Modellierung mit pymc3 Bayesianische Modellierung in Python Japanische Übersetzung (Kapitel 0-2)
[PyTorch] Einführung in die Klassifizierung japanischer Dokumente mit BERT
[Technisches Buch] Einführung in die Datenanalyse mit Python -1 Kapitel Einführung-
Einführung in discord.py (3) Verwenden von Stimme
Einführung in die Bayes'sche Optimierung
Einführung in Deep Learning zum ersten Mal (Chainer) Japanische Zeichenerkennung Kapitel 3 [Zeichenerkennung anhand eines Modells]
Einführung in die Bayes'sche statistische Modellierung mit Python ~ Versuch einer linearen Regression mit MCMC ~
[Einführung in Python3 Tag 13] Kapitel 7 Zeichenfolgen (7.1-7.1.1.1)
[Einführung in Python3 Tag 14] Kapitel 7 Zeichenfolgen (7.1.1.1 bis 7.1.1.4)
[Einführung in Python3 Tag 15] Kapitel 7 Zeichenfolgen (7.1.2-7.1.2.2)
[Einführung in Python3 Tag 21] Kapitel 10 System (10.1 bis 10.5)
Einführung in die diskrete Ereignissimulation mit Python # 1
[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.1-8.2.5)
[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.3-8.3.6.1)
[PyTorch] Einführung in die Dokumentklassifizierung mit BERT
[Einführung in Python3 Tag 19] Kapitel 8 Datenziele (8.4-8.5)
[Einführung in Python3 Tag 18] Kapitel 8 Datenziele (8.3.6.2 bis 8.3.6.3)
Erste Schritte: 30 Sekunden für die japanische Übersetzung von Keras
Einführung in die diskrete Ereignissimulation mit Python # 2
Biopython Tutorial und Kochbuch Japanische Übersetzung (Kapitel 1, 2)
Einführung in die Überprüfung der Wirksamkeit Kapitel 1 in Python geschrieben
Einführung in Tornado (3): Entwicklung mit Vorlagen [Übung]