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
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
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)
- 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.
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
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')]
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Es ist auch notwendig, den Korrelationskoeffizienten zwischen der Wertausgabe in der Stichprobe und der Wertausgabe bisher zu verstehen.
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.
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.
Die negative Binomialverteilung schätzt die α- und μ-Parameter wie unten gezeigt.
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.
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.
Eine Kombination von Poisson- und negativen Binomialverteilungen wurde ebenfalls vorgeschlagen.
Es gibt an, dass es den Bayes'schen Faktor berechnet und anhand der folgenden Kriterien entscheidet, welches Modell verwendet werden soll.
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
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
DRBD Cinder Volume Driver-Betrieb mit OpenStack LIBERTY von [tksarah] bestätigt (http://qiita.com "tksarah") !!
Recommended Posts