Diferença entre Naive Bayes e Rede Neural Recorrente (LSTM)

8

Eu quero realizar análises de sentimentos em textos, já passei por vários artigos, alguns deles estão usando "Naive Bayes" e outros são "Rede Neural Recorrente (LSTM)" , por outro lado, vi uma biblioteca python para análise de sentimentos que é nltk. Ele usa "Naive Bayes" alguém pode explicar qual é a diferença entre usar os dois?

Eu também passei por este post, mas não tenho certeza sobre os dois.

Diferença entre rede Bayes, rede neural, árvore de decisão e redes de Petri

Daniyal Syed
fonte

Respostas:

14

Sobre a diferença entre Naive Bayes e Redes Neurais Recorrentes

Antes de tudo, vamos começar dizendo que ambos são classificadores, destinados a resolver um problema chamado classificação estatística . Isso significa que você tem muitos dados (nos artigos do seu caso) divididos em duas ou mais categorias (no seu caso, sentimento positivo / negativo). O objetivo do classificador é aprender como os artigos são divididos nessas duas categorias e poder classificar novos artigos por si próprio.

Dois modelos que podem resolver essa tarefa são o classificador Naive Bayes e Redes Neurais Recorrentes.

Naive Bayes
Para usar esse classificador para análise de texto, você geralmente pré-processa o texto (conjunto de palavras + tf-tdf ) para poder transformá-lo em vetores contendo valores numéricos. Esses vetores servem como uma entrada para o modelo NB.
Esse classificador assume que seus recursos (os atributos dos vetores que produzimos) são independentes um do outro. Quando essa suposição é válida, é um classificador muito forte que requer muito poucos dados para funcionar.

Redes neurais recorrentes
São redes que lêem seus dados sequencialmente, mantendo uma "memória" do que eles leram anteriormente. Isso é realmente útil quando se lida com texto devido às palavras de correlação existentes entre elas.

Os dois modelos (RN e RNN) diferem bastante na maneira como tentam realizar essa classificação:

  • O RN pertence a uma categoria de modelos denominada generativa . Isso significa que durante o treinamento (o procedimento em que o algoritmo aprende a classificar), o NB tenta descobrir como os dados foram gerados em primeiro lugar. Essencialmente, ele tenta descobrir a distribuição subjacente que produziu os exemplos inseridos no modelo.

  • Por outro lado, a RNN é um modelo discriminativo . Ele tenta descobrir quais são as diferenças entre seus exemplos positivos e negativos, para realizar a classificação.

Sugiro consultar "algoritmos discriminativos versus algoritmos generativos" se você quiser aprender lamaçal

Embora o NB seja popular há décadas, as RNNs estão começando a encontrar aplicativos na última década devido à necessidade de altos recursos computacionais. As RNNs na maioria das vezes são treinadas em GPUs dedicadas (que calculam muito mais rápido que as CPUs).

tl; dr: são duas maneiras muito diferentes de resolver a mesma tarefa

Bibliotecas

Como os dois algoritmos são muito populares, eles têm implementações em muitas bibliotecas. Vou citar algumas bibliotecas python desde que você mencionou:

Para NB:

  • scikit-learn : é uma biblioteca python muito fácil de usar, que contém implementações de vários algoritmos de aprendizado de máquina, incluindo Naive Bayes.

  • NaiveBayes : não usei, mas acho que é relevante a julgar pelo nome.

Como as RNNs são consideradas um algoritmo de aprendizado profundo , elas têm implementações em todas as principais bibliotecas de aprendizado profundo:

  • TensorFlow : a biblioteca DL mais popular no momento. Publicado e mantido pelo google.

  • theano : Biblioteca semelhante à tf, mais antiga, publicada pela Universidade de Montreal.

  • keras : Wrapper para tf e theano. Muito facil. O que eu sugiro que você use se quiser implementar RNNs.

  • caffe : biblioteca DL publicada pela UC Berkeley. Possui API python.

Todas as opções acima oferecem suporte à GPU se você tiver uma GPU NVIDIA habilitada para CUDA.

O NLTK do Python é uma biblioteca principalmente para processamento de linguagem natural (derivação, tokenização, marcação de parte do discurso). Embora tenha um pacote de sentimentos , esse não é o ponto de foco. Tenho certeza que o NLTK usa o NB para análise de sentimentos.

Djib2011
fonte