Naive Bayes
Les classificateurs Naive Bayes appliquent le théorème de Bayes et supposent que les caractéristiques sont indépendantes sachant la classe. Variantes, filtrage anti-spam, limites et code Python.
Naive Bayes désigne une famille de classifieurs probabilistes qui appliquent le théorème de Bayes en supposant, de façon « naïve », que les caractéristiques sont indépendantes les unes des autres une fois la classe connue. Cette hypothèse permet au modèle d’apprendre séparément la distribution de chaque caractéristique au sein de chaque classe ; l’entraînement se résume ainsi à un seul comptage des données d’entraînement, et la prédiction combine quelques probabilités enregistrées. Mehran Sahami et ses collègues l’ont appliqué aux courriels indésirables en 1998 ; les filtres antispam bayésiens se sont répandus au début des années 2000, et cette méthode reste une référence rapide et performante en apprentissage supervisé pour le texte et d’autres données de très grande dimension.
Fonctionnement de Naive Bayes#
Le théorème de Bayes donne la probabilité d’une classe C sachant les caractéristiques x₁ … xₙ sous la forme P(C | x) = P(C)·P(x | C) / P(x). Estimer P(x | C) pour chaque combinaison de valeurs des caractéristiques nécessiterait un jeu de données immense ; Naive Bayes suppose donc l’indépendance conditionnelle et factorise cette probabilité en P(x₁ | C)·P(x₂ | C)·…·P(xₙ | C). Le classifieur prédit la classe qui maximise la probabilité a priori P(C) multipliée par ce produit, et omet P(x), identique pour toutes les classes. Les implémentations additionnent les logarithmes des probabilités au lieu de multiplier les probabilités, car le produit de milliers de petits nombres provoque un sous-dépassement en virgule flottante.
Le comptage entraîne un problème : un mot jamais associé à une classe pendant l’entraînement reçoit une probabilité nulle, ce qui annule le score de cette classe pour tout document qui le contient, quels que soient les autres éléments de preuve. Le lissage additif corrige ce problème en ajoutant un pseudo-compte α à chaque décompte ; α = 1 correspond au lissage de Laplace, valeur par défaut dans scikit-learn.
Types de classifieurs Naive Bayes#
Les variantes diffèrent par la distribution qu’elles supposent pour chaque caractéristique au sein d’une classe. Naive Bayes multinomial modélise les décomptes, par exemple le nombre d’occurrences de chaque mot dans un document, et constitue le choix standard pour le texte. Naive Bayes de Bernoulli modélise la présence ou l’absence binaire et pénalise également l’absence de mots caractéristiques d’une classe. Naive Bayes gaussien ajuste une distribution normale, avec sa propre moyenne et sa propre variance, à chaque caractéristique continue de chaque classe. Naive Bayes complémentaire estime les statistiques de mots de chaque classe à partir de toutes les autres classes, ce qui convient aux jeux de données textuelles déséquilibrés ; Naive Bayes catégoriel gère les caractéristiques prenant un ensemble fixe de valeurs catégorielles.
Cet exemple entraîne MultinomialNB de scikit-learn sur les décomptes de mots de six messages étiquetés, puis évalue deux nouveaux messages :
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
# Tiny labeled corpus: 1 = spam, 0 = legitimate
texts = [
"win a free prize now",
"free cash bonus click now",
"claim your free reward today",
"meeting moved to monday",
"lunch with the team today",
"project review notes attached",
]
labels = [1, 1, 1, 0, 0, 0]
# Count words, then learn class priors and per-class word probabilities (alpha=1 is Laplace smoothing)
vectorizer = CountVectorizer()
model = MultinomialNB(alpha=1.0)
model.fit(vectorizer.fit_transform(texts), labels)
new = vectorizer.transform(["free prize today", "notes from the monday meeting"])
print(f"P(spam): {model.predict_proba(new)[:, 1].round(3)}")Le premier message obtient une probabilité de spam de 0,881, car « free » et « prize » apparaissent uniquement dans les spams ; le second obtient 0,053, car « notes », « monday » et « meeting » apparaissent uniquement dans les courriels légitimes. Sans lissage, « free » aurait une probabilité nulle dans la classe légitime, et tout message légitime le contenant serait considéré avec certitude comme un spam.
Points forts et limites#
L’entraînement et la prédiction ont une complexité linéaire par rapport au nombre d’échantillons et de caractéristiques ; Naive Bayes peut donc traiter des millions de documents avec une très faible latence d’inférence, et les implémentations de scikit-learn se mettent à jour à partir de nouveaux lots grâce à partial_fit pour l’apprentissage en ligne. La méthode nécessite aussi peu de données : Ng et Jordan (2001) ont montré que Naive Bayes s’approche de son erreur asymptotique avec moins d’exemples d’entraînement que la régression logistique, qui atteint une erreur plus faible lorsque les données sont abondantes. Ses prédictions de classe sont souvent exactes même lorsque les caractéristiques sont corrélées, car seul le classement des classes doit être correct.
Les probabilités elles-mêmes sont mal calibrées. Les caractéristiques corrélées comptent plusieurs fois le même élément de preuve, ce qui pousse les scores vers 0 ou 1 ; les applications qui ont besoin de valeurs de confiance fiables les recalibrent donc sur des données mises de côté. Un sac de mots indépendants ne peut pas non plus représenter l’ordre des mots ni leurs interactions ; « pas bon » ressemble alors à un mélange d’une négation et d’un mot positif, contrairement aux modèles dotés du mécanisme d’attention, comme les transformers, qui interprètent les mots dans leur contexte.
Applications#
- Filtrage des spams : les filtres de messagerie évaluent chaque message à partir de ses mots, des habitudes de son expéditeur et des liens qu’il contient, puis mettent à jour les statistiques lexicales lorsque les utilisateurs le signalent comme spam.
- Analyse des sentiments : les avis et les demandes d’assistance sont classés comme positifs ou négatifs d’après les mots qu’ils contiennent ; il s’agit souvent du premier modèle utilisé avant l’ajustement fin d’un modèle de langage.
- Routage de documents : les articles de presse, les actes juridiques et les demandes d’assistance sont répartis par sujet ou dans des files d’attente, souvent avec Naive Bayes complémentaire lorsque certaines catégories sont beaucoup plus rares que d’autres.
- Références en traitement automatique du langage naturel (NLP) : l’identification de la langue et l’étiquetage thématique utilisent Naive Bayes comme point de référence rapide que tout modèle plus coûteux doit dépasser.
Naive Bayes en vision par ordinateur#
Les pixels voisins sont fortement corrélés ; traiter les pixels bruts comme des caractéristiques indépendantes fait donc perdre les contours et les textures qui définissent les objets, que les réseaux neuronaux convolutifs capturent en traitant ensemble les voisinages. Avant l’apprentissage profond, l’approche du sac de mots visuels appliquait Naive Bayes aux histogrammes de descripteurs locaux comme SIFT, regroupés en mots visuels par clustering k-means, l’équivalent visuel des décomptes de mots. Les décomptes des classes d’objets détectées par YOLO26 grâce à la détection d’objets forment le même type de vecteur de décomptes ; un modèle Naive Bayes multinomial peut donc étiqueter une scène comme une rue, une cuisine ou un bureau à partir de ses seules détections.
Naive Bayes et modèles associés#
- Réseaux bayésiens : Naive Bayes est le réseau bayésien le plus simple : la classe est le seul parent de chaque caractéristique, et il n’y a aucune arête entre les caractéristiques. Les réseaux bayésiens généraux ajoutent ces arêtes pour modéliser les dépendances.
- Inférence bayésienne : « Bayes » dans Naive Bayes fait référence au théorème de Bayes. Naive Bayes standard estime chaque probabilité comme une fréquence lissée, c’est-à-dire une estimation ponctuelle unique, tandis que les méthodes entièrement bayésiennes conservent une distribution sur chaque paramètre.
- Machines à vecteurs de support (SVM) : elles apprennent directement une frontière discriminante, au prix d’un coût d’entraînement plus élevé. Pour la classification des sentiments, Wang et Manning (2012) ont constaté que Naive Bayes était plus précis que les SVM sur les courts extraits, tandis que les SVM étaient plus précis sur les critiques complètes.










