0% ont trouvé ce document utile (0 vote)
25 vues7 pages

Algorithme Naïve Bayes en Modélisation Statistique

Transféré par

mido473mi3
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
25 vues7 pages

Algorithme Naïve Bayes en Modélisation Statistique

Transféré par

mido473mi3
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Modélisation Statistique

Algorithme Naïve Bayes

La méthode OneR utilise un seul attribut comme base de décision. Elle choisit parmi tous les
attributs présents celui qui performe le mieux.
Une technique tout aussi simple, est d’utiliser tous les attributs, et de leur permettre de
contribuer chacun à la décision de manière équitable et indépendante.
Donc, on assumera que les attributs sont :

 De même importance
 Statistiquement indépendant
Dans la réalité ceci n’est cependant pas toujours vrai. Les attributs ne sont ni de même
importance, ni indépendant.
Malgré cela, cette approche simple, fonctionne étonnement bien, dans la pratique.
C’est un classifieur supervisé de type statistique.
Ses prédictions sont de type probabiliste.
Il est basé sur le théorème de Bayes.
Ce simple classifieur bayesien dit Classifieur Naïve Bayes, a des bonnes performances
comparable à celle des Arbres de décision ou des réseaux de neurones.
Il est appelé Naïve parce qu’il croit à l’indépendance des attributs.
Il a aussi démontré une rapidité couplée avec une précision sur les bases de données
volumineuses.
Règle de Bayes :

Le théorème de Bayes sur lequel est basé l’algorithme Naïve Bayes, nous permet de calculer
les probabilités des différentes classes possibles (H comme hypothèses) à partir de
probabilités estimées à partir de la table d’apprentissage (P(EIH), P(E), P(H)).
H : une des classes possibles ; P(H) : sa probabilité (dans le tableau), en général, calculable à
partir du tableau.
P(HIE) : la probabilité de la classe H conditionnée par les Evènements E (les valeurs des
attributs.
P(EIH) : Probabilité des évènements E (e1,e2, …,en) étant donné la classe H, calculable à
partir du tableau.
Reprenons notre dataset « Data weather » symbolique, et essayons d’expliquer comment ça
fonctionne.

Comme pour OneR, et tous les algorithmes d’apprentissage, essayons d’apprendre à partir
de ces données.
Construisons un tableau récapitulatif des fréquences (statistiques) et probabilités de chaque
valeur d’attribut, et de sa probabilité pour chaque Classe.

Outlook Temperature Humidity Windy Play


Yes No Yes No Yes No Yes No Yes No
Sunny 2 3 Hot 2 2 High 3 4 False 6 2 9 5
Overcast 4 0 Mild 4 2 Normal 6 1 True 3 3
Rainy 3 2 Cool 3 1
Sunny 2/9 3/5 Hot 2/9 2/5 High 3/9 4/5 False 6/9 2/5 9/14 5/14
Overcast 4/9 0/5 Mild 4/9 2/5 Normal 6/9 1/5 True 3/9 3/5
Rainy 3/9 2/5 Cool 3/9 1/5

Essayons d’expliquer ces valeurs pour Outlook, et vous continuerez pour les autres si vous
voulez apprendre.
Pour l’attribut Outlook et pour la classe Play = yes dans ce tableau d’apprentissage, nous
comptons 2 sunny ; 4 overcast ; et 3 rainy. oui ou non ?
Pour la classe Play = no, nous comptons 3 sunny ; 0 overcast ; et 2 rainy
Ça c’était les statistiques (les fréquences). Avec ces mêmes statistiques, calculons les
probabilités conditionnées. Sur la dernière ligne du tableau, vous trouvez que la probabilité
de sunny étant donné que la classe est yes : P(Outlook=sunnyIPlay=yes) = 2/9 (le 2 c’est le
nombre de sunny pour la classe, et le 9 c’est le nombre total de possibilités 2+4+3).
P(Outlook= overcastI Play= yes)= 4/9 ; P(Outlook= rainyIPlay=yes) = 3/9 ;
P(Outlook=sunnyIPlay=no) = 3/5 ; P(Outlook= overcastI Play= no)= 0/5 ;
P(Outlook= rainyIPlay=no) = 2/5 ;
Pour la classe Play ; nous apprenons du tableau que sur les 14 jours (instances) ; on a joué
(yes) 9 fois, et on n’a pas joué (no) 5 fois. Ce qui donne une probabilité 9/14 pour yes et 5/14
pour no.
Un premier exercice, si vous voulez faire n’importe quel exercice, est de retrouver les valeurs
de ce tableau.
Comment ce tableau et le théorème de Bayes vont nous aider à trouver la classe de toutes
nouvelles instances (car n’oubliez pas que c’est là, l’objectif de « l’apprentissage
automatique »).
Commençons par un exemple, nous expliquerons le pourquoi plus tard.
Quelle est la classe de l’instance :
Outlook = sunny ; Temperature = cool ; Humidity = high ; Windy = true ;
Calculons les vraisemblances de la classe yes et de la classe no :
Pour ‘yes’ = 2/9 * 3/9 * 3/9 * 3/9 * 9/14 = 0,0053
P(sunnyIyes) P(coolIyes) P(highIyes) P(trueIyes) P(yes)
Pour ‘no’ = 3/5 * 1/5 * 4/5 * 3/5 * 5/14 = 0,0206
P(sunnyIno) P(coolIno) P(highIno) P(trueIno) P(no)
Nous convertirons ces valeurs en probabilité par Normalisation :
P(‘yes’) = 0,0053/(0,0053+0,0206) =0,205
P(‘no’) = 0,0206/(0,0053+0,0206) =0,795
Conclusion la classe de cette instance est no.
Nous avons rien fait d’autre, qu’appliquer la regle de Bayes :
P(EIH) ∗ P(H)
𝑃(𝐻𝐼𝐸) =
P(E)

E= (e1,e2,e3,e4) =(sunny,cool,high,true)
P(EIyes)=P(sunnyIyes)*P(coolIyes)*P(highIyes)*P(trueIyes)
P(sunnyIyes) ∗ P(coolIyes) ∗ P(highIyes) ∗ P(trueIyes) ∗ P(yes)
𝑃(𝑦𝑒𝑠𝐼𝐸) =
P(E)
2/9 ∗ 3/9 ∗ 3/9 ∗ 3/9 ∗ 9/14
𝑃(𝑦𝑒𝑠𝐼𝐸) =
P(E)

3/5 ∗ 1/5 ∗ 4/5 ∗ 3/5 ∗ 5/14


𝑃(𝑛𝑜𝐼𝐸) =
P(E)

Le P(E) non calculé, ne change rien (valeur positive) et disparaitra lors de la normalisation.

Le problème de la fréquence zéro.


Un problème avec l’algorithme Naïve Bayes surgi lorsqu’une valeur particulière d’attribut
n’apparait pas dans les exemples de la base d’apprentissage, pour toutes les classes.
Vous avez un exemple de cette situation avec la valeur overcast de l’attribut Outlook qui
apparait dans la base 4 fois avec la classe yes, et jamais avec la classe no.
Donc, toute instance à classer en utilisant NB, si son attribut Outlook est overcast, va être
classée yes. Pourquoi ?
Parce que lorsqu’on va calculer la probabilité du yes, et celle du no, comme cela est
demandé (d’ailleurs faite le en prenant n’importe quelle instance avec outlook = overcast),
On aura la P(overcast/no)=0 (c’est dans le tableau), et multiplier par 0, donne 0 ;
Donc, la P(no) = 0, et P(yes)=1.
On veut éviter qu’une valeur d’attribut nulle annule tout le reste.
La solution ? Il n’y aura pas de fréquence 0 ! Comment ? On initialisera nos compteurs à 1.
Ce qui revient à ajouter 1 à toute les fréquences. On appellera cette solution, l’estimateur de
laplace.
Voici notre nouveau tableau : Il nous évite le problème de la fréquence 0.

Outlook Temperature Humidity Windy Play


Yes No Yes No Yes No Yes No Yes No
Sunny 3 4 Hot 3 3 High 4 5 False 7 3 9 5
Overcast 5 1 Mild 5 3 Normal 7 2 True 4 4
Rainy 4 3 Cool 4 2
Sunny 3/12 4/8 Hot 3/12 3/8 High 4/11 5/7 False 7/11 3/7 9/14 5/14
Overcast5/12 1/8 Mild 5/12 3/8 Normal 7/11 2/7 True 4/11 4/7
Rainy 4/12 3/8 Cool 4/12 2/8
Les valeurs manquantes.
L’algorithme Naïve Bayes n’a aucun problème avec les valeurs manquantes que ce soit dans
la table d’apprentissage lors de l’apprentissage, ou dans l’instance à classer.
Lors du calcul des fréquences, une valeur manquante n’est évidemment pas comptabilisée.
Pour l’étape de classification, considérons l’exemple suivant et trouvons sa classe en utilisant
le 1er tableau (sans l’estimateur de Laplace):
Outlook = ? ; Temperature = cool ; Humidity = high ; Windy = true
Vraissemblance du ‘yes’ = 3/9*3/9*3/9*9/14= 0.0238
Vraissemblance du’no’= 1/5*4/5*3/5*5/14 = 0.0343
P(‘yes’) = 0.0238/(0.0238 +0.0343) = 41%
P(‘no’) = 0.0343/(0.0238 +0.0343) = 59%
La réponse est Play = no à 59%
On a tout simplement ignoré l’attribut Outlook.
Les valeurs numériques.
Avec les attributs de type numériques, comment va-t-on procéder pour déterminer la
probabilité de chaque classe. La règle de Bayes reste valable, mais comment gérer la
probabilité d’une valeur continue (sachant que définition, il existe une infinité de valeur
possible. Et ces valeurs suivent ils une loi de distribution ou sont-elles complétement
aléatoire.
Il y’ a toujours la possibilité de discrétiser comme on a fait pour l’algorithme OneR.
Une fois, les attributs numériques discrétisées, ont les traites comme des valeurs
symboliques évidement.
Sinon, on va supposer qu’ils suivent la loi normale de distribution, et on l’utilisera pour
déterminer la vraisemblance de chaque valeur numérique d’une instance à classer.
Si vous n’etes pas d’accord avec l’hypothèse par défaut d’une loi normale, vous n’avez qu’à
faire l’étude nécessaire pour connaitre exactement la loi suivi par cet attribut numérique, ce
qui n’est pas du ressort de ce cours.
Une foi l’hypothèse par défaut d’une loi normale acceptée, voilà comment on procède, en
utilisant la table data weather numérique (que vous avez déjà) :
Vous remarquerez que rien n’a changé pour les attributs symboliques.
Pour les attributs numériques, on a mis les valeurs respectives du ‘yes’ sous le yes, et du ‘no’
sous le no, respectivement pour les 2 attributs numériques Temperature et Humidity.
Une fois la loi Normale (Gauss) adoptée, il fallait calculer ses paramètres : la moyenne et
l’écart type. En anglais, The mean (μ)and standart deviation (std dev)( σ).
Les formules étant pour la moyenne et l’écart type :

L’écart type est la racine carrée de la variance.


A partir de là, on pourra utiliser la fonction de densité de la loi Normale qui est :

Si mes formules ne sont pas claires, vous les retrouverez facilement sur le net (wikipedia).
Retrouvez ces valeurs, comme premier exercice en recalculant la moyenne du ‘yes’
temperature, et l’ecart type, et ainsi de suite…
Ces valeurs sont correctes !!!!
Une fois le tableau revérifié, prenons un exemple :
Outlook = sunny ; Temperature = 66 ; Humidity = 90 ; Windy = true
Et cherchons sa classe ?
On appliquera le même principe que vu plus haut pour l’exemple précédent,
Mais, avant il faudra déterminer :
f(Temperature = 66/yes) qui remplacera P(Temperature = 66/yes)
f(Temperature = 66/no) qui remplacera P(Temperature = 66/no)
f(Humidity = 90/yes) qui remplacera P(Humidity = 90/yes)
f(Humidity = 90/no) qui remplacera P(Humidity = 90/no)
Il suffit pour cela d’utiliser la fonction de densité de la loi Normale précédemment donnée :

N’oubliez pas que : п = 3.14 et que μ et σ changent selon le cas (attribut et classe)
X n’est rien d’autre que la valeur de l’attribut dont vous calculez la vraissemblance.
Vous devrez avoir si vos calculs sont bons :
f(Temperature = 66/yes) = 0.034
f(Temperature = 66/no) = 0.0221
f(Humidity = 90/yes) = 0.0221
f(Humidity = 90/no) = 0.0381
En récupérant les autres valeurs du tableau on aura pour notre instance à classer :
Outlook = sunny ; Temperature = 66 ; Humidity = 90 ; Windy = true
Vraissemblance du ‘yes’ = 2/9 * 0.034 * 0.021 * 3/9 * 9/14 = 0.000036
Vraissemblance du ‘no’ = 3/5 * 0.021 * 0.0381 * 3/5 * 5/14 = 0.000108
P(‘yes’) = 0.000036/(0.000036+0.000108) = 25%
P(‘no’) = 0.000108/(0.000036+0.000108) = 75%
Donc, la classe de notre exemple Play = no à 75%
Remarque : les deux exemples vus dans ce cours ont des réponses proches. Pourquoi ?
La réponse aux TD.

Lisez le cours et relisez le, refaites les calculs et d’autres exemples de votre propres choix, si
vous voulez avoir le module avec 18. Demandez à vos camarades des promotions passées.
Dans mes examens, on trouve des notes de 0 à 18. Tout dépend de vos efforts (seulement).

Vous aimerez peut-être aussi