Accueil / Factory / Algos ML / Naive Bayes — factory / algos ML / apprentissage supervisé

NAIVE BAYES.

Un classifieur qui applique le théorème de Bayes en supposant, naïvement, que les variables sont indépendantes entre elles. Sur du texte, il suffit de compter les mots par classe. Il s'entraîne en une fraction de seconde, marche avec peu d'exemples et sert de référence à battre en classification de texte.

ClassificationTexteProbabilisteTrès rapideNiveau : débutant

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceTrès bon sur le texte, dépassé dès que les variables interagissent
InterprétabilitéLes mots les plus probables par classe se lisent directement
VitesseUn simple comptage : le plus rapide des classifieurs
Facilité de réglageUn seul paramètre de lissage, rarement critique
Tolérance aux données brutesTexte à vectoriser, mais peu sensible au volume de variables
EN 30 SECONDES

Un trieur de courrier expérimenté : « remboursement », « jamais reçu », « décevant » dans la même lettre, elle part directement au service réclamations.

1. On compte les mots par classe

Sur l'historique, on calcule la fréquence de chaque mot dans les avis négatifs et dans les autres. Un lissage évite qu'un mot jamais vu donne une probabilité nulle.

2. On multiplie les indices

Pour un nouvel avis, on multiplie les probabilités de ses mots dans chaque classe, comme si chaque mot était un indice indépendant. C'est l'hypothèse naïve.

3. On applique Bayes

On combine ce produit avec la fréquence de chaque classe dans l'historique. La classe la plus probable l'emporte.

LE CAS MÉTIER

service client · e-commerce / distribution / assurance
EN ENTRÉE

Le flux des avis clients

Une à trois phrases par avis, avec sur l'historique le sentiment déjà connu. L'objectif n'est pas de tout classer, mais d'isoler les avis négatifs pour que le service client réponde vite.

EN SORTIE

Une file des avis à traiter

Chaque nouvel avis est marqué « négatif » ou « autre » dès sa réception. Sur le jeu d'exemple, tous les avis négatifs mis de côté sont repérés, avec environ 5 % de fausses alertes parmi les avis signalés.

CE QU'ON MESURE

Le rappel sur les négatifs

Un avis négatif oublié est un client mécontent sans réponse ; une fausse alerte coûte une lecture. On suit donc d'abord le rappel (part des négatifs repérés), puis la précision (part des signalés vraiment négatifs).

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Tri de texte en temps réel : avis, e-mails, tickets, spam
  • Peu d'exemples étiquetés pour démarrer
  • Besoin d'un modèle léger à réentraîner chaque jour
  • Référence rapide avant de tester des modèles plus lourds

NON

  • Besoin de probabilités fiables : les scores de Naive Bayes sont souvent trop tranchés, calibrer ou passer à une régression logistique
  • Variables fortement liées entre elles : l'hypothèse d'indépendance fausse le résultat
  • Nuances de langage (négations, ironie) : un modèle de langage type BERT fait mieux
  • Données tabulaires classiques : une régression logistique ou une Random Forest sont plus sûres
LES 3 CHOIX QUI COMPTENT

Presque rien à régler : les choix portent sur la variante et la représentation du texte. Noms donnés pour R (naivebayes) et Python (scikit-learn).

Variante : multinomial / gaussien / Bernoulli

Multinomial pour des comptages de mots, Bernoulli pour la présence ou l'absence d'un mot, gaussien pour des variables numériques continues.

laplace / alpha

Lissage : on ajoute un petit comptage à chaque mot pour qu'un mot absent d'une classe ne rende pas sa probabilité nulle. 1 par défaut, à tester entre 0,1 et 1.

Préparation du texte

Minuscules, ponctuation, fréquence minimale des mots : ces choix comptent plus que le modèle. Ils se règlent dans DocumentTermMatrix en R, dans CountVectorizer en Python.

LE CODE MINIMAL

jeu d'exemple : avis_clients.csv ↓
# Tri des avis négatifs : Naive Bayes en R
library(tm)
library(naivebayes)

avis <- read.csv("avis_clients.csv", fileEncoding = "UTF-8")
y <- factor(ifelse(avis$sentiment == "negatif", "negatif", "autre"))

# Sac de mots : chaque avis devient un comptage de mots
corpus <- VCorpus(VectorSource(tolower(avis$texte)))
dtm <- DocumentTermMatrix(corpus, control = list(removePunctuation = TRUE))
X <- as.matrix(dtm)

set.seed(42)
idx <- sample(nrow(X), round(0.7 * nrow(X)))

# Naive Bayes multinomial, lissage de Laplace pour les mots jamais vus
modele <- multinomial_naive_bayes(x = X[idx, ], y = y[idx], laplace = 1)
pred <- predict(modele, newdata = X[-idx, ], type = "class")

print(table(prevu = pred, reel = y[-idx]))
cat("Rappel sur les négatifs :", round(mean(pred[y[-idx] == "negatif"] == "negatif"), 3), "\n")
cat("Précision sur les négatifs :", round(mean(y[-idx][pred == "negatif"] == "negatif"), 3), "\n")

QUESTIONS FRÉQUENTES

Pourquoi dit-on que Naive Bayes est naïf ?

Parce qu'il suppose que les variables sont indépendantes les unes des autres une fois la classe connue. Sur du texte, c'est faux : « pas » et « reçu » vont souvent ensemble. Le classement final reste pourtant souvent bon, car on a seulement besoin que la bonne classe obtienne le score le plus élevé.

Naive Bayes ou régression logistique pour classer du texte ?

Naive Bayes s'entraîne plus vite et marche mieux avec très peu d'exemples. La régression logistique prend l'avantage quand les données sont plus nombreuses et donne des probabilités mieux calibrées. En pratique, on teste les deux.

Qu'est-ce que le lissage de Laplace ?

C'est l'ajout d'un comptage fictif, souvent 1, à chaque mot et chaque classe. Sans lui, un mot jamais vu dans les avis négatifs donnerait une probabilité nulle et annulerait tout le produit, quel que soit le reste de l'avis.

LES ALGOS VOISINS

à comparer avant de choisir
souvent un peu plus précise

SVM linéaire

Cherche la frontière à marge maximale entre les classes. Un peu plus lente, souvent meilleure avec beaucoup de données.

Voir la fiche →
des probabilités fiables

Régression logistique

Pas d'hypothèse d'indépendance, probabilités mieux calibrées. Le choix quand le score sert à décider.

Voir la fiche →
le principe de base

Théorème de Bayes

La formule qui met à jour une probabilité à la lumière d'un indice. Naive Bayes l'applique mot par mot.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →