Polydesk-logotype
Polydesk.ai — Header

Classification en Machine Learning

La classification est une tâche d’apprentissage supervisé qui consiste à entraîner un modèle pour attribuer une catégorie (classe) prédéfinie à chaque nouvelle observation, en s’appuyant sur des exemples étiquetés.

C’est l’une des deux grandes familles de prédiction en machine learning, l’autre étant la régression (prédiction de valeurs continues). En classification, la sortie est discrète : le modèle répond « spam ou pas spam », « chat, chien ou oiseau », « positif, négatif ou neutre ». Cette distinction fondamentale conditionne le choix de l’algorithme, de la fonction de perte et des métriques d’évaluation.

La classification est omniprésente : filtrage de spam, diagnostic médical, détection de fraude, analyse de sentiment, reconnaissance d’images, modération de contenu, scoring de crédit, et bien d’autres.

Fiche rapide : Classification
Type
Apprentissage supervisé (prédiction de classes discrètes)
Entrée
Features (caractéristiques) + labels (étiquettes) pour l’entraînement
Sortie
Classe prédite (et souvent une probabilité par classe)
Variantes
Binaire (2 classes), multiclasse (3+), multi-label (labels multiples)
Algorithmes courants
Régression logistique, SVM, Random Forest, XGBoost, réseaux de neurones
Métriques
Accuracy, précision, rappel, F1-Score, AUC-ROC, MCC
Fonction de perte
Cross-entropy (log loss) pour la plupart des cas

Les trois types de classification

Classification binaire

Le cas le plus simple : deux classes mutuellement exclusives. Chaque observation appartient à exactement l’une des deux. C’est le type le plus courant en production.

Exemples concrets : spam vs non-spam, fraude vs légitime, malade vs sain, cliqué vs non-cliqué, défaut vs conforme, churn vs fidèle.

La plupart des algorithmes de ML sont nativement binaires. La sortie est typiquement une probabilité entre 0 et 1 (via une fonction sigmoïde), et un seuil (souvent 0,5) détermine la classe prédite. Les métriques standard sont l’AUC-ROC, la précision, le rappel, le F1-Score et la matrice de confusion.

Classification multiclasse

Chaque observation est assignée à exactement une classe parmi trois ou plus. Les classes sont mutuellement exclusives : une image représente soit un chat, soit un chien, soit un oiseau, jamais deux à la fois.

Exemples : reconnaissance de chiffres manuscrits (0 à 9), identification de langues, catégorisation d’articles de presse, classification d’espèces végétales, diagnostic entre plusieurs pathologies.

Certains algorithmes gèrent nativement le multiclasse (arbres de décision, Random Forest, k-NN, réseaux de neurones avec softmax). D’autres nécessitent une stratégie de décomposition :

One-vs-Rest (OvR) : on entraîne K classifieurs binaires (un par classe), chacun séparant une classe de toutes les autres. La classe avec le score le plus élevé gagne. C’est la stratégie par défaut de scikit-learn.

One-vs-One (OvO) : on entraîne K×(K-1)/2 classifieurs binaires (un par paire de classes). Chaque classifieur vote, et la classe avec le plus de votes gagne. Plus lent mais parfois plus précis, notamment avec les SVM.

Classification multi-label

Chaque observation peut être associée à zéro, un ou plusieurs labels simultanément. Les labels ne sont pas mutuellement exclusifs. C’est fondamentalement différent du multiclasse.

Exemples : taguer un article avec plusieurs sujets (« IA », « éthique », « régulation »), annoter une image avec plusieurs objets (« plage », « coucher de soleil », « palmier »), catégoriser un film dans plusieurs genres (« action », « science-fiction », « thriller »).

En multi-label, la sortie est un vecteur binaire de taille K (nombre de labels possibles), avec un 1 pour chaque label présent. L’activation utilisée est la sigmoïde (indépendante par label), pas la softmax (qui impose une somme à 1). Les métriques spécifiques incluent la Hamming loss, l’exact match ratio et le F1-Score micro/macro.

Critère Binaire Multiclasse Multi-label
Nombre de classes 2 3+ K labels possibles
Labels par observation Exactement 1 Exactement 1 0 à K
Mutuellement exclusif ? Oui Oui Non
Activation typique Sigmoïde Softmax Sigmoïde (par label)
Perte typique Binary cross-entropy Categorical cross-entropy Binary cross-entropy (par label)

Les principaux algorithmes de classification

Algorithmes linéaires

Régression logistique : malgré son nom, c’est un algorithme de classification. Il modélise la probabilité d’appartenance à chaque classe via une fonction sigmoïde (binaire) ou softmax (multiclasse). Simple, rapide, interprétable. C’est souvent le premier modèle à essayer comme baseline. Fonctionne bien quand la frontière de décision est approximativement linéaire.

SVM (Support Vector Machine) : cherche l’hyperplan qui maximise la marge entre les classes. Avec des noyaux (kernel trick), il gère les frontières non linéaires. Performant sur des données de dimension élevée avec peu d’échantillons. Moins utilisé depuis l’essor du gradient boosting, mais reste pertinent pour certains cas.

Algorithmes à base d’arbres

Random Forest : ensemble d’arbres de décision entraînés sur des sous-échantillons aléatoires. Robuste, peu sensible aux outliers, gère naturellement le multiclasse. Bon compromis performance/interprétabilité. Rarement le meilleur modèle absolu, mais presque toujours dans le top 3.

XGBoost : gradient boosting optimisé. Domine les compétitions Kaggle depuis des années sur les données tabulaires. Excellent sur les datasets structurés, avec régularisation intégrée. Nécessite un tuning d’hyperparamètres soigneux.

LightGBM : alternative à XGBoost, souvent plus rapide grâce au gradient-based one-side sampling (GOSS) et au bundling de features. Particulièrement efficace sur les grands datasets. Performances comparables à XGBoost, parfois supérieures.

Deep learning

Réseaux de neurones denses : avec une couche softmax en sortie, ils gèrent n’importe quel problème de classification. Nécessitent beaucoup de données et de calcul. Surperforment les méthodes classiques principalement sur les données non structurées (images, texte, audio).

CNN (Convolutional Neural Networks) : la référence pour la classification d’images. Des architectures comme ResNet, EfficientNet ou les Vision Transformers atteignent des performances proches ou supérieures à l’humain sur certaines tâches visuelles.

Transformers : BERT et ses variantes dominent la classification de texte. Le fine-tuning d’un modèle pré-entraîné sur votre dataset spécifique est souvent la méthode la plus performante pour les tâches NLP.

Autres algorithmes notables

k-NN (k-Nearest Neighbors) : classe chaque observation selon la majorité de ses k voisins les plus proches. Simple, sans entraînement explicite, mais lent en inférence sur de grands datasets. Utile comme baseline ou pour des datasets de petite taille.

Naive Bayes : basé sur le théorème de Bayes avec l’hypothèse d’indépendance des features. Très rapide, étonnamment performant en classification de texte malgré son hypothèse simpliste. Excellent pour du spam filtering ou de la catégorisation de documents.

Quel algorithme choisir ? Pour des données tabulaires, commencez par une régression logistique (baseline), puis essayez Random Forest et XGBoost/LightGBM. Pour des images, utilisez un CNN pré-entraîné avec transfer learning. Pour du texte, fine-tunez un Transformer (BERT, etc.). En général, le gradient boosting (XGBoost, LightGBM) gagne sur les données tabulaires, et le deep learning gagne sur les données non structurées.

Le pipeline de classification complet

Étape 1 : Préparation des données

La qualité des données détermine le plafond de performance de tout modèle. Les étapes clés incluent le nettoyage (valeurs manquantes, outliers), l’encodage des variables catégorielles (one-hot, label encoding), la normalisation ou standardisation des features numériques, et la séparation en jeux d’entraînement, validation et test.

Pour les données déséquilibrées, envisagez le sur-échantillonnage de la classe minoritaire (SMOTE), le sous-échantillonnage de la classe majoritaire, ou l’ajustement des poids de classes dans l’algorithme (class_weight='balanced' dans scikit-learn).

Étape 2 : Entraînement et sélection de modèle

Entraînez plusieurs algorithmes, optimisez les hyperparamètres par validation croisée (GridSearchCV ou RandomizedSearchCV), et comparez les résultats sur le jeu de validation.

from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from xgboost import XGBClassifier

models = {
    'Logistic Regression': LogisticRegression(max_iter=1000),
    'Random Forest': RandomForestClassifier(n_estimators=100),
    'XGBoost': XGBClassifier(n_estimators=100, eval_metric='logloss')
}

for name, model in models.items():
    scores = cross_val_score(model, X_train, y_train,
                            cv=5, scoring='roc_auc')
    print(f"{name}: AUC = {scores.mean():.4f} ± {scores.std():.4f}")

Étape 3 : Évaluation

Évaluez le modèle retenu sur le jeu de test (jamais touché pendant l’entraînement). Examinez la matrice de confusion, le rapport de classification (précision/rappel/F1 par classe), la courbe ROC et l’AUC.

from sklearn.metrics import classification_report, roc_auc_score

model = XGBClassifier(n_estimators=200, eval_metric='logloss')
model.fit(X_train, y_train)

y_pred = model.predict(X_test)
y_proba = model.predict_proba(X_test)[:, 1]

print(classification_report(y_test, y_pred))
print(f"AUC-ROC : {roc_auc_score(y_test, y_proba):.4f}")

Étape 4 : Déploiement et monitoring

En production, le modèle reçoit de nouvelles données et produit des prédictions en temps réel ou en batch. Le monitoring est essentiel : la distribution des données d’entrée peut dériver au fil du temps (data drift), dégradant les performances. Surveillez les métriques de classification en continu et retrénez le modèle régulièrement.

Métriques de classification : choisir la bonne

Le choix de la métrique est aussi important que le choix de l’algorithme. Voici un guide de décision :

Situation Métrique recommandée Pourquoi
Classes équilibrées, coûts d’erreur symétriques Accuracy Simple, intuitive, fiable quand les classes sont équilibrées
Comparaison de modèles (binaire) AUC-ROC Indépendante du seuil, vue globale
Faux positifs coûteux Précision Mesure la fiabilité des alertes positives
Faux négatifs coûteux Rappel Mesure la détection des cas positifs
Compromis FP/FN F1-Score Moyenne harmonique précision/rappel
Classes déséquilibrées, métrique unique MCC Robuste au déséquilibre, considère les 4 cellules de la matrice
Données très déséquilibrées (< 5 % positifs) AUC-PR Plus informative que l’AUC-ROC quand les négatifs dominent

Classification vs régression : la frontière

La distinction semble simple (classes discrètes vs valeurs continues), mais elle se brouille dans certains cas :

Régression ordinale : quand les classes ont un ordre naturel (faible < moyen < élevé), la classification standard ignore cet ordre. Des méthodes spécialisées (régression ordinale) préservent cette information.

Discrétisation : vous pouvez transformer un problème de régression en classification en découpant la variable cible en tranches (par exemple, « prix bas », « moyen », « élevé »). C’est utile quand les seuils ont une signification métier, mais vous perdez de la granularité.

Modèles probabilistes : un classifieur qui produit des probabilités (comme la régression logistique) se situe à la frontière. La sortie brute est continue (probabilité), mais la décision finale est discrète (classe).

Classification et LLM

Les grands modèles de langage ont profondément transformé la classification de texte. Trois approches coexistent :

Zero-shot classification : on demande au LLM de classer un texte sans aucun exemple d’entraînement, simplement en décrivant les classes dans le prompt. Pratique pour le prototypage rapide, mais moins précis qu’un modèle fine-tuné.

Few-shot classification : on fournit quelques exemples de chaque classe dans le prompt. Améliore significativement les performances par rapport au zero-shot, sans nécessiter de fine-tuning.

Fine-tuning : on réentraîne le modèle sur vos données labellisées. C’est la méthode la plus performante mais aussi la plus coûteuse en données et en calcul. Avec un modèle comme BERT ou un modèle Mistral/Llama fine-tuné, quelques milliers d’exemples suffisent souvent pour des résultats excellents.

Quand utiliser un LLM vs un modèle classique pour la classification ? Si vous avez beaucoup de données labellisées (> 10 000 exemples) et un problème de classification tabulaire, XGBoost/LightGBM sera plus rapide, moins cher et souvent aussi performant. Si vous travaillez sur du texte avec peu de données ou des classes qui évoluent, un LLM en zero/few-shot est imbattable en flexibilité. Le fine-tuning de BERT/DistilBERT offre le meilleur rapport qualité/coût pour la classification de texte à grande échelle.

Défis courants en classification

Déséquilibre de classes

Quand une classe est très minoritaire (fraude, maladies rares), la plupart des algorithmes favorisent la classe majoritaire. Solutions : rééchantillonnage (SMOTE, sous-échantillonnage), pondération des classes, utilisation de métriques adaptées (F1, AUC-PR, MCC) plutôt que l’accuracy.

Overfitting

Un modèle trop complexe mémorise les données d’entraînement au lieu de généraliser. Signes : écart important entre les performances en entraînement et en test. Solutions : régularisation (L1, L2, dropout), réduction de la complexité du modèle, augmentation de données, validation croisée.

Qualité et sélection des features

Des features non pertinentes ou redondantes dégradent les performances et ralentissent l’entraînement. Techniques de sélection : importance des features (Random Forest, XGBoost), SHAP values, élimination récursive, corrélation avec la cible.

Interprétabilité

Dans des domaines régulés (santé, finance, justice), un modèle doit être explicable. Les modèles linéaires et les arbres de décision sont naturellement interprétables. Pour les modèles complexes (ensembles, deep learning), des outils comme SHAP et LIME permettent d’expliquer les prédictions individuelles.

Verdict

La classification est la tâche de ML la plus déployée en production. Le choix entre binaire, multiclasse et multi-label dépend de la nature de votre problème. Le choix de l’algorithme dépend du type de données : gradient boosting pour le tabulaire, CNN pour les images, Transformers pour le texte. Et le choix de la métrique dépend du coût relatif de vos erreurs.

Notre recommandation : commencez toujours par une baseline simple (régression logistique), mesurez avec les bonnes métriques (pas seulement l’accuracy), puis itérez vers des modèles plus complexes. Le gain entre une régression logistique et un XGBoost bien tuné est souvent plus faible que le gain entre des données mal préparées et des données bien préparées.


Questions fréquentes sur la classification

Quelle est la différence entre classification et régression ?

La classification prédit une catégorie discrète (spam/pas spam, chat/chien/oiseau), tandis que la régression prédit une valeur numérique continue (prix, température, durée). Le choix dépend de la nature de votre variable cible. Si elle est catégorielle, c’est de la classification. Si elle est numérique continue, c’est de la régression. Les algorithmes, les fonctions de perte et les métriques d’évaluation diffèrent fondamentalement entre les deux.

Quelle est la différence entre multiclasse et multi-label ?

En multiclasse, chaque observation appartient à exactement une classe parmi plusieurs (mutuellement exclusives). Un email est classé « promotion », « social » ou « principal », jamais deux à la fois. En multi-label, chaque observation peut recevoir zéro, un ou plusieurs labels simultanément. Un article peut être tagué « IA » et « éthique » et « régulation » en même temps. La distinction conditionne le choix de l’activation (softmax vs sigmoïde) et de la perte (categorical vs binary cross-entropy).

Quel algorithme de classification est le meilleur ?

Il n’y a pas de « meilleur » algorithme universel (théorème No Free Lunch). Sur des données tabulaires, le gradient boosting (XGBoost, LightGBM) est le plus souvent gagnant. Sur des images, les CNN et Vision Transformers dominent. Sur du texte, les Transformers fine-tunés (BERT et variantes) sont l’état de l’art. Pour une baseline rapide, la régression logistique est toujours un bon point de départ. Le meilleur algorithme pour votre problème spécifique se détermine par expérimentation et validation croisée.

Comment gérer un dataset très déséquilibré en classification ?

Plusieurs stratégies complémentaires existent. Au niveau des données : sur-échantillonnage de la minorité (SMOTE), sous-échantillonnage de la majorité, ou augmentation de données. Au niveau de l’algorithme : pondération des classes (class_weight='balanced'), ajustement du seuil de décision. Au niveau de l’évaluation : utiliser le F1-Score, l’AUC-PR ou le MCC au lieu de l’accuracy. En pratique, combinez la pondération des classes avec le F1-Score comme métrique d’optimisation pour un premier résultat solide.

Peut-on utiliser un LLM pour faire de la classification ?

Oui, et c’est devenu courant pour la classification de texte. En zero-shot (aucun exemple), un LLM comme GPT-4o ou Claude classifie correctement dans de nombreux cas, surtout si les classes sont bien décrites dans le prompt. En few-shot (quelques exemples par classe), les performances s’améliorent nettement. Pour un usage à grande échelle, le fine-tuning d’un modèle plus petit (BERT, DistilBERT, Mistral 7B) est plus économique et souvent plus performant qu’un LLM généraliste. Les LLM ne sont pas recommandés pour la classification de données tabulaires, où XGBoost reste supérieur.

Polydesk.ai — Footer