Różnica między Naive Bayes a Recurrent Neural Network (LSTM)

8

Chcę przeprowadzić analizę sentymentu na tekście, przejrzałem kilka artykułów, niektóre z nich używają „Naive Bayes”, a inne to „Recurrent Neural Network (LSTM)” , z drugiej strony widziałem bibliotekę Pythona do analizy sentymentów, która jest nltk. Używa „Naive Bayes”. Czy ktoś może wyjaśnić, jaka jest różnica między używaniem tych dwóch?

Przeczytałem również ten post, ale nie jestem pewien, czy oba z nich…

Różnica między siecią Bayesa, siecią neuronową, drzewem decyzyjnym i sieciami Petriego

Daniyal Syed
źródło

Odpowiedzi:

14

O różnicy między Naive Bayes a Recurrent Neural Networks

Po pierwsze zacznijmy od stwierdzenia, że ​​obaj są klasyfikatorami, których celem jest rozwiązanie problemu zwanego klasyfikacją statystyczną . Oznacza to, że masz dużo danych (w twoim przypadku artykułów) podzielonych na dwie lub więcej kategorii (w twoim przypadku pozytywne / negatywne nastroje). Celem klasyfikatora jest, aby dowiedzieć się , jak artykuły są podzielone na te dwie kategorie, a następnie być w stanie sklasyfikować nowe artykuły na swój własny.

Dwa modele, które mogą rozwiązać to zadanie, to klasyfikator Naive Bayes i rekurencyjne sieci neuronowe.

Naiwne Bayes
Aby użyć tego klasyfikatora do analizy tekstu, zwykle wstępnie przetwarzasz tekst ( worek słów + tf-tdf ), abyś mógł go przekształcić w wektory zawierające wartości liczbowe. Wektory te służą jako dane wejściowe do modelu NB.
Ten klasyfikator zakłada, że ​​twoje cechy (atrybuty wektorów, które stworzyliśmy) są od siebie niezależne. Kiedy to założenie się utrzymuje, jest to bardzo silny klasyfikator, który do działania wymaga bardzo mało danych.

Nawracające sieci neuronowe
Są to sieci, które odczytują twoje dane sekwencyjnie, zachowując „pamięć” tego, co wcześniej przeczytały. Są one bardzo przydatne podczas pracy z tekstem ze względu na korelację między słowami.

Dwa modele (NB i RNN) różnią się znacznie pod względem sposobu przeprowadzenia tej klasyfikacji:

  • NB należy do kategorii modeli zwanych generatywnymi . Oznacza to, że podczas szkolenia (procedura, w której algorytm uczy się klasyfikować), NB próbuje przede wszystkim dowiedzieć się, w jaki sposób dane zostały wygenerowane . Zasadniczo próbuje dowiedzieć się, jaka jest podstawowa dystrybucja, która dała przykłady, które wprowadzasz do modelu.

  • Z drugiej strony RNN jest modelem dyskryminującym . Próbuje dowiedzieć się, jakie są różnice między pozytywnymi i negatywnymi przykładami, aby przeprowadzić klasyfikację.

Sugeruję zapytanie o „algorytmy dyskryminujące vs generatywne”, jeśli chcesz nauczyć się błota

Chociaż NB jest popularny od dziesięcioleci, RNN zaczynają znajdować aplikacje w ciągu ostatniej dekady ze względu na zapotrzebowanie na wysokie zasoby obliczeniowe. RNN przez większość czasu są szkoleni na dedykowanych procesorach graficznych (które obliczają znacznie szybciej niż procesory).

tl; dr: są to dwa bardzo różne sposoby rozwiązania tego samego zadania

Biblioteki

Ponieważ oba algorytmy są bardzo popularne, mają implementacje w wielu bibliotekach. Wymienię kilka bibliotek Pythona, skoro o tym wspomniałeś:

Dla NB:

  • scikit-learn : to bardzo łatwa w użyciu biblioteka Pythona zawierająca implementacje kilku algorytmów uczenia maszynowego, w tym Naive Bayes.

  • NaiveBayes : nie użyłem go, ale sądzę, że jest to właściwe, sądząc po nazwie.

Ponieważ RNN są uważane za algorytm głębokiego uczenia , mają implementacje we wszystkich głównych bibliotekach głębokiego uczenia:

  • TensorFlow : obecnie najpopularniejsza biblioteka DL. Opublikowane i utrzymywane przez Google.

  • theano : Biblioteka podobna do tf, starsza, opublikowana przez University of Montreal.

  • keras : Wrapper dla TF i Theano. Dużo łatwiej. Sugeruję, aby użyć, jeśli kiedykolwiek chcesz zaimplementować RNN.

  • caffe : biblioteka DL opublikowana przez UC Berkeley. Ma API Pythona.

Wszystkie powyższe oferują obsługę GPU, jeśli masz procesor NVIDIA z obsługą CUDA.

Python's NLTK jest biblioteką głównie do przetwarzania języka naturalnego (wykrywanie, tokenizacja, tagowanie w części mowy). Chociaż ma pakiet sentymentów , nie jest punktem centralnym. Jestem prawie pewien, że NLTK używa NB do analizy nastrojów.

Djib2011
źródło