Classification bayésienne naïve comment ça marche?

lovely analytics classification bayésienne naive.png

Et si on s’intéressait à un nouvel algorithme de machine learning pour essayer de comprendre comment ça marche. Aujourd’hui ce sera la classification bayésienne naïve (Naive Bayes classifier), un modèle assez simple, robuste et rapide qui se base sur le théorème de Bayes. Cet algorithme est à utiliser pour les problématiques de classement avec des variables explicatives qualitatives. On peut l’utiliser par exemple pour prédire la probabilité d’acheter un produit connaissant les habitudes d’achat dans le passé.

Avant de commencer, 2 petites explications sur le nom de cet algorithme  :

  • Pourquoi Bayésienne ? Parce que l’algorithme se base sur le théorème de Bayes qui nous dit que :      P(A|B)=P(B|A)*P(A)/P(B).
  • Pourquoi naïve? Parce que pour utiliser cet algorithme nous supposons que les variables explicatives sont indépendantes, ce qui dans la réalité est faux. Mais on l’accepte quand même pour pouvoir l’utiliser 🙂

Prenons un exemple (très simplifié bien sûr)  : on a des commentaires clients et on cherche à identifier rapidement les commentaires négatifs pour pouvoir recontacter les clients mécontents. On suppose qu’on a déjà fait un travail préalable pour identifier des mots et thématiques qui pouvaient avoir de l’importance et on caractérise chaque commentaire client en fonction de la présence / absence de ces thématiques.

Dans ce cas nous utilisons uniquement des variables qualitatives de type indicatrices (qui prennent des valeurs 0 ou 1) cela simplifie le calcul des probabilités conditionnelles. Si les variables étaient qualitatives, on choisirait une loi de probabilité et on calculerait ses caractéristiques. Par exemple pour une loi gaussienne, on calculerait l’espérance et la variance qui nous permettraient d’estimer ensuite les probabilités conditionnelles.

Dans notre exemple, voici ce que nous obtenons :

Etant donné un nouveau commentaire : « Délai d’attente trop important et mauvais rapport qualité prix », on cherche à déterminer la probabilité que ce commentaire soit positif vs négatif.

On cherche à calculer : p=P(Négatif | Délai=1, Prix=1, Vendeur=0, Responsable=0).

D’après le théorème de Bayes ça donne :

p=P(Négatif)*P(Délai=1, Prix=1, Vendeur=0, Responsable=0 | Négatif) / P(Délai=1, Prix=1, Vendeur=0, Responsable=0)

  • Le premier terme P(Négatif) est connu et vaut 0,5
  • Le 2nd terme P(Délai=1, Prix=1, Vendeur=0, Responsable=0 | Négatif) peut être décomposé plusieurs fois grâce à la probabilité conditionnelle et on obtient :

P(Délai=1|Négatif) * P(Prix=1 | Négatif, Délai=1) … *P(Responsable=0 | Négatif, Délai=1, Prix=1, Vendeur=0)
Et comme nous utilisons une hypothèse naïve qui suppose que les variables Délai, Prix, Vendeur et Responsable sont indépendantes, la formule ci-dessus se simplifie puisque P(Prix=1 | Négatif, Délai=1) devient P(Prix=1 | Négatif)
Finalement ce 2nd terme vaut : P(Délai=1|Négatif) *P(Prix=1 | Négatif) * P(Vendeur=0 | Négatif) * P(Responsable=0 | Négatif) et il suffit de lire les valeurs dans le tableau ci-dessus : 0,6 * 0,8 * (1-0,4) * (1-0,2) =0,23

  • Enfin le 3ème terme est une constante puisqu’il sera identique dans le calcul de la probabilité que ce commentaire soit positif ou négatif. Dans notre cas il vaut 0,12.

Finalement, la probabilité que ce commentaire soit Négatif est de 96%.

Et voilà 🙂 je trouve que c’est un algorithme qui change un peu de ce que nous avons l’habitude de voir. Comme il se base sur les probabilités conditionnelles il est assez intuitif. Dans la pratique il faut tester et comparer même si en général d’autres algorithmes plus robustes comme Random Forest ou Réseaux de neurones donnent de meilleurs résultats.

5 réflexions sur “Classification bayésienne naïve comment ça marche?”

  1. Bonjour,
    Je commence juste à essayer de comprendre comment fonctionne ce genre d’algorithme et je vous remercie pour votre blog, très clair !
    Il me reste néanmoins une question : dans le calcul p=P(Négatif | Délai=1, Prix=1, Vendeur=0, Responsable=0), après la décomposition en trois termes grâce au théorème de Bayes, je ne comprends pas comment vous avez déterminé le troisième terme (la constante valant 0.12). Pourriez-vous m’expliquer cette partie ?
    Merci d’avance,
    Louise

    1. Bonjour Louise,
      Merci pour ton commentaire, c’est vrai que j’aurais pu détailler un peu plus le calcul du 3e terme.
      En fait on peut le décomposer en P(Négatif)*P(Délai=1| Négatif) * P(Prix=1| Négatif) * P(Vendeur=0 | Négatif) * P(Responsable=0 | Négatif) + P(Positif)*P(Délai=1| Positif) * P(Prix=1| Positif) * P(Vendeur=0 | Positif) * P(Responsable=0 | Positif)
      Ce qui donne 0,5*0,4*0,2*(1-0,4)*(1-0,2) + 0,5*0,4*0,2*(1-0,8)*(1-0,6)
      Voilà d’où vient le 0,12 🙂

  2. Bonjour tres bien expliqué
    mais je veux savoir pourquoi nayes est meilleur quand les variables sont indépendantes ?
    merci

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *