Je me rends compte que c'est une vieille question, avec une réponse établie. La raison pour laquelle je poste est que la réponse acceptée comporte de nombreux éléments de k-NN ( k -voisins les plus proches), un algorithme différent.
K-NN et NaiveBayes sont des algorithmes de classification. Conceptuellement, k-NN utilise l'idée de «proximité» pour classer de nouvelles entités. Dans k-NN, la «proximité» est modélisée avec des idées telles que la distance euclidienne ou la distance cosinusoïdale. En revanche, dans NaiveBayes, le concept de «probabilité» est utilisé pour classer de nouvelles entités.
Puisque la question concerne Naive Bayes, voici comment je décrirais les idées et les étapes à quelqu'un. Je vais essayer de le faire avec le moins d'équations possible et en anglais le plus simple possible.
Premièrement, la probabilité conditionnelle et la règle de Bayes
Avant que quelqu'un puisse comprendre et apprécier les nuances de Naive Bayes, il doit d'abord connaître quelques concepts connexes, à savoir l'idée de probabilité conditionnelle et la règle de Bayes. (Si vous connaissez ces concepts, passez à 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 s'est déjà produit.
Disons qu'il y a un résultat O. Et des preuves E. D'après la façon dont ces probabilités sont définies: La probabilité d'avoir à la fois le résultat O et la preuve E est: (probabilité d'occurrence) multipliée par la (probabilité de E étant donné que O est arrivé)
Un exemple pour comprendre la probabilité conditionnelle:
Disons que nous avons une collection de sénateurs américains. Les sénateurs pourraient être démocrates ou républicains. Ce sont aussi des hommes ou des femmes.
Si nous choisissons un sénateur complètement au hasard, quelle est la probabilité que cette personne soit une femme démocrate? La probabilité conditionnelle peut nous aider à répondre à cette question.
Probabilité de (démocrate et femme sénateur) = Prob (le sénateur est démocrate) multiplié par la probabilité conditionnelle d'être une femme étant donné qu'ils sont démocrates.
P(Democrat & Female) = P(Democrat) * P(Female | Democrat)
On pourrait calculer exactement la même chose, en sens 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 (Evidence | Known Outcome) à P (Outcome | Known Evidence). Souvent, nous savons à quelle fréquence certaines preuves particulières sont observées, compte tenu d'un résultat connu . Nous devons utiliser ce fait connu pour calculer l'inverse, pour calculer les chances que ce résultat se produise , compte tenu des preuves.
P (Résultat étant donné que nous connaissons certaines preuves) = P (Preuve étant donné que nous connaissons le Résultat) fois Prob (Résultat), mis à l'échelle par le P (Preuve)
L'exemple classique pour comprendre la règle de Bayes:
Probability of Disease D given Test-positive =
Prob(Test is positive|Disease) * P(Disease)
_______________________________________________________________
(scaled by) Prob(Testing Positive, with or without the disease)
Maintenant, tout cela n'était qu'un préambule, pour arriver à Naive Bayes.
Se rendre à Naive Bayes
Jusqu'à présent, nous n'avons parlé que d'un élément de preuve. En réalité, nous devons prédire un résultat compte tenu de plusieurs preuves. Dans ce cas, les calculs deviennent très compliqués. Pour contourner cette complication, une approche consiste à «dissocier» plusieurs éléments de preuve et à traiter chacun des éléments de preuve comme indépendant. Cette approche est la raison pour laquelle on appelle cela des Bayes naïfs .
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 à propos de cette équation:
- Si le Prob (évidence | résultat) est 1, alors nous multiplions simplement par 1.
- Si le Prob (une preuve particulière | résultat) est 0, alors le prob entier. devient 0. Si vous voyez des preuves contradictoires, nous pouvons exclure ce résultat.
- Puisque nous divisons tout par P (Preuve), nous pouvons même nous en tirer sans le calculer.
- L'intuition derrière la multiplication par l'a priori est telle que nous donnons une probabilité élevée à des résultats plus courants et une faible probabilité à des résultats improbables. Celles-ci sont également appelées
base rates
et constituent un moyen de mettre à l'échelle nos probabilités prédites.
Comment appliquer NaiveBayes pour prédire un résultat?
Exécutez simplement 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 cette classe ou de cette classe, et d'attribuer une étiquette à chaque entité. Encore une fois, nous adoptons une approche très simple: la classe qui a la plus forte probabilité est déclarée «gagnante» et cette étiquette de classe est attribuée à cette combinaison de preuves.
Exemple de fruits
Essayons un exemple pour améliorer notre compréhension: le PO a demandé un exemple d'identification «fruit».
Disons que nous avons des données sur 1000 morceaux de fruits. Ils se trouvent être de la banane , de l' orange ou d' autres fruits . Nous connaissons 3 caractéristiques de chaque fruit:
- Que ce soit long
- Que ce soit doux et
- Si sa couleur est jaune.
Ceci est notre «ensemble d'entraînement». Nous l'utiliserons pour prédire le type de tout nouveau fruit que nous rencontrerons.
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 "antérieures". (Si nous ne connaissions aucun des attributs du fruit, ce serait notre supposition.) Ce sont nosbase rates.
P(Banana) = 0.5 (500/1000)
P(Orange) = 0.3
P(Other Fruit) = 0.2
Probabilité de "preuves"
p(Long) = 0.5
P(Sweet) = 0.65
P(Yellow) = 0.8
Probabilité de "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 qu'on nous a demandé de le classer. On nous dit que le fruit est long, doux et jaune. Est-ce une banane? Est-ce une orange? Ou s'agit-il d'un autre fruit?
Nous pouvons simplement exécuter les chiffres pour chacun des 3 résultats, un par un. Ensuite, nous choisissons la probabilité la plus élevée et «classons» nos fruits inconnus comme appartenant à la classe qui avait la probabilité la plus élevée sur la base de nos preuves antérieures (notre ensemble de formation 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 doux / long / jaune comme susceptible d'être une banane.
Pourquoi Bayes Classifier est-il si populaire?
Regardez à quoi cela revient finalement. Juste quelques comptages et multiplications. 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 le libellé de classe de celui qui est le plus élevé, et vous avez terminé.
Malgré son nom, Naive Bayes s'avère excellent dans certaines applications. La classification de texte est un domaine où elle brille vraiment.
J'espère que cela vous aidera à comprendre les concepts derrière l'algorithme Naive Bayes.