Différence entre Naive Bayes et Recurrent Neural Network (LSTM)

8

Je veux effectuer une analyse de sentiment sur du texte, j'ai parcouru plusieurs articles, certains d'entre eux utilisent "Naive Bayes" et d'autres sont "Recurrent Neural Network (LSTM)" , d'autre part j'ai vu une bibliothèque python pour l'analyse de sentiment qui est nltk. Il utilise "Naive Bayes". Quelqu'un peut-il expliquer quelle est la différence entre l'utilisation des deux?

J'ai également parcouru ce post, mais je ne suis pas clair sur les deux.

Différence entre le réseau de Bayes, le réseau de neurones, l'arbre de décision et les réseaux de Petri

Daniyal Syed
la source

Réponses:

14

Sur la différence entre Naive Bayes et les réseaux de neurones récurrents

Tout d'abord, commençons par dire qu'ils sont tous deux classificateurs, destinés à résoudre un problème appelé classification statistique . Cela signifie que vous avez beaucoup de données (dans vos articles de cas) divisées en deux catégories ou plus (dans votre cas, sentiment positif / négatif). L'objectif du classificateur est d'apprendre comment les articles sont divisés en ces deux catégories et de pouvoir ensuite classer les nouveaux articles par lui-même.

Deux modèles qui peuvent résoudre cette tâche sont le classificateur Naive Bayes et les réseaux de neurones récurrents.

Naive Bayes
Afin d'utiliser ce classifieur pour l'analyse de texte, vous prétraitez généralement le texte ( sac de mots + tf-tdf ) afin de pouvoir le transformer en vecteurs contenant des valeurs numériques. Ces vecteurs servent d'entrée au modèle NB.
Ce classificateur suppose que vos entités (les attributs des vecteurs que nous avons produits) sont indépendantes les unes des autres. Lorsque cette hypothèse est vérifiée, il s'agit d'un classificateur très puissant qui nécessite très peu de données pour fonctionner.

Réseaux de neurones récurrents
Ce sont des réseaux qui lisent vos données de manière séquentielle, tout en gardant une "mémoire" de ce qu'ils ont lu précédemment. Celles-ci sont vraiment utiles lorsque l'on traite du texte en raison de la corrélation entre les mots.

Les deux modèles (NB et RNN) diffèrent considérablement dans la façon dont ils tentent d'effectuer cette classification:

  • NB appartient à une catégorie de modèles dite générative . Cela signifie qu'au cours de la formation (la procédure où l'algorithme apprend à classer), NB essaie de découvrir comment les données ont été générées en premier lieu. Il essaie essentiellement de comprendre la distribution sous-jacente qui a produit les exemples que vous entrez dans le modèle.

  • D'un autre côté, RNN est un modèle discriminant . Il essaie de comprendre quelles sont les différences entre vos exemples positifs et négatifs, afin d'effectuer la classification.

Je suggère d'interroger "des algorithmes discriminants vs génératifs" si vous voulez apprendre le bourbier

Bien que le NB soit populaire depuis des décennies, les RNN commencent à trouver des applications au cours de la dernière décennie en raison de leur besoin de ressources de calcul élevées. La plupart du temps, les RNN sont formés sur des GPU dédiés (qui calculent beaucoup plus rapidement que les CPU).

tl; dr: ce sont deux façons très différentes de résoudre la même tâche

Bibliothèques

Parce que les deux algorithmes sont très populaires, ils ont des implémentations dans de nombreuses bibliothèques. Je vais nommer quelques bibliothèques python depuis que vous en avez parlé:

Pour NB:

  • scikit-learn : est une bibliothèque python très facile à utiliser contenant des implémentations de plusieurs algorithmes d'apprentissage automatique, y compris Naive Bayes.

  • NaiveBayes : ne l'avez pas utilisé mais je suppose que c'est pertinent à en juger par le nom.

Étant donné que les RNN sont considérés comme un algorithme d' apprentissage en profondeur , ils ont des implémentations dans toutes les principales bibliothèques d'apprentissage en profondeur:

  • TensorFlow : bibliothèque DL la plus populaire en ce moment. Publié et maintenu par google.

  • theano : bibliothèque similaire à tf, plus ancienne, publiée par l'Université de Montréal.

  • keras : Wrapper pour tf et theano. Beaucoup plus facile. Ce que je vous suggère d'utiliser si vous souhaitez implémenter des RNN.

  • caffe : bibliothèque DL publiée par UC Berkeley. Possède une API python.

Tous les éléments ci-dessus offrent un support GPU si vous avez un GPU NVIDIA compatible CUDA.

Le NLTK de Python est une bibliothèque principalement pour le traitement du langage naturel (stemming, tokenizing, balisage d'une partie du discours). Bien qu'il ait un paquet de sentiments , ce n'est pas le point focal. Je suis sûr que NLTK utilise NB pour l'analyse des sentiments.

Djib2011
la source