Unterschied zwischen Naive Bayes und Recurrent Neural Network (LSTM)

8

Ich möchte eine Stimmungsanalyse für Text durchführen, habe mehrere Artikel durchgesehen, einige verwenden "Naive Bayes" und andere sind "Recurrent Neural Network (LSTM)" , andererseits habe ich eine Python-Bibliothek für die Stimmungsanalyse gesehen, die ist nltk. Es verwendet "Naive Bayes". Kann jemand erklären, was der Unterschied zwischen der Verwendung der beiden ist?

Ich habe auch diesen Beitrag durchgesehen, aber nicht klar über beide ..

Unterschied zwischen Bayes-Netzwerk, neuronalem Netzwerk, Entscheidungsbaum und Petri-Netzen

Daniyal Syed
quelle

Antworten:

14

Über den Unterschied zwischen Naive Bayes und wiederkehrenden neuronalen Netzen

Lassen Sie uns zunächst sagen, dass beide Klassifikatoren sind, um ein Problem zu lösen, das als statistische Klassifikation bezeichnet wird . Dies bedeutet, dass Sie viele Daten (in Ihren Fallartikeln) haben, die in zwei oder mehr Kategorien unterteilt sind (in Ihrem Fall positive / negative Stimmung). Ziel des Klassifikators ist es, zu lernen, wie die Artikel in diese beiden Kategorien unterteilt werden, und dann in der Lage zu sein, neue Artikel selbst zu klassifizieren.

Zwei Modelle, die diese Aufgabe lösen können, sind der Naive Bayes-Klassifikator und Recurrent Neural Networks.

Naive Bayes
Um diesen Klassifikator für Textanalyse zu verwenden, Pre-Prozess , den Sie in der Regel den Text ( Tasche von Wörtern + tf-TDF ) , so dass Sie es in Vektoren , die numerische Werte umwandeln kann. Diese Vektoren dienen als Eingabe für das NB-Modell.
Dieser Klassifikator setzt voraus, dass Ihre Merkmale (die Attribute der von uns erzeugten Vektoren) unabhängig voneinander sind. Wenn diese Annahme zutrifft, handelt es sich um einen sehr starken Klassifikator, für dessen Funktion nur sehr wenige Daten erforderlich sind.

Wiederkehrende neuronale Netze
Dies sind Netze, die Ihre Daten nacheinander lesen und dabei einen "Speicher" dessen behalten, was sie zuvor gelesen haben. Diese sind beim Umgang mit Text aufgrund der Korrelation zwischen Wörtern sehr nützlich.

Die beiden Modelle (NB und RNN) unterscheiden sich stark in der Art und Weise, wie sie versuchen, diese Klassifizierung durchzuführen:

  • NB gehört zu einer Kategorie von Modellen, die als generativ bezeichnet werden . Dies bedeutet, dass NB während des Trainings (dem Verfahren, bei dem der Algorithmus das Klassifizieren lernt) versucht, herauszufinden, wie die Daten überhaupt generiert wurden . Es wird im Wesentlichen versucht, die zugrunde liegende Verteilung herauszufinden, aus der die Beispiele hervorgegangen sind, die Sie in das Modell eingegeben haben.

  • Andererseits ist RNN ein diskriminierendes Modell. Es wird versucht herauszufinden, welche Unterschiede zwischen Ihren positiven und negativen Beispielen bestehen, um die Klassifizierung durchzuführen.

Ich schlage vor, "diskriminative vs generative Algorithmen" abzufragen, wenn Sie Sumpf lernen möchten

Während NB seit Jahrzehnten beliebt ist, finden RNNs in den letzten zehn Jahren zunehmend Anwendungen, da sie hohe Rechenressourcen benötigen. RNNs werden die meiste Zeit auf dedizierten GPUs trainiert (die viel schneller rechnen als CPUs).

tl; dr: Es sind zwei sehr unterschiedliche Arten, dieselbe Aufgabe zu lösen

Bibliotheken

Da die beiden Algorithmen sehr beliebt sind, sind sie in vielen Bibliotheken implementiert. Ich werde einige Python-Bibliotheken nennen, seit Sie es erwähnt haben:

Für NB:

  • scikit-learn : ist eine sehr einfach zu verwendende Python-Bibliothek, die Implementierungen mehrerer Algorithmen für maschinelles Lernen enthält, einschließlich Naive Bayes.

  • NaiveBayes : Ich habe es nicht benutzt, aber ich denke, es ist relevant, nach dem Namen zu urteilen.

Da RNNs als Deep-Learning- Algorithmus betrachtet werden, sind sie in allen wichtigen Deep-Learning-Bibliotheken implementiert:

  • TensorFlow : Derzeit beliebteste DL-Bibliothek. Veröffentlicht und gepflegt von Google.

  • theano : Ähnliche Bibliothek wie tf, älter, herausgegeben von der Universität von Montreal.

  • Keras : Wrapper für tf und theano. Viel einfacher. Was ich Ihnen vorschlage, wenn Sie jemals RNNs implementieren möchten.

  • caffe : DL-Bibliothek, herausgegeben von UC Berkeley. Hat Python-API.

Alle oben genannten bieten GPU-Unterstützung, wenn Sie eine CUDA-fähige NVIDIA-GPU haben.

Pythons NLTK ist eine Bibliothek, die hauptsächlich für die Verarbeitung natürlicher Sprache (Stemming, Tokenisierung, Teil-of-Speach-Tagging) vorgesehen ist. Es hat zwar ein Stimmungspaket , aber es ist nicht der Schwerpunkt. Ich bin mir ziemlich sicher, dass NLTK NB für die Stimmungsanalyse verwendet.

Djib2011
quelle