Cours public de démonstration

Profil simulé · débutant · style équilibré

Cet exemple est volontairement stocké en dur pour rester disponible pendant la démonstration. Une génération réelle adapte le contenu au profil et à l’intention propres à l’utilisateur.

Cours

Classifier avec un SVM et la notion de marge

Débutant45 minmachine_learning.svmIntention : Comprendredemo-static-v1

Cours généré

Classifier avec un SVM et la notion de marge

Objectifs du cours

À la fin de ce cours, vous saurez expliquer la marge d'un SVM, identifier les vecteurs de support, choisir entre un noyau linéaire et RBF et entraîner un pipeline sans fuite de données.

1. Séparer deux groupes

Imaginez des points rouges et bleus sur une feuille. Plusieurs droites peuvent parfois les séparer. Un SVM ne choisit pas une droite au hasard : il cherche celle qui laisse le plus grand espace possible entre les deux groupes.

Cet espace est la marge. Une grande marge rend la décision moins sensible à de petites variations des données et favorise souvent une meilleure généralisation.

Les points les plus proches de la frontière sont appelés vecteurs de support. Ce sont eux qui déterminent principalement la position de la frontière ; déplacer un point très éloigné change souvent peu le modèle.

mermaidflowchart LR
  A[Données étiquetées] --> B[Recherche de la frontière]
  B --> C[Marge maximale]
  C --> D[Vecteurs de support]
  D --> E[Prédiction d'une classe]

2. Accepter quelques erreurs avec C

Dans des données réelles, une séparation parfaite est rarement souhaitable. Le paramètre C règle le compromis entre une grande marge et la pénalisation des erreurs.

Un C élevé sanctionne fortement les erreurs et produit souvent une frontière plus stricte.

Un C faible accepte davantage d'erreurs afin de préserver une marge plus large.

C n'est donc pas une mesure de qualité. C'est un hyperparamètre à sélectionner par validation croisée sur les données d'entraînement.

3. Quand la frontière n'est pas une droite

Le noyau linéaire convient lorsque les classes sont séparables par une frontière simple ou lorsque le nombre de variables est très grand. Pour une forme courbe, le noyau RBF peut construire une frontière non linéaire.

Avec RBF, le paramètre gamma contrôle la portée de l'influence d'un exemple. Un gamma trop élevé crée une frontière très détaillée qui risque de mémoriser le bruit ; un gamma trop faible peut produire une frontière trop simple.

4. Pourquoi normaliser les variables

La distance géométrique est centrale pour le SVM. Une variable comprise entre 0 et 100 000 peut écraser une autre comprise entre 0 et 1. La standardisation les replace sur des échelles comparables.

La normalisation doit être apprise uniquement sur le jeu d'entraînement. Un pipeline garantit que cette règle est respectée pendant l'entraînement, la validation croisée et la prédiction.

5. Exemple guidé avec scikit-learn

pythonfrom sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.metrics import classification_report

X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, stratify=y, random_state=42
)

model = make_pipeline(
    StandardScaler(),
    SVC(kernel="rbf", C=1.0, gamma="scale")
)
model.fit(X_train, y_train)
predictions = model.predict(X_test)

print(classification_report(y_test, predictions))

L'option stratify=y conserve approximativement la proportion des classes dans les jeux d'entraînement et de test. Le rapport affiche notamment la précision, le rappel et le score F1 ; la métrique prioritaire dépend du coût métier des faux positifs et des faux négatifs.

6. Erreurs fréquentes

Oublier la standardisation rend le résultat dépendant des unités choisies.

Ajuster C et gamma directement sur le jeu de test transforme ce jeu en donnée d'entraînement cachée.

Choisir RBF par défaut ajoute de la complexité sans garantie d'amélioration.

Regarder uniquement l'accuracy peut masquer une mauvaise détection de la classe rare.

Mini-exercice

Entraînez deux pipelines identiques, l'un avec kernel="linear" et l'autre avec kernel="rbf". Comparez leur score F1 par validation croisée. Choisissez le modèle le plus simple si les résultats sont proches, puis utilisez le jeu de test une seule fois pour l'évaluation finale.

Quiz final

Quiz final · 3 questions

0/3 répondues

Quels points déterminent principalement la frontière d'un SVM ?

Pourquoi standardiser les variables avant un SVM ?

Comment choisir C et gamma ?

À retenir

Un SVM recherche une frontière à grande marge définie par les vecteurs de support. La mise à l'échelle est essentielle, et C, gamma ainsi que le noyau doivent être choisis sans consulter le jeu de test.