Bienvenue à exoco-lmd.com! Partagez et consultez des solutions d'examens et d'exercices des programmes LMD et formation d'ingénieur.

Le classificateur naïf bayésien (Naive Bayes Classifier)

Démarré par Exocoeur, Février 19, 2023, 08:12:08 PM

« précédent - suivant »

Exocoeur

Introduction

Le classificateur naïf bayésien (Naive Bayes Classifier en anglais) est un algorithme de classification supervisée très populaire et largement utilisé dans les applications de classification de texte. Le modèle est basé sur le théorème de Bayes, qui utilise la probabilité conditionnelle pour estimer la probabilité d'appartenance à une classe donnée en fonction des caractéristiques (ou des attributs) de l'instance à classifier.

Le classificateur Naïve Bayes est appelé "naïf" car il suppose que les caractéristiques d'un objet sont indépendantes les unes des autres, ce qui est souvent une hypothèse simplificatrice et irréaliste dans la pratique. Cependant, cette hypothèse naïve permet de simplifier le calcul des probabilités conditionnelles et rend le modèle très rapide à entraîner et à utiliser.

Le modèle mathématique

Le modèle de classification naïve bayésien repose sur deux types de probabilités: la probabilité a priori et la probabilité conditionnelle.

La probabilité a priori (ou probabilité marginale) est la probabilité qu'un exemple soit classé dans une classe particulière sans prendre en compte les caractéristiques de cet exemple. Elle est généralement calculée en comptant le nombre d'exemples dans chaque classe et en les divisant par le nombre total d'exemples. Elle est notée P(Ci), où Ci est la i-ème classe.

La probabilité conditionnelle est la probabilité qu'un exemple ayant certaines caractéristiques appartienne à une classe particulière. Elle est calculée en utilisant le théorème de Bayes, qui stipule que:

P(Ci | x) = P(x | Ci) * P(Ci) / P(x)

où x est l'ensemble des caractéristiques de l'exemple, P(Ci | x) est la probabilité que l'exemple appartienne à la classe Ci étant donné les caractéristiques x, P(x | Ci) est la probabilité que l'exemple ait les caractéristiques x étant donné la classe Ci, P(Ci) est la probabilité a priori de la classe Ci, et P(x) est la probabilité marginale de l'ensemble des caractéristiques.

Le classificateur naïve bayésien simplifie cette formule en supposant que toutes les caractéristiques sont indépendantes les unes des autres, c'est-à-dire que:

P(x | Ci) = P(x1 | Ci) * P(x2 | Ci) * ... * P(xn | Ci)

où x1, x2, ..., xn sont les différentes caractéristiques et P(xi | Ci) est la probabilité que la caractéristique xi apparaisse dans la classe Ci. Cette hypothèse simplificatrice permet de calculer rapidement les probabilités conditionnelles pour chaque classe en multipliant simplement les probabilités de chaque caractéristique, ce qui donne la formule suivante:

P(Ci | x) = P(Ci) * P(x1 | Ci) * P(x2 | Ci) * ... * P(xn | Ci) / P(x)

Le classificateur naïve bayésien choisit la classe ayant la probabilité conditionnelle la plus élevée pour l'exemple donné.

Exemple simple d'utilisation de Naive Bayes Classifier en Python en utilisant la bibliothèque scikit-learn

Supposons que nous avons un ensemble de données contenant des commentaires de clients sur un produit, et que nous voulons classer chaque commentaire en "positif" ou "négatif". Nous allons utiliser un classificateur Naive Bayes pour cela.

Tout d'abord, nous devons prétraiter les données en les nettoyant et en les transformant en une représentation numérique, par exemple en utilisant la vectorisation de mots. Voici un exemple de code pour cela:

from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(data['commentaires']) # 'data' est un dataframe pandas contenant les commentaires
y = data['sentiments'] # 'sentiments' est une colonne dans 'data' contenant les étiquettes de classe ('positif' ou 'négatif')

Ensuite, nous pouvons diviser les données en ensembles de formation et de test, et entraîner le modèle de classification Naive Bayes: 

from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
clf = MultinomialNB()
clf.fit(X_train, y_train)

Enfin, nous pouvons utiliser le modèle entraîné pour prédire les étiquettes de classe pour de nouveaux commentaires non étiquetés: 

new_comments = ['C\'est un produit fantastique!', 'Je suis très déçu par ce produit.']
X_new = vectorizer.transform(new_comments)
y_pred = clf.predict(X_new)
print(y_pred) # ['positif', 'négatif']

Hors ligne Annonceur

  • Jr. Member
  • **
  • Messages: na
  • Karma: +0/-0
Re : message iportant de l'auteur
« le: un jour de l'année »





Suggestions pour vous