[PYTHON] Anfänger des maschinellen Lernens versuchen, Naive Bayes (1) - Theorie zu erreichen

Diese Seite

Da ich ein Anfänger im maschinellen Lernen und ein Anfänger in Python bin, denke ich, dass es so sein wird, als würde ich die Seite lesen, auf die ich mich im Grunde bezogen habe.

Was ist bedingte Wahrscheinlichkeit (Bayes-Theorem)? ??

Es geht ein wenig um Mathematik. Haben Sie jemals das Wort "bedingte Wahrscheinlichkeit" gehört? Ich habe im Unterricht schon ein wenig davon gehört, konnte mich aber kaum daran erinnern.

P(B|A) = \frac{P(A \cap B)}{P(A)} = \frac{P(B)P(A|B)}{P(A)}

"P (B | A)" bezieht sich auf die Wahrscheinlichkeit, dass Ereignis B auftritt, wenn Ereignis A auftritt.

Ein berühmtes Thema ist die Geschichte der Kinder.

Ein Paar hat zwei Kinder. Es stellt sich heraus, dass mindestens einer der beiden ein Junge ist. Finden Sie zu diesem Zeitpunkt die Wahrscheinlichkeit, dass beide Jungen sind. Die Wahrscheinlichkeit, einen Jungen zu haben, und die Wahrscheinlichkeit, ein Mädchen zu haben, sind jedoch beide halbiert.

Die Idee dazu ist

Wenn Sie darüber nachdenken, können Sie sich das wie folgt vorstellen.

Ereignis A.

"Mindestens einer ist ein Junge". Wenn Sie also alle Muster auflisten, wenn zwei Kinder geboren werden, gibt es 4 von "Mann & Mann", "Mann & Frau", "Frau & Frau", "Frau & Mann". Es ist ein Muster. (Einschließlich Unterschiede zwischen Brüdern) Von diesen ist "3/4", wobei "Frau & Frau" weggelassen wird, die beide "Frau" sind, die Wahrscheinlichkeit des Ereignisses A.

Ereignis B.

Dies ist natürlich "1/4".

Das heißt, die Wahrscheinlichkeit von P (B | A) ist

P(B|A) = \frac{\frac{1}{4}}{\frac{3}{4}} = \frac{1}{3}

Es wird sein.

Referenz: Schöne Geschichte der Mathematik an der High School

Fordern Sie Naive Bays heraus

Nun, das ist das Hauptthema. Naive Bayes wird auch Simple Bayes genannt. Es scheint, dass es zum Zweck der Kategorisierung von Sätzen verwendet wird, indem der Satz von Bayes leicht modifiziert wird.

P(cat|doc) = \frac{P(cat)P(doc|cat)}{P(doc)}\propto P(cat)P(doc|cat)

Dies ist die Grundform.

Ich möchte jedes Element erklären.

P (cat | doc) ist die Wahrscheinlichkeit, eine Kategorie (cat) zu sein, wenn ein Satz (doc) gegeben ist. Um es etwas genauer auszudrücken, es scheint die Wahrscheinlichkeit zu bedeuten, in einer Kategorie wie "IT" zu sein, wenn der Text Wörter wie "Apple", "iPhone" und "MacBook Pro" enthält.

\frac{P(cat)P(doc|cat)}{P(doc)}

Da "P (doc)" alle üblich sind, werden wir sie für die Berechnung ignorieren.

P(cat)P(doc|cat)

P (Katze) ist einfach.

Wenn die Gesamtzahl der Sätze 100 beträgt und die Anzahl der Sätze in der IT-Kategorie 50 beträgt

P(IT) = \frac{50}{100} = \frac{1}{2}

Es kann so berechnet werden.

P (doc | cat) macht möglicherweise keinen Sinn. Wahrscheinlichkeit, ein Satz (doc) in einer Kategorie (Katze) zu sein ...? Und das ist das Herz von Naive Bayes.

Naive Bayes gibt nicht das genaue "P (doc | cat)" an, sondern setzt die Unabhängigkeit zwischen Wortvorkommen voraus.

Die Unabhängigkeit zwischen dem Auftreten von Wörtern kann beispielsweise bedeuten, dass "Maschine" und "Lernen" Wörter sind, die häufig im Bereich des maschinellen Lernens vorkommen, aber die Wörter "Maschine" und "Lernen" sind unabhängig voneinander. Es wird berechnet, indem es vereinfacht wird, indem angenommen wird, dass es angezeigt wird.

P(doc|cat) = P(word_1 \wedge .... \wedge word_k|cat) = \prod_{i=0}^k P(word_k|cat)

Berechnen.

\prod

Ist die (x) Version von Σ. Als nächstes berechnen wir "P (Wort | Katze)". Dies ist semantisch die Wahrscheinlichkeit, dass ein Wort erscheint, wenn eine Kategorie (Katze) angegeben wird. Berechnen Sie also wie folgt. (Die Formel befindet sich auf der Referenzseite. Bitte beziehen Sie sich darauf.)

P(word_k|cat) = \frac{Kategorie(cat)Worte in(word)Anzahl der Auftritte}{Kategorie(cat)Gesamtzahl der Wörter, die in erscheinen}

Jetzt müssen Sie nur noch mit diesen rechnen! !!

Technik

Es werden zwei Schlüsselwörter angezeigt.

<Laplace-Glättung>

Ich mache nur "+ 1". Es scheint ein "Nullfrequenzproblem" zu geben. Was ist das? Ich denke, dass P (doc | cat) durch die Gesamtleistung der Auftrittswahrscheinlichkeit von Wörtern ausgedrückt wurde, aber das Produkt ist 0, wenn es eine "0" gibt, also ist es insgesamt 0. Es wird 0 sein.

Angenommen, Sie lernen in der Kategorie "IT" und stoßen auf ein neues Wort "Python", das keine Trainingsdaten enthält. Dann ..

P(word_k|cat) = \frac{Kategorie(cat)Worte in(word)Anzahl der Auftritte}{Kategorie(cat)Gesamtzahl der Wörter, die in erscheinen}

Das Molekül von

P(Python|IT) = 0 

Es wird sein. Addieren Sie also +1 zur Anzahl der Auftritte im Voraus, um zu verhindern, dass die Wahrscheinlichkeit 0 wird! !! Das scheint eine Technik zu sein, die Laplace-Glättung genannt wird. Natürlich ändert sich auch der Nenner. Wenn Sie die Formel erneut schreiben ..

P(word_k|cat) = \frac{Kategorie(cat)Worte in(word)Anzahl der Auftritte+ 1}{Kategorie(cat)Gesamtzahl der Wörter, die in erscheinen+Gesamtzahl der Wörter}

Es wird sein.

In den Beispieldaten ist es keine große Sache, aber wenn es auf die tatsächliche Berechnung angewendet wird, kann der Nenner von "P (Wort | Katze)" sehr groß werden.

Der Grund ist, dass die Anzahl der Wörter sehr groß sein kann. In einem solchen Fall kann ein Unterlauf auftreten.

Das Gegenteil von Unterlauf oder Überlauf ist, dass der Bereich nach dem Dezimalpunkt zu groß wird, um verarbeitet zu werden.

Hier kommt der Logarithmus ins Spiel. Wenn Sie den Logarithmus verwenden, können Sie ihn durch dieselbe Basisaddition ersetzen. Selbst wenn Sie den Logarithmus verwenden und hinzufügen, ist das Ergebnis dasselbe.

Ändern Sie also Folgendes in eine logarithmische Form.

\prod_{i=0}^k P(word_k|cat)
\prod_{i=0}^k \log P(word_k|cat)

Zusammengenommen lautet die endgültige Formel:

P(cat|doc) = \log P(cat) + \sum_{i=0}^k \log P(word_k|cat)

Referenz: Protokollberechnung und Formel! Dies ist perfekt! !!

<Nächstes Mal>

Anfänger des maschinellen Lernens versuchen, Naive Bayes zu erreichen (2) - Implementierung

Daher möchte ich es mit Python implementieren. (Siehe die Website)

Referenz

Ich habe sehr viel auf die folgenden Seiten verwiesen. Vielen Dank.

Verlauf bearbeiten

Recommended Posts

Anfänger des maschinellen Lernens versuchen, Naive Bayes (1) - Theorie zu erreichen
Anfänger des maschinellen Lernens versuchen, einen Entscheidungsbaum zu erstellen
Anfänger des maschinellen Lernens versuchen eine lineare Regression
Versuchen Sie, den Strombedarf durch maschinelles Lernen vorherzusagen
[Für Anfänger] Einführung in die Vektorisierung beim maschinellen Lernen
Einführung in das maschinelle Lernen
[Maschinelles Lernen] Versuchen Sie, Objekte mithilfe der selektiven Suche zu erkennen
Alles für Anfänger, um maschinelles Lernen zu können
Eine Einführung in das maschinelle Lernen
Anfänger des maschinellen Lernens versuchten RBM
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Klassifizierung zu bewerten
[Maschinelles Lernen] Ich habe versucht, die Theorie von Adaboost zusammenzufassen
Versuchen Sie es mit Kaggle leicht maschinell
Einführung in das maschinelle Lernen Schreiben von Notizen
[Maschinelles Lernen] Lassen Sie uns den Entscheidungsbaum studieren
SVM versucht maschinelles Lernen mit Scikit-Learn
<Für Anfänger> Python-Bibliothek <Für maschinelles Lernen>
Einführung in die Bibliothek für maschinelles Lernen SHOGUN
[Maschinelles Lernen] Versuchen Sie, zufällige Wälder zu studieren
Python-Anfänger versuchten es herauszufinden
Sammeln von Daten zum maschinellen Lernen
[Python] [Maschinelles Lernen] Anfänger ohne Wissen versuchen vorerst maschinelles Lernen
Python-Anfänger veröffentlichen Web-Apps mit maschinellem Lernen [Teil 2] Einführung in explosives Python !!
Einführung in das maschinelle Lernen: Funktionsweise des Modells
scikit-learn Verwendung der Zusammenfassung (maschinelles Lernen)
Notieren Sie die Schritte zum Verständnis des maschinellen Lernens
Erste Schritte für Anfänger des maschinellen Lernens (KI)
Ich habe Python 3.5.1 installiert, um maschinelles Lernen zu studieren
Eine Einführung in Python für maschinelles Lernen
Versuchen Sie, Code aus 1 mit dem Framework Chainer für maschinelles Lernen (Mnist Edition) zu schreiben.
Versuchen Sie, durch maschinelles Lernen basierend auf Wetterdaten eine "wetterkartenähnliche Front" zu zeichnen (5)
Ein Anfänger des maschinellen Lernens versuchte, mit Python ein Vorhersagemodell für Pferderennen zu erstellen
Versuchen Sie, durch maschinelles Lernen basierend auf Wetterdaten eine "wetterkartenähnliche Front" zu zeichnen (1)
Versuchen Sie, durch maschinelles Lernen anhand von Wetterdaten eine "wetterkartenähnliche Front" zu zeichnen (4)
Versuchen Sie, durch maschinelles Lernen basierend auf Wetterdaten eine "wetterkartenähnliche Front" zu zeichnen (2)
Einführung in IPython (Python2) in Mac OS X-Vorbereitung für den Einstieg in die Theorie des maschinellen Lernens