Differenza tra Naive Bayes e Recurrent Neural Network (LSTM)


8

Voglio eseguire un'analisi del sentimento sul testo, ho esaminato diversi articoli, alcuni usano "Naive Bayes" e altri sono "Recurrent Neural Network (LSTM)" , d'altro canto ho visto una libreria Python per l'analisi del sentiment che è nltk. Utilizza "Naive Bayes" qualcuno può spiegare qual è la differenza tra l'utilizzo dei due?

Ho anche letto questo post, ma non sono chiaro su entrambi ..

Differenza tra rete di Bayes, rete neurale, albero decisionale e reti di Petri

Risposte:


14

Sulla differenza tra Naive Bayes e reti neuronali ricorrenti

Prima di tutto cominciamo dicendo che sono entrambi classificatori, pensati per risolvere un problema chiamato classificazione statistica . Ciò significa che hai molti dati (negli articoli del tuo caso) suddivisi in due o più categorie (nel tuo caso sentimento positivo / negativo). L'obiettivo del classificatore è imparare come gli articoli sono suddivisi in quelle due categorie e quindi essere in grado di classificare i nuovi articoli da solo.

Due modelli in grado di risolvere questo compito sono il classificatore Naive Bayes e le reti neurali ricorrenti.

Naive Bayes
Per utilizzare questo classificatore per l'analisi del testo, di solito pre-elabora il testo ( sacchetto di parole + tf-tdf ) in modo da poterlo trasformare in vettori contenenti valori numerici. Questi vettori servono come input per il modello NB.
Questo classificatore presuppone che le tue caratteristiche (gli attributi dei vettori che abbiamo prodotto) siano indipendenti l'una dall'altra. Quando questo presupposto è valido, è un classificatore molto forte che richiede pochissimi dati per funzionare.

Reti neurali ricorrenti
Queste sono reti che leggono i tuoi dati in sequenza, mantenendo una "memoria" di ciò che hanno letto in precedenza. Questi sono davvero utili quando si tratta di testo a causa delle parole di correlazione che hanno tra di loro.

I due modelli (NB e RNN) differiscono notevolmente nel modo in cui tentano di eseguire questa classificazione:

  • NB appartiene a una categoria di modelli chiamati generativi . Ciò significa che durante l'allenamento (la procedura in cui l'algoritmo impara a classificare), NB cerca di scoprire come sono stati generati i dati in primo luogo. In sostanza, cerca di capire la distribuzione sottostante che ha prodotto gli esempi che hai inserito nel modello.

  • D'altra parte RNN è un modello discriminante . Cerca di capire quali sono le differenze tra i tuoi esempi positivi e negativi, al fine di eseguire la classificazione.

Suggerisco di interrogare "algoritmi discriminativi contro generativi" se vuoi imparare il fango

Mentre NB è popolare da decenni, gli RNN stanno iniziando a trovare applicazioni negli ultimi dieci anni a causa della loro necessità di elevate risorse di calcolo. La maggior parte delle volte le RNN sono addestrate su GPU dedicate (che calcolano molto più velocemente delle CPU).

tl; dr: sono due modi molto diversi di risolvere lo stesso compito

biblioteche

Poiché i due algoritmi sono molto popolari, hanno implementazioni in molte librerie. Chiamerò alcune librerie di Python da quando l'hai menzionato:

Per NB:

  • scikit-learn : è una libreria Python molto facile da usare che contiene implementazioni di diversi algoritmi di machine learning, incluso Naive Bayes.

  • NaiveBayes : non l'ho usato ma immagino sia rilevante a giudicare dal nome.

Poiché gli RNN sono considerati un algoritmo di deep learning , hanno implementazioni in tutte le principali librerie di deep learning:

  • TensorFlow : la libreria DL più popolare al momento. Pubblicato e gestito da google.

  • theano : biblioteca simile a tf, più vecchia, pubblicata dall'Università di Montreal.

  • keras : wrapper per tf e theano. Molto più facile. Cosa ti consiglio di usare se mai vuoi implementare RNN.

  • caffe : libreria DL pubblicata da UC Berkeley. Dispone di API Python.

Tutto quanto sopra offre supporto GPU se si dispone di una GPU NVIDIA abilitata CUDA.

NLTK di Python è una libreria principalmente per l' elaborazione del linguaggio naturale (derivazione, tokenizzazione, etichettatura parziale). Sebbene abbia un pacchetto sentiment , non è il punto focale. Sono abbastanza sicuro che NLTK usi NB per l'analisi del sentiment.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.