La réponse acceptée comporte de nombreux éléments de k-NN ( k -voisins les plus proches), un algorithme différent.
Les algorithmes k-NN et NaiveBayes sont tous deux des algorithmes de classification. Conceptuellement, k-NN utilise l'idée de "proximité" pour classer de nouvelles entités. Dans le k-NN, la "proximité" est modélisée par des idées telles que la distance euclidienne ou la distance cosinus. En revanche, dans NaiveBayes, le concept de "probabilité" est utilisé pour classer les nouvelles entités.
Puisque la question porte sur les Bayes naïfs, voici comment je décrirais les idées et les étapes à quelqu'un. J'essaierai de le faire avec le moins d'équations possible et en anglais simple.
Premièrement, probabilité conditionnelle et règle de Bayes
Avant de pouvoir comprendre et apprécier les nuances du concept de "Bayes naïf", il faut d'abord connaître quelques concepts connexes, à savoir l'idée de probabilité conditionnelle et la règle de Bayes. (Si vous êtes familier avec ces concepts, passez directement à la section intitulée Se rendre à "Naive Bayes )
Probabilité conditionnelle en anglais simple : Quelle est la probabilité que quelque chose se produise, étant donné que quelque chose d'autre a déjà eu lieu.
Disons qu'il existe un résultat O et une preuve E. D'après la façon dont ces probabilités sont définies : La probabilité d'avoir les deux le résultat O et la preuve E sont : (Probabilité que O se produise) multipliée par la (Probabilité de E étant donné que O s'est produit)
Un exemple pour comprendre la probabilité conditionnelle :
Disons que nous avons une collection de sénateurs américains. Les sénateurs peuvent être démocrates ou républicains. Ils peuvent également être de sexe masculin ou féminin.
Si nous choisissons un sénateur de manière totalement aléatoire, quelle est la probabilité que cette personne soit une femme démocrate ? La probabilité conditionnelle peut nous aider à répondre à cette question.
Probabilité de (sénateur démocrate et féminin)= Probabilité (sénateur démocrate) multipliée par la probabilité conditionnelle d'être une femme étant donné qu'elle est démocrate.
P(Democrat & Female) = P(Democrat) * P(Female | Democrat)
Nous pourrions calculer exactement la même chose, de la manière inverse :
P(Democrat & Female) = P(Female) * P(Democrat | Female)
Comprendre la règle de Bayes
Conceptuellement, il s'agit d'un moyen de passer de P(Preuve|Résultat connu) à P(Résultat|Preuve connue). Souvent, nous savons à quelle fréquence une preuve particulière est observée, compte tenu d'un résultat connu . Nous devons utiliser ce fait connu pour calculer l'inverse, pour calculer la probabilité de ce que résultat obtenu compte tenu de l'évidence.
P(résultat étant donné que nous connaissons certaines preuves) = P(preuve étant donné que nous connaissons le résultat) multiplié par la Prob(résultat), mis à l'échelle par la P(preuve).
L'exemple classique pour comprendre la règle de Bayes :
Probability of Disease D given Test-positive =
P(Test is positive|Disease) * P(Disease)
_______________________________________________________________
(scaled by) P(Testing Positive, with or without the disease)
Tout ceci n'était qu'un préambule, pour en venir à Naive Bayes.
Se rendre à "Naive Bayes
Jusqu'à présent, nous n'avons parlé que d'une seule pièce à conviction. En réalité, nous devons prédire un résultat étant donné preuves multiples. Dans ce cas, les calculs deviennent très compliqués. Pour contourner cette complication, une approche consiste à "découpler" plusieurs éléments de preuve et à traiter chacun d'entre eux comme indépendant. Cette approche est la raison pour laquelle on appelle cela naïf Bayes.
P(Outcome|Multiple Evidence) =
P(Evidence1|Outcome) * P(Evidence2|outcome) * ... * P(EvidenceN|outcome) * P(Outcome)
scaled by P(Multiple Evidence)
Beaucoup de gens choisissent de s'en souvenir comme :
P(Likelihood of Evidence) * Prior prob of outcome
P(outcome|evidence) = _________________________________________________
P(Evidence)
Remarquez quelques éléments de cette équation :
- Si la probabilité (preuve|résultat) est de 1, alors nous ne faisons que multiplier par 1.
- Si la probabilité (une preuve particulière|résultat) est égale à 0, alors la probabilité entière devient égale à 0. Si vous voyez des preuves contradictoires, nous pouvons exclure ce résultat.
- Comme nous divisons tout par P(Evidence), nous pouvons même nous passer de le calculer.
- L'intuition derrière la multiplication par le avant est telle que nous accordons une forte probabilité aux résultats les plus courants, et une faible probabilité aux résultats peu probables. C'est ce qu'on appelle aussi
base rates
et ils sont un moyen de mettre à l'échelle nos probabilités prédites.
Comment appliquer NaiveBayes pour prédire un résultat ?
Il suffit d'appliquer la formule ci-dessus pour chaque résultat possible. Puisque nous essayons de classer chaque résultat est appelé un class
et il a un class label.
Notre travail consiste à examiner les preuves, à considérer la probabilité qu'il s'agisse de telle ou telle classe, et à attribuer une étiquette à chaque entité. Encore une fois, nous adoptons une approche très simple : La classe qui a la probabilité la plus élevée est déclarée "gagnante" et l'étiquette de cette classe est attribuée à cette combinaison de preuves.
Exemple de fruit
Essayons de le faire sur un exemple pour améliorer notre compréhension : Le PO a demandé un exemple d'identification de "fruit".
Disons que nous avons des données sur 1000 fruits. Ils se trouvent être Banane , Orange ou un Autres fruits . Nous connaissons 3 caractéristiques de chaque fruit :
- Qu'il s'agisse de Long
- Qu'il s'agisse de Sweet and
- Si sa couleur est Jaune.
C'est notre "ensemble d'entraînement". Nous allons l'utiliser pour prédire le type de n'importe quel nouveau les fruits que nous rencontrons.
Type Long | Not Long || Sweet | Not Sweet || Yellow |Not Yellow|Total
___________________________________________________________________
Banana | 400 | 100 || 350 | 150 || 450 | 50 | 500
Orange | 0 | 300 || 150 | 150 || 300 | 0 | 300
Other Fruit | 100 | 100 || 150 | 50 || 50 | 150 | 200
____________________________________________________________________
Total | 500 | 500 || 650 | 350 || 800 | 200 | 1000
___________________________________________________________________
Nous pouvons pré-calculer beaucoup de choses sur notre collection de fruits.
Les probabilités dites "préalables". (Si nous ne connaissions aucun des attributs du fruit, ce serait notre estimation). base rates.
P(Banana) = 0.5 (500/1000)
P(Orange) = 0.3
P(Other Fruit) = 0.2
Probabilité d'une "évidence"
p(Long) = 0.5
P(Sweet) = 0.65
P(Yellow) = 0.8
Probabilité de la "vraisemblance"
P(Long|Banana) = 0.8
P(Long|Orange) = 0 [Oranges are never long in all the fruit we have seen.]
....
P(Yellow|Other Fruit) = 50/200 = 0.25
P(Not Yellow|Other Fruit) = 0.75
Étant donné un fruit, comment le classer ?
Disons que l'on nous donne les propriétés d'un fruit inconnu et que l'on nous demande de le classer. On nous dit que le fruit est long, sucré et jaune. S'agit-il d'une banane ? Est-ce une orange ? Ou est-ce un autre fruit ?
Nous pouvons simplement calculer les chiffres pour chacune des trois issues, une par une. Ensuite, nous choisissons la probabilité la plus élevée et " classons " notre fruit inconnu comme appartenant à la classe ayant la probabilité la plus élevée sur la base de nos preuves antérieures (notre ensemble d'entraînement de 1000 fruits) :
P(Banana|Long, Sweet and Yellow)
P(Long|Banana) * P(Sweet|Banana) * P(Yellow|Banana) * P(banana)
= _______________________________________________________________
P(Long) * P(Sweet) * P(Yellow)
= 0.8 * 0.7 * 0.9 * 0.5 / P(evidence)
= 0.252 / P(evidence)
P(Orange|Long, Sweet and Yellow) = 0
P(Other Fruit|Long, Sweet and Yellow)
P(Long|Other fruit) * P(Sweet|Other fruit) * P(Yellow|Other fruit) * P(Other Fruit)
= ____________________________________________________________________________________
P(evidence)
= (100/200 * 150/200 * 50/200 * 200/1000) / P(evidence)
= 0.01875 / P(evidence)
Par une marge écrasante ( 0.252 >> 0.01875
), nous classons ce fruit sucré/long/jaune comme étant probablement une banane.
Pourquoi le classificateur de Bayes est-il si populaire ?
Regardez ce que ça donne au final. Juste un peu de comptage et de multiplication. Nous pouvons pré-calculer tous ces termes, et ainsi la classification devient facile, rapide et efficace.
Let z = 1 / P(evidence).
Maintenant, nous calculons rapidement les trois quantités suivantes.
P(Banana|evidence) = z * Prob(Banana) * Prob(Evidence1|Banana) * Prob(Evidence2|Banana) ...
P(Orange|Evidence) = z * Prob(Orange) * Prob(Evidence1|Orange) * Prob(Evidence2|Orange) ...
P(Other|Evidence) = z * Prob(Other) * Prob(Evidence1|Other) * Prob(Evidence2|Other) ...
Attribuez l'étiquette de classe du nombre le plus élevé, et vous avez terminé.
Malgré son nom, Naive Bayes s'avère excellent dans certaines applications. La classification de textes est l'un des domaines où il brille vraiment.
J'espère que cela vous aidera à comprendre les concepts de l'algorithme Naive Bayes.
19 votes
C'est assez facile si vous comprenez le théorème de Bayes. Si vous n'avez rien lu sur le théorème de Bayes, essayez ce lien. yudkowsky.net/rational/bayes .
23 votes
NOTE : La réponse acceptée ci-dessous n'est pas un exemple traditionnel pour Naïve Bayes. Il s'agit plutôt d'une mise en œuvre de k Nearest Neighbor. Lire en conséquence.
0 votes
Voici une description rapide et visuelle du théorème de Bayes par Oscar Bonilla. oscarbonilla.com/2009/05/visualiser-bayes-theorem
2 votes
Eh bien, si l'on voit un graphique avec quelques points, cela ne signifie pas vraiment qu'il s'agit de KNN :) La façon dont vous calculez les probabilités dépend de vous. Naive Bayes les calcule en utilisant les antériorités multipliées par la vraisemblance, c'est ce que Yavar a montré dans sa réponse. La façon d'arriver à ces probabilités n'est pas vraiment importante ici. La réponse est tout à fait correcte et je n'y vois aucun problème.
2 votes
Je vote pour clore cette question parce que Les questions sur la théorie de l'apprentissage automatique (ML) sont hors sujet sur Stack Overflow - candidat à l'emballage cadeau pour le Cross-Validated