Les classificateurs Naive Bayes sont un choix populaire pour les problèmes de classification. Il y a plusieurs raisons à cela, notamment:
- "Zeitgeist" - une notoriété généralisée après le succès des filtres anti-spam il y a une dizaine d'années
- Facile à écrire
- Le modèle de classificateur est rapide à construire
- Le modèle peut être modifié avec de nouvelles données d'apprentissage sans avoir à reconstruire le modèle
Cependant, ils sont «naïfs» - c'est-à-dire qu'ils supposent que les fonctionnalités sont indépendantes - cela contraste avec d'autres classificateurs tels que les classificateurs Maximum Entropy (dont le calcul est lent).
L'hypothèse d'indépendance ne peut généralement pas être supposée, et dans de nombreux cas (la plupart?), Y compris l'exemple du filtre anti-spam, elle est tout simplement fausse.
Alors, pourquoi le classificateur Naive Bayes fonctionne-t-il toujours très bien dans de telles applications, même lorsque les fonctionnalités ne sont pas indépendantes les unes des autres?
la source
La plupart des problèmes d'apprentissage automatique sont faciles!
Voir par exemple sur le blog de John Langford . Ce qu'il dit en réalité, c'est que ML facilite les problèmes, ce qui pose un problème aux chercheurs, qui doivent essayer d'appliquer des méthodes à un large éventail de problèmes simples ou s'attaquer à des problèmes plus difficiles. Cependant, le sous-produit est que, pour de nombreux problèmes, les données sont séparables linéairement (ou du moins presque), auquel cas tout classificateur linéaire fonctionnera bien! Il se trouve que les auteurs du document de filtrage antispam original ont choisi Naive Bayes, mais s’ils avaient utilisé Perceptron, SVM, l’analyse discriminante de Fisher, la régression logistique, AdaBoost, ou presque, ils auraient probablement aussi bien fonctionné.
Le fait qu'il soit relativement facile de coder l'algorithme aide. Par exemple, pour coder le SVM, vous devez disposer d'un solveur QP ou coder l' algorithme SMO qui n'est pas une tâche triviale. Vous pouvez bien sûr télécharger libsvm mais cette option n’était pas disponible dans les premiers temps. Cependant, il existe de nombreux autres algorithmes simples (y compris le Perceptron mentionné ci-dessus) qui sont tout aussi faciles à coder (et permettent des mises à jour incrémentielles comme le mentionne la question).
Pour les problèmes non linéaires difficiles, des méthodes pouvant traiter les non-linéarités sont bien sûr nécessaires. Mais même cela peut être une tâche relativement simple lorsque des méthodes de noyau sont utilisées. La question devient alors "Comment concevoir une fonction de noyau efficace pour mes données" plutôt que "Quel classificateur dois-je utiliser".
la source
Ayant utilisé abondamment les classificateurs naïfs bayésiens dans les outils de classification par segmentation, mon expérience est cohérente avec les documents publiés montrant que NBC est d'une précision comparable à celle du discriminant linéaire et de CART / CHAID lorsque toutes les variables prédictives sont disponibles.
(Par précision, le "taux de réussite" permettant de prédire la solution correcte comme solution la plus probable, ainsi que l'étalonnage, ce qui signifie qu'une estimation de 75% des membres est exacte dans 70% à 80% des cas.)
Mes deux cents est que NBC fonctionne si bien parce que:
Et c'est à ce moment que toutes les variables sont observées. NBC se démarque vraiment du lot, c’est qu’elle se dégrade gracieusement quand une ou plusieurs variables prédites manquent ou ne sont pas observées. L'analyse CART / CHAID et le discriminant linéaire s'arrêtent dans ce cas.
la source