Accueil / Factory / Algos ML / Voting — factory / algos ML / apprentissage supervisé

ENSEMBLE PAR VOTE.

Plusieurs modèles de natures différentes prédisent chacun une réponse, puis on les fait voter. En vote dur, la majorité l'emporte ; en vote souple, on fait la moyenne des probabilités. C'est la façon la plus simple de combiner des modèles, sans rien apprendre de plus.

ClassificationRégressionEnsemble / voteRobustesseNiveau : débutant

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceProche du meilleur modèle, parfois au-dessus, rarement loin
InterprétabilitéChaque modèle se lit, leur combinaison beaucoup moins
VitesseSomme des temps de chaque modèle, parallélisable
Facilité de réglageRien à apprendre : choisir les modèles et le type de vote
Tolérance aux données brutesHérite des exigences de chaque modèle de base
EN 30 SECONDES

Trois correcteurs lisent le même chiffre mal écrit. Ils ne se trompent pas sur les mêmes copies, donc l'avis de la majorité est plus sûr que celui de chacun pris seul.

1. On entraîne plusieurs modèles différents

Par exemple une régression logistique, une SVM et une Random Forest, sur les mêmes données. Plus leurs erreurs sont différentes, plus le vote est utile.

2. Chaque modèle donne son avis

En vote dur, chaque modèle donne une classe. En vote souple, chaque modèle donne une probabilité pour chaque classe.

3. On compte les voix

Vote dur : la classe la plus citée gagne. Vote souple : on fait la moyenne des probabilités et on retient la plus haute. On peut donner plus de poids à un modèle réputé meilleur.

LE CAS MÉTIER

lecture automatique · banque / assurance / logistique
EN ENTRÉE

Des chiffres manuscrits scannés

Chaque chiffre d'un formulaire, d'un chèque ou d'un bon de livraison est une petite image de 8 × 8 pixels, soit 64 pixels notés de 0 (blanc) à 16 (noir). Et l'étiquette : le chiffre écrit, de 0 à 9.

EN SORTIE

Le chiffre lu, avec un niveau de confiance

Le vote donne le chiffre et, en vote souple, une probabilité moyenne. Les lectures peu sûres partent en vérification humaine, les autres sont saisies automatiquement.

CE QU'ON MESURE

Le taux de bonne lecture, et l'écart au meilleur

Sur ce découpage, le vote dur (98,9 %) et le vote souple (98,7 %) dépassent chacun des trois modèles, dont le meilleur, la SVM, lit 98,3 %. Ce gain n'est pas garanti : on le vérifie par validation croisée.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Plusieurs modèles corrects dont aucun ne domine nettement
  • Besoin de robustesse : ne pas dépendre des faiblesses d'un seul modèle
  • Premier essai de combinaison, avant d'envisager un stacking
  • Classification avec probabilités fiables : le vote souple les exploite

NON

  • Un modèle domine clairement les autres : le vote le tire vers le bas, garder le meilleur
  • Modèles très semblables (trois forêts) : leurs erreurs coïncident, le vote n'apporte rien
  • Explication individuelle exigée : un modèle unique et lisible
  • Besoin de pondérer finement selon les cas : le stacking apprend ces poids
LES 3 CHOIX QUI COMPTENT

Pas d'hyperparamètre propre au vote, mais trois choix de conception. En R, le vote se code en quelques lignes ; en Python, VotingClassifier le fait.

Les modèles de base (estimators)

Trois à cinq modèles de familles différentes : linéaire, noyau, arbres, voisins. La diversité compte plus que la performance individuelle de chacun.

voting = "hard" ou "soft"

Le vote dur compte les classes. Le vote souple moyenne les probabilités et tient compte de la confiance de chaque modèle ; il demande des modèles qui produisent des probabilités, comme une SVM avec probability=True.

weights

Des poids par modèle, égaux par défaut. On peut favoriser le meilleur modèle, mais des poids réglés trop finement sur les mêmes données font perdre la simplicité du vote.

LE CODE MINIMAL

jeu d'exemple : chiffres_manuscrits.csv ↓
# Lecture de chiffres manuscrits : Voting en R
library(randomForest)
library(e1071)
library(nnet)

chiffres <- read.csv("chiffres_manuscrits.csv")
chiffres$chiffre <- factor(chiffres$chiffre)
set.seed(42)
idx <- sample(nrow(chiffres), round(0.7 * nrow(chiffres)))
train <- chiffres[idx, ]
test <- chiffres[-idx, ]

# Pixels toujours vides retirés : inutiles, et gênants pour la SVM
pixels <- names(train)[1:64][apply(train[, 1:64], 2, var) > 0]
formule <- reformulate(pixels, response = "chiffre")

# Trois modèles qui se trompent différemment
foret <- randomForest(formule, data = train, ntree = 300)
svm_rbf <- svm(formule, data = train, probability = TRUE)
logit <- multinom(formule, data = train, maxit = 300, MaxNWts = 2000, trace = FALSE)

# Vote souple : moyenne des probabilités, colonnes alignées sur les mêmes classes
p_foret <- predict(foret, test, type = "prob")
p_svm <- attr(predict(svm_rbf, test, probability = TRUE), "probabilities")[, colnames(p_foret)]
p_logit <- predict(logit, test, type = "probs")[, colnames(p_foret)]
classes <- colnames(p_foret)
print(sapply(list(foret = p_foret, svm = p_svm, logit = p_logit),
             function(p) round(mean(classes[max.col(p)] == test$chiffre), 3)))
vote <- classes[max.col((p_foret + p_svm + p_logit) / 3)]
cat("Vote souple :", round(mean(vote == test$chiffre), 3), "\n")

QUESTIONS FRÉQUENTES

Vote dur ou vote souple ?

Le vote souple est en général préférable quand les modèles donnent des probabilités bien calibrées, car un modèle très sûr de lui pèse plus qu'un modèle hésitant. Le vote dur est plus robuste si certains modèles donnent des probabilités peu fiables. Le plus sûr est de comparer les deux par validation croisée.

Quelle différence entre voting et stacking ?

Le voting combine les prédictions avec une règle fixe : majorité ou moyenne. Le stacking entraîne un modèle supplémentaire qui apprend comment combiner les prédictions. Le stacking peut faire mieux, mais demande une validation croisée soignée et davantage de données.

Combien de modèles faut-il faire voter ?

Trois à cinq suffisent en général. Un nombre impair évite les égalités en vote dur à deux classes. Ajouter des modèles semblables à ceux déjà présents n'apporte presque rien : c'est la diversité des erreurs qui fait la force du vote.

LES ALGOS VOISINS

à comparer avant de choisir
le vote appris

Stacking

Un méta-modèle apprend le poids de chaque modèle. Plus fin, plus coûteux, plus exposé au surapprentissage.

Voir la fiche →
le même modèle, dupliqué

Bagging

Un seul type de modèle entraîné sur des tirages différents, puis un vote. Le principe de la Random Forest.

Voir la fiche →
un vote d'arbres

Random Forest

Des centaines d'arbres qui votent. Souvent un bon candidat parmi les modèles de base d'un vote.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →