Question naïve sur la modélisation Naive Bayes
Dans les classificateurs Naive Bayes, on calcule une table de fréquences pour déterminer une prédiction. Un exemple classique, on calcule la table de fréquence des mots compte tenu du contexte de spam ou de ham. Par exemple, P( viagra | spam )quelle est la probabilité que, étant donné un ensemble d'entraînement avec des messages de spam identifiés, à quelle fréquence viagra apparaît-il dans ces messages de spam.
Pourquoi ne pas calculer simplement P(spam | viagra)directement à partir de l'ensemble d'entraînement? Regardez le mot viagra, quel pourcentage du temps apparaît-il dans les messages de spam?
Quel est l'avantage de faire le comptage de fréquence de la première manière?
L'étape suivante de la combinaison des probabilités individuelles utilisant l'hypothèse «naïve» aurait toujours lieu en utilisant les produits des probabilités individuelles P (W | S) (généralement additionnées sous la forme logarithmique). Cette question ne concerne que les probabilités individuelles. Je me souviens d'avoir construit des systèmes des deux manières (comptage de fréquence directement et indirectement), les deux ayant des performances adéquates. Rafraîchissant ma mémoire à ce sujet, je m'interroge sur la nécessité de la première méthode.
Après avoir écrit cette question, deux raisons me sont venues à l'esprit.
Raison n ° 1 : Pour des problèmes de classification déséquilibrés. En déterminant P (W | S) ainsi que P (S), on peut alors régler P (S) comme paramètre au lieu de techniques de sur / sous-échantillonnage maladroites. Ce qui est plus idiomatique Naive Bayes car il est de nature générative.
Raison n ° 2 : Pour la classification à l'aide de variables prédictives numériques. Par exemple, en utilisant cette équation gaussienne paramétrée:
équation pour une distribution normale
Ce qui précède donne P (x | S) dans le contexte du spam.
Merci Tim pour une bonne réponse. Je connais l'étape consistant à combiner les probabilités pour atténuer la nécessité de calculer les probabilités conjointes comme vous l'indiquez.
Mais un aspect qu'il met en avant est qu'il existe plusieurs méthodes pour combiner les probabilités individuelles.
La méthode conventionnelle:
(P(S) * Product( P(Wi | S),... ))
-----------------------------------------------------------
(P(S) * Product( P(Wi | S),... )) + (P(H) * Product( P(Wi | H),... ))
Cependant dans le https://en.m.wikipedia.org/wiki/Naive_Bayes_spam_filtering article, cela implique que cela convient:
N'UTILISEZ PAS CETTE FORMULE:
Product( P(S | Wi),... )
-----------------------------------------
Product( P(S | Wi),... ) + Product( P(H | Wi),... )
N'UTILISEZ PAS LA FORMULE CI-DESSUS. J'ai remarqué qu'il y a une certaine controverse concernant cette formule particulière avec les éditeurs de Wikipedia ... La raison en est qu'en utilisant cette formulation incorrecte, le P (S) antérieur est incorporé trop de fois et pour un problème déséquilibré (P (S) ) <P (H)), la prédiction sera biaisée vers zéro.
Notez que les formules du produit ne doivent pas être utilisées directement mais à la place via la formulation log (). N'oubliez pas que x * y est log (x) + log (y) Voir pour plus de détails:https://en.wikipedia.org/wiki/Naive_Bayes_spam_filtering#Other_expression_of_the_formula_for_combining_individual_probabilities
Réponses
Je suis d'accord avec vous que pour le calcul de la probabilité conditionnelle à une seule variable binaire, cela n'a pas d'importance et vous pouvez également le calculer directement. Mais considérez le cas où vous avez plusieurs fonctionnalités, par exemple$p(Y|A,B,C,D)$. Pour calculer cette probabilité conditionnelle directement à partir des données, vous auriez besoin de suffisamment d'échantillons pour toutes les combinaisons des différents niveaux de toutes les variables. Cela signifierait que vous avez besoin d'un ensemble de données assez énorme. Pour le spam en anglais, cela signifierait des échantillons de toutes les combinaisons possibles de tous les mots anglais possibles pouvant former un e-mail, donc un ensemble de données infiniment grand.
L'algorithme Naive Bayes résout cela en remplaçant la nécessité d'observer toutes les combinaisons possibles, en utilisant uniquement les paires de chacune des variables avec la variable prédite
$$ p(Y|A,B,C,D) \propto p(A|Y) \,p(B|Y)\, p(C|Y)\, p(D|Y) \,p(Y) $$