SVM, Arbres de Décision et Random Forest en Profondeur
Maîtrisez les algorithmes classiques les plus puissants du ML : SVM avec kernel trick, arbres de décision et Random Forest. Comprendre quand ces modèles battent le Deep Learning.
SVM, Arbres de Décision et Random Forest
Ces trois algorithmes constituent le socle du machine learning classique. Ils restent incontournables en 2026 sur les petits et moyens datasets où les réseaux de neurones n'apportent pas de valeur ajoutée.
1. Support Vector Machine : l'hyperplan de séparation maximal
Intuition géométrique
Un SVM cherche l'hyperplan qui sépare les classes avec la marge maximale. Les points les plus proches de l'hyperplan s'appellent les vecteurs de support.
Maximiser la marge améliore la généralisation. Un hyperplan centré entre les deux classes résiste mieux aux nouvelles données.
Le paramètre C
- C petit : large marge, quelques erreurs tolérées (underfitting possible)
- C grand : marge étroite, peu d'erreurs d'entraînement (overfitting possible)
2. Le Kernel Trick : projeter en dimension supérieure
Que faire si les données ne sont pas linéairement séparables ?
Le kernel trick calcule le produit scalaire dans l'espace projeté sans jamais calculer la projection explicitement : c'est l'astuce qui rend le SVM scalable.
| Kernel | Usage |
|---|---|
| Linéaire | Texte sparse, haute dimension |
| RBF (Gaussien) | Usage général, recommandé par défaut |
| Polynomial | Vision, données structurées |
Le paramètre gamma (γ) du kernel RBF contrôle le rayon d'influence. Un gamma trop élevé crée des décisions complexes qui surapprennent.
3. Arbres de Décision : CART et mesures d'impureté
Un arbre divise récursivement l'espace des features en posant des questions binaires (feature <= seuil ?).
Impureté de Gini vs Entropie
- Gini :
1 - Σ pᵢ²: probabilité qu'un échantillon aléatoire soit mal classé - Entropie :
-Σ pᵢ log₂(pᵢ): mesure du désordre
En pratique, les deux donnent des résultats très similaires. Gini est légèrement plus rapide.
from sklearn.tree import DecisionTreeClassifier, export_text
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
tree = DecisionTreeClassifier(max_depth=3)
tree.fit(X, y)
print(export_text(tree, feature_names=load_iris().feature_names))
Un arbre sans contrainte (max_depth, min_samples_leaf) surapprend facilement : il mémorise le dataset au lieu de généraliser.
4. Random Forest : la sagesse des foules
Random Forest entraîne N arbres indépendants, chacun sur un sous-échantillon aléatoire. La prédiction finale est le vote majoritaire.
Feature sampling : à chaque nœud, seul un sous-ensemble de features est considéré (sqrt(n_features) par défaut). Cela décorrèle les arbres : si une feature dominante existe, elle ne sera pas dans chaque arbre.
La loi des grands nombres garantit que la moyenne de N estimateurs bruités converge vers la vraie valeur. Plus d'arbres = moins de variance, sans augmenter le biais.
5. Micro-exercice : SVM vs Random Forest sur Breast Cancer
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import classification_report
import time
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, random_state=42)
# SVM nécessite une normalisation
scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train)
X_test_s = scaler.transform(X_test)
svm = SVC(kernel="rbf", C=1.0, gamma="scale")
rf = RandomForestClassifier(n_estimators=100, random_state=42)
for name, model, Xtr, Xte in [
("SVM", svm, X_train_s, X_test_s),
("Random Forest", rf, X_train, X_test)
]:
t0 = time.time()
model.fit(Xtr, y_train)
print(f"\n{name} ({time.time()-t0:.3f}s) :")
print(classification_report(y_test, model.predict(Xte)))
6. Feature Importance avec Random Forest
import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
data = load_breast_cancer()
rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(data.data, data.target)
importance = pd.Series(rf.feature_importances_, index=data.feature_names)
print(importance.sort_values(ascending=False).head(10))
7. Hyperparamètres clés
| Modèle | Paramètre | Rôle | Valeurs à tester |
|---|---|---|---|
| SVM | C | Régularisation | 0.1, 1, 10, 100 |
| SVM | gamma | Rayon RBF | "scale", "auto", 0.001 |
| Random Forest | n_estimators | Nombre d'arbres | 100, 200, 500 |
| Random Forest | max_depth | Profondeur max | None, 5, 10, 20 |
8. Quand SVM surpasse le Deep Learning
SVM excelle quand :
- Petits datasets (< 10 000 exemples) : le DL a besoin de données
- Haute dimensionnalité sparse : texte TF-IDF (milliers de features)
- Bio-informatique : séquences génomiques, peu d'exemples, beaucoup de features
Sur un dataset de 500 séquences génomiques avec 20 000 features, un SVM linéaire battra un réseau de neurones en précision ET en temps d'entraînement.
| Critère | SVM | Arbre de Décision | Random Forest |
|---|---|---|---|
| Interprétabilité | Faible | Haute | Moyenne |
| Résistance overfitting | Haute | Faible | Haute |
| Normalisation requise | Oui | Non | Non |
| Dataset idéal | Petit, haute dim. | Prototypage rapide | Usage général |
Specialiste IA — Master Intelligence Artificielle
Diplome d'un Master en Intelligence Artificielle, je travaille au quotidien sur des projets IA en entreprise. J'ai cree IwanttolearnAI pour rendre l'apprentissage de l'IA accessible a tous, gratuitement.
Continuer a apprendre
Systèmes de Recommandation : de Netflix à Spotify
Découvrez comment Netflix, Spotify et Amazon construisent leurs moteurs de recommandation. De la factorisation matricielle aux two-tower models, maîtrisez les algorithmes et les métriques.
Séries Temporelles et Prévision avec Python
Apprenez à modéliser et prévoir des séries temporelles avec ARIMA, Prophet et XGBoost. Maîtrisez la validation temporelle correcte et les métriques adaptées.
Machine Learning vidéo explicative
Vidéo d'introduction au Machine Learning posant les bases du fonctionnement.