Une explication simple de la classification Naive Bayes

547

J'ai du mal à comprendre le processus de Naive Bayes, et je me demandais si quelqu'un pouvait l'expliquer avec un simple processus étape par étape en anglais. Je comprends qu'il faut des comparaisons par les temps survenus comme une probabilité, mais je n'ai aucune idée de la façon dont les données de formation sont liées à l'ensemble de données réel.

Veuillez me donner une explication du rôle joué par l'ensemble de formation. Je donne ici un exemple très simple pour les fruits, comme la banane par exemple

training set---
round-red
round-orange
oblong-yellow
round-red

dataset----
round-red
round-orange
round-red
round-orange
oblong-yellow
round-red
round-orange
oblong-yellow
oblong-yellow
round-red
Jaggerjack
la source
18
C'est assez facile si vous comprenez le théorème de Bayes. Si vous n'avez pas lu le théorème de Bayes, essayez ce lien yudkowsky.net/rational/bayes .
Pincer le
1
veuillez expliquer votre exemple. pour la première ligne de votre ensemble d'entraînement: les rondes sont-elles classées en rouge ou les variables rondes et rouges sont-elles classées comme autre chose? si c'est le dernier, quelles sont les classifications pour chaque entrée de votre formation?
K Mehta
22
REMARQUE: La réponse acceptée ci-dessous n'est pas un exemple traditionnel pour Naïve Bayes. Il s'agit principalement de l'implémentation la plus proche voisine. Lisez en conséquence.
chmullig
1
@Jaggerjack: La réponse de RamNarasimhan est bien expliquée que la réponse acceptée.
Unmesha SreeVeni
2
Eh bien, si on voit un graphique avec quelques points, cela ne signifie pas vraiment que c'est KNN :) La façon dont vous calculez les probabilités dépend de vous. Naive Bayes le calcule en utilisant un a priori multiplié par la probabilité, c'est donc ce que Yavar a montré dans sa réponse. Comment arriver à ces probabilités n'est vraiment pas important ici. La réponse est absolument correcte et je n'y vois aucun problème.
avinash shah

Réponses:

672

Votre question, si je comprends bien, est divisée en deux parties, la première étant que vous avez besoin d'une meilleure compréhension du classificateur Naive Bayes et la deuxième étant la confusion entourant l'ensemble d'entraînement.

En général, tous les algorithmes d'apprentissage automatique doivent être formés pour des tâches d'apprentissage supervisé comme la classification, la prédiction, etc. ou pour des tâches d'apprentissage non supervisées comme le clustering.

Pendant l'étape de formation, les algorithmes sont enseignés avec un ensemble de données d'entrée particulier (ensemble de formation) afin que plus tard nous puissions les tester pour des entrées inconnues (qu'ils n'ont jamais vues auparavant) pour lesquelles ils peuvent classer ou prédire etc. (en cas de supervision apprentissage) en fonction de leur apprentissage. C'est sur cette base que la plupart des techniques d'apprentissage automatique comme les réseaux neuronaux, SVM, bayésien, etc.

Ainsi, dans un projet général d'apprentissage automatique, vous devez diviser votre ensemble d'entrée en un ensemble de développement (ensemble de formation + ensemble de test de développement) et un ensemble de test (ou ensemble d'évaluation). N'oubliez pas que votre objectif de base serait que votre système apprenne et classe de nouvelles entrées qu'il n'a jamais vues auparavant dans les ensembles de développement ou de test.

L'ensemble de test a généralement le même format que l'ensemble de formation. Cependant, il est très important que l'ensemble de test soit distinct du corpus de formation: si nous réutilisions simplement l'ensemble de formation comme ensemble de test, alors un modèle qui mémoriserait simplement son entrée, sans apprendre à généraliser à de nouveaux exemples, recevrait de manière trompeuse scores élevés.

En général, par exemple, 70% de nos données peuvent être utilisées comme cas d'ensemble de formation. N'oubliez pas non plus de partitionner l'ensemble d'origine dans les ensembles d'entraînement et de test au hasard .

J'en viens maintenant à votre autre question sur Naive Bayes.

Pour démontrer le concept de classification naïve de Bayes, considérons l'exemple ci-dessous:

entrez la description de l'image ici

Comme indiqué, les objets peuvent être classés comme GREENou RED. Notre tâche est de classer les nouveaux cas à mesure qu'ils arrivent, c'est-à-dire de décider à quelle étiquette de classe ils appartiennent, en fonction des objets existants.

Puisqu'il y a deux fois plus d' GREENobjets que RED, il est raisonnable de croire qu'un nouveau cas (qui n'a pas encore été observé) est deux fois plus susceptible d'avoir une appartenance GREENplutôt que RED. Dans l'analyse bayésienne, cette croyance est connue comme la probabilité antérieure. Les probabilités antérieures sont basées sur l'expérience antérieure, dans ce cas, le pourcentage GREENetRED objets, et souvent utilisés pour prédire les résultats avant qu'ils ne se produisent réellement.

Ainsi, nous pouvons écrire:

Probabilité antérieure deGREEN :number of GREEN objects / total number of objects

Probabilité antérieure deRED :number of RED objects / total number of objects

Puisqu'il y a un total d' 60objets, 40dont sont GREENet 20 RED, nos probabilités antérieures d'appartenance à une classe sont:

Probabilité antérieure pourGREEN :40 / 60

Probabilité antérieure de RED :20 / 60

Après avoir formulé notre probabilité antérieure, nous sommes maintenant prêts à classer un nouvel objet ( WHITEencercler dans le diagramme ci-dessous). Étant donné que les objets sont bien regroupés, il est raisonnable de supposer que plus GREEN(ou RED) d'objets au voisinage de X, plus les nouveaux cas appartiennent à cette couleur particulière. Pour mesurer cette probabilité, nous dessinons un cercle autour de X qui englobe un certain nombre (à choisir a priori) de points indépendamment de leurs étiquettes de classe. Ensuite, nous calculons le nombre de points dans le cercle appartenant à chaque étiquette de classe. À partir de cela, nous calculons la probabilité:

entrez la description de l'image ici

entrez la description de l'image ici

D'après l'illustration ci-dessus, il est clair que la probabilité de Xdonner GREENest plus petite que la probabilité de Xdonné RED, car le cercle englobe l' 1 GREENobjet et 3 REDceux. Donc:

entrez la description de l'image ici

entrez la description de l'image ici

Bien que les probabilités antérieures indiquent que Xpeuvent appartenir à GREEN(étant donné qu'il ya deux fois plus de par GREENrapport à RED) la probabilité indique le contraire; que l'appartenance à une classe d' Xest -à- RED(étant donné qu'il y a plus d' REDobjets dans les environs de Xque GREEN). Dans l'analyse bayésienne, la classification finale est produite en combinant les deux sources d'information, c'est-à-dire l'a priori et la vraisemblance, pour former une probabilité postérieure en utilisant la règle dite de Bayes (nommée d'après le révérend Thomas Bayes 1702-1761).

entrez la description de l'image ici

Enfin, nous classons X comme étant REDdonné que son appartenance à la classe atteint la plus grande probabilité postérieure.

Yavar
la source
39
cet algorithme n'est-il pas plus proche de k-voisins les plus proches?
Renaud
251
Cette réponse est déroutante - elle mélange KNN (k voisins les plus proches) et des bayes naïfs.
Michal Illich
7
La réponse se déroulait bien jusqu'à ce que la probabilité se présente. @Yavar a donc utilisé K-voisins les plus proches pour calculer la probabilité. Est-ce correct? Si tel est le cas, quelles sont les autres méthodes de calcul de la probabilité?
wrahool
1
Vous avez utilisé un cercle comme exemple de probabilité. J'ai lu sur les bayes naïves gaussiennes où la probabilité est gaussienne. Comment expliquer cela?
umair durrani
1
En fait, la réponse avec knn est correcte. Si vous ne connaissez pas la distribution et donc la densité de probabilité d'une telle distribution, vous devez en quelque sorte la trouver. Cela peut être fait via kNN ou Kernels. Je pense qu'il manque certaines choses. Vous pouvez cependant consulter cette présentation .
CS
1053

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 rateset 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 classet 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:

  1. Que ce soit long
  2. Que ce soit doux et
  3. 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.

Ram Narasimhan
la source
14
Merci pour l'explication très claire! Facilement l'un des meilleurs flottant sur le Web. Question: étant donné que chaque P (résultat / preuve) est multiplié par 1 / z = p (preuve) (ce qui, dans le cas du fruit, signifie que chacun est essentiellement la probabilité basée uniquement sur les preuves précédentes), serait-il correct de dire que z ne fait pas ça ne compte pas du tout pour Naïve Bayes? Ce qui signifierait donc que si, par exemple, on tombait sur un fruit long / sucré / jaune qui n'était pas une banane, il serait mal classé.
covariance
7
@ E.Chow Oui, vous avez raison en ce que le calcul z n'a pas d'importance pour Naive Bayes. (C'est une façon de mettre à l'échelle les probabilités entre 0 et 1.) Notez que z est le produit des probabilités de toutes les preuves disponibles. (C'est différent des priors qui est le tarif de base des cours.) Vous avez raison: si vous avez trouvé un fruit long / sucré / jaune qui n'est pas une banane, NB le classera incorrectement comme banane, sur la base de ceci ensemble d'entraînement. L'algorithme est une «meilleure estimation probabiliste basée sur des preuves» et il se classera donc parfois de manière erronée.
Ram Narasimhan
1
@Jasper Dans le tableau, il y a un total de 200 "Autres fruits" et 50 d'entre eux sont jaunes. Donc, étant donné que le fruit est "Autre fruit", l'univers est 200. 50 d'entre eux sont jaunes. D'où 50/200. Notez que 800 est le nombre total de fruits jaunes. Donc, si nous voulions du P (autre fruit / jaune), nous ferions ce que vous proposez: 50/800.
Ram Narasimhan
3
Explication absolument géniale. Je ne pouvais pas comprendre cet algorithme des articles et des livres académiques. Parce que l'explication ésotérique est un style d'écriture généralement accepté peut-être. C'est tout, et c'est si simple. Merci.
Suat Atan PhD
3
Pourquoi les probabilités ne totalisent-elles pas 1? La preuve est de 0,26 dans l'exemple (500/100 * 650/1000 * 800/1000), et donc le P final (banane | ...) = 0,252 / 0,26 = 0,969, et le P (autre | ...) = 0,01875 / 0,26 = 0,072. Ensemble, ils totalisent 1,04!
Mauricio
18

Ram Narasimhan a très bien expliqué le concept ci-dessous est une explication alternative à travers l'exemple de code de Naive Bayes en action
Il utilise un exemple de problème de ce livre à la page 351
Ceci est l'ensemble de données que nous utiliserons dans l'ensemble de données ci-dessus si nous donnons l'hypothèse = alors quelle est la probabilité qu'il achètera ou n'achètera pas un ordinateur. Le code ci-dessous répond exactement à cette question. Créez simplement un fichier nommé et collez le contenu suivant.
entrez la description de l'image ici
{"Age":'<=30', "Income":"medium", "Student":'yes' , "Creadit_Rating":'fair'}

new_dataset.csv

Age,Income,Student,Creadit_Rating,Buys_Computer
<=30,high,no,fair,no
<=30,high,no,excellent,no
31-40,high,no,fair,yes
>40,medium,no,fair,yes
>40,low,yes,fair,yes
>40,low,yes,excellent,no
31-40,low,yes,excellent,yes
<=30,medium,no,fair,no
<=30,low,yes,fair,yes
>40,medium,yes,fair,yes
<=30,medium,yes,excellent,yes
31-40,medium,no,excellent,yes
31-40,high,yes,fair,yes
>40,medium,no,excellent,no

Voici le code les commentaires expliquent tout ce que nous faisons ici! [python]

import pandas as pd 
import pprint 

class Classifier():
    data = None
    class_attr = None
    priori = {}
    cp = {}
    hypothesis = None


    def __init__(self,filename=None, class_attr=None ):
        self.data = pd.read_csv(filename, sep=',', header =(0))
        self.class_attr = class_attr

    '''
        probability(class) =    How many  times it appears in cloumn
                             __________________________________________
                                  count of all class attribute
    '''
    def calculate_priori(self):
        class_values = list(set(self.data[self.class_attr]))
        class_data =  list(self.data[self.class_attr])
        for i in class_values:
            self.priori[i]  = class_data.count(i)/float(len(class_data))
        print "Priori Values: ", self.priori

    '''
        Here we calculate the individual probabilites 
        P(outcome|evidence) =   P(Likelihood of Evidence) x Prior prob of outcome
                               ___________________________________________
                                                    P(Evidence)
    '''
    def get_cp(self, attr, attr_type, class_value):
        data_attr = list(self.data[attr])
        class_data = list(self.data[self.class_attr])
        total =1
        for i in range(0, len(data_attr)):
            if class_data[i] == class_value and data_attr[i] == attr_type:
                total+=1
        return total/float(class_data.count(class_value))

    '''
        Here we calculate Likelihood of Evidence and multiple all individual probabilities with priori
        (Outcome|Multiple Evidence) = P(Evidence1|Outcome) x P(Evidence2|outcome) x ... x P(EvidenceN|outcome) x P(Outcome)
        scaled by P(Multiple Evidence)
    '''
    def calculate_conditional_probabilities(self, hypothesis):
        for i in self.priori:
            self.cp[i] = {}
            for j in hypothesis:
                self.cp[i].update({ hypothesis[j]: self.get_cp(j, hypothesis[j], i)})
        print "\nCalculated Conditional Probabilities: \n"
        pprint.pprint(self.cp)

    def classify(self):
        print "Result: "
        for i in self.cp:
            print i, " ==> ", reduce(lambda x, y: x*y, self.cp[i].values())*self.priori[i]

if __name__ == "__main__":
    c = Classifier(filename="new_dataset.csv", class_attr="Buys_Computer" )
    c.calculate_priori()
    c.hypothesis = {"Age":'<=30', "Income":"medium", "Student":'yes' , "Creadit_Rating":'fair'}

    c.calculate_conditional_probabilities(c.hypothesis)
    c.classify()

production:

Priori Values:  {'yes': 0.6428571428571429, 'no': 0.35714285714285715}

Calculated Conditional Probabilities: 

{
 'no': {
        '<=30': 0.8,
        'fair': 0.6, 
        'medium': 0.6, 
        'yes': 0.4
        },
'yes': {
        '<=30': 0.3333333333333333,
        'fair': 0.7777777777777778,
        'medium': 0.5555555555555556,
        'yes': 0.7777777777777778
      }
}

Result: 
yes  ==>  0.0720164609053
no  ==>  0.0411428571429

J'espère que cela aide à mieux comprendre le problème

paix

Sayed Zainul Abideen
la source
18

Naive Bayes: Naive Bayes relève de la supervision de l'apprentissage automatique qui faisait autrefois la classification des ensembles de données. Il est utilisé pour prédire les choses en fonction de ses connaissances antérieures et de ses hypothèses d'indépendance.

Ils appellent ça naïf parce que ses hypothèses (il suppose que toutes les fonctionnalités de l'ensemble de données sont également importantes et indépendantes) sont vraiment optimistes et rarement vraies dans la plupart des applications du monde réel.

C'est l'algorithme de classification qui prend la décision pour l'ensemble de données inconnu. Il est basé sur le théorème de Bayes qui décrit la probabilité d'un événement en fonction de ses connaissances antérieures.

Le diagramme ci-dessous montre comment fonctionne Bayes naïf

entrez la description de l'image ici

Formule pour prédire NB:

entrez la description de l'image ici

Comment utiliser l'algorithme Naive Bayes?

Prenons un exemple de la façon dont les woks NB

Étape 1: Tout d'abord, nous découvrons la probabilité de tableau qui montre la probabilité de oui ou non dans le diagramme ci-dessous. Étape 2: Trouvez la probabilité postérieure de chaque classe.

entrez la description de l'image ici

Problem: Find out the possibility of whether the player plays in Rainy condition?

P(Yes|Rainy) = P(Rainy|Yes) * P(Yes) / P(Rainy)

P(Rainy|Yes) = 2/9 = 0.222
P(Yes) = 9/14 = 0.64
P(Rainy) = 5/14 = 0.36

Now, P(Yes|Rainy) = 0.222*0.64/0.36 = 0.39 which is lower probability which means chances of the match played is low.

Pour plus de référence, reportez-vous à ce blog.

Reportez-vous à GitHub Repository Naive-Bayes-Examples

jitsm555
la source
14

J'essaie d'expliquer la règle de Bayes avec un exemple.

Quelle est la chance qu'une personne choisie au hasard dans la société soit un fumeur?

Vous pouvez répondre à 10%.

Maintenant, si la personne est un homme et 15 vieux ans?

Ce ne peut pas être 60%, alors que nous savons que le pourcentage de fumeurs était très faible. Il ne peut pas non plus être inférieur à 10%. 15 ou 20% sont de meilleures suppositions.

En fait, nous essayons de mettre à jour la supposition initiale avec de nouveaux éléments de preuve ( P(smoker) vs. P(smoker | evidence)). La règle de Bayes est un moyen de connecter ces deux probabilités.

P(smoker | evidence) = P(smoker)* p(evidence | smoker)/P(evidence)

Chaque preuve peut augmenter ou diminuer cette chance. Par exemple, le fait qu'il soit un homme peut augmenter les chances, à condition que ce pourcentage (étant un homme) parmi les non-fumeurs soit plus faible. En d'autres termes, être un homme doit être un bon indicateur d'être un fumeur plutôt qu'un non-fumeur.

Nous pouvons également montrer cette contribution d'une autre manière. Pour chaque entité, vous pouvez comparer la commune (probabilité) de cette entité dans les conditions données avec sa commune seule. ( P(f | x) vs. P(f)).

P(smoker | evidence) / P(smoker) = P(evidence | smoker)/P(evidence)

Par exemple, si nous savons que 90% des fumeurs sont des hommes, il ne suffit pas encore de dire si être un homme est un indicateur de fumeur ou non. Par exemple, si la probabilité d'être un homme dans la société est également de 90%, alors savoir que quelqu'un est un homme ne nous aide pas ((90% / 90%) = 1. Mais si les hommes contribuent à 40% de la société, mais à 90% des fumeurs, alors savoir que quelqu'un est un homme augmente les chances d'être fumeur(90% / 40%) = 2.25 , donc cela augmente la supposition initiale (10%) de 2,25, soit 22,5%.

Cependant, si la probabilité d'être un homme était de 95% dans la société, alors indépendamment du fait que le pourcentage d'hommes parmi les fumeurs est élevé (90%)! la preuve que quelqu'un est un homme diminue les chances qu'il soit fumeur!(90% / 95%) = 0.95).

Donc nous avons:

P(smoker | f1, f2, f3,... ) = P(smoker) * contribution of f1* contribution of f2 *... =
P(smoker)* 
(P(being a man | smoker)/P(being a man))*
(P(under 20 | smoker)/ P(under 20))

Notez que dans cette formule nous avons supposé qu'être un homme et avoir moins de 20 ans sont des caractéristiques indépendantes, nous les avons donc multipliées, cela signifie que savoir que quelqu'un a moins de 20 ans n'a aucun effet sur le fait de deviner qu'il est un homme ou une femme. Mais ce n'est peut-être pas vrai, par exemple peut-être que la plupart des adolescents dans une société sont des hommes ...

Pour utiliser cette formule dans un classificateur

Le classificateur est donné avec certaines caractéristiques (être un homme et avoir moins de 20 ans) et il doit décider s'il est fumeur ou non (ce sont deux classes). Il utilise la formule ci-dessus pour calculer la probabilité de chaque classe sous la preuve (caractéristiques), et il affecte la classe avec la probabilité la plus élevée à l'entrée. Pour fournir les probabilités requises (90%, 10%, 80% ...) il utilise l'ensemble d'apprentissage. Par exemple, il compte les personnes de l'ensemble de formation qui sont des fumeurs et découvrent qu'elles contribuent à 10% de l'échantillon. Ensuite, pour les fumeurs, vérifie combien d'entre eux sont des hommes ou des femmes .... combien sont au-dessus de 20 ou moins de 20 .... En d'autres termes, il essaie de construire la distribution de probabilité des caractéristiques pour chaque classe en fonction de la formation Les données.

Ahmad
la source