Accueil / Factory / Algos ML / Grid search / random search — factory / algos ML / réglage des hyperparamètres

GRID SEARCH / RANDOM SEARCH.

Deux façons simples de régler un modèle : essayer toutes les combinaisons d'une grille de réglages (grid search), ou en tirer un certain nombre au hasard (random search). Chaque combinaison est notée en validation croisée et la meilleure est retenue. C'est la méthode de réglage par défaut, à connaître avant toute technique plus sophistiquée.

RéglageHyperparamètresValidation croiséeChoix de modèleNiveau : débutant

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceTrouve un bon réglage si les plages sont bien choisies
InterprétabilitéUn tableau des scores par combinaison, lisible par tous
VitesseLe nombre d'essais explose avec le nombre de réglages
Facilité de réglageSeules les plages de valeurs à définir, idéalement en échelle log
Tolérance aux données brutesTolérance héritée du modèle réglé, rien de plus à préparer
EN 30 SECONDES

Pour trouver la meilleure cuisson d'un gâteau, on peut tester toutes les températures de 10 en 10 degrés et toutes les durées de 5 en 5 minutes. Ou tirer 16 couples au hasard : on explore autant de valeurs différentes de chaque réglage, pour le même nombre de gâteaux.

1. On définit l'espace de recherche

Pour chaque hyperparamètre, une liste de valeurs (grille) ou une plage continue (random). Pour les réglages qui varient sur plusieurs ordres de grandeur, comme C ou gamma d'un SVM, on raisonne en échelle logarithmique.

2. On note chaque combinaison

Chaque combinaison est évaluée en validation croisée sur les données d'entraînement, avec la métrique qui compte pour le métier.

3. On garde la meilleure et on vérifie

Le modèle est réentraîné avec les meilleurs réglages sur tout l'entraînement, puis évalué une seule fois sur un jeu de test resté à l'écart.

LE CAS MÉTIER

lecture automatique · formulaires, chèques, bons de commande
EN ENTRÉE

1 797 chiffres manuscrits scannés

Chaque image de 8 x 8 pixels doit être reconnue comme un chiffre de 0 à 9. Le modèle est un SVM à noyau, dont deux réglages changent tout : C (sévérité envers les erreurs d'apprentissage) et gamma (portée du noyau).

EN SORTIE

Le meilleur couple de réglages

Sur le jeu d'exemple, la grille de 16 combinaisons retient C = 10 et gamma = 0,1, avec 98,9 % d'exactitude en validation croisée. Le tableau montre aussi qu'un mauvais réglage fait tomber l'exactitude à 23 %. Le random search, pour 16 essais aussi, trouve un réglage équivalent.

CE QU'ON MESURE

L'exactitude sur des chiffres jamais vus

Les 10 chiffres sont équilibrés : l'exactitude (part de chiffres bien lus) est ici une bonne mesure. Le verdict se fait sur 25 % d'images mises de côté avant le réglage : 99,1 % pour les deux méthodes.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • 1 à 3 réglages et un modèle rapide à entraîner : la grille reste abordable
  • Premier réglage d'un modèle, pour voir quels paramètres comptent vraiment
  • Random search dès 3 ou 4 réglages : même budget, plus de valeurs explorées par réglage
  • Calculs faciles à paralléliser (n_jobs=-1)

NON

  • Modèle long à entraîner et beaucoup de réglages : préférer l'optimisation bayésienne
  • Réglages sans aucune idée des bonnes plages : commencer large en random search, puis resserrer
  • Séries temporelles avec validation croisée au hasard : utiliser un découpage chronologique
  • Choisir le modèle final sur le score de validation croisée seul : il est optimiste, garder un jeu de test
LES 4 CHOIX QUI COMPTENT

Noms donnés pour R (e1071::tune) et Python (scikit-learn).

Espace de recherche : ranges / param_grid

Des plages larges en échelle log (0,001 ; 0,01 ; 0,1…) pour les réglages de type taux ou pénalité. Si le meilleur réglage tombe au bord de la grille, élargir la grille.

Nombre d'essais : random / n_iter

En random search, 20 à 60 essais trouvent en général un réglage proche du meilleur. Le budget se fixe en temps de calcul disponible.

Validation : cross / cv

5 blocs est un bon compromis. Avec une classe rare, un découpage stratifié ; avec des données datées, un découpage chronologique.

Métrique : scoring

Le réglage optimise ce qu'on lui demande. Exactitude pour des classes équilibrées, AUC ou rappel pour une classe rare, erreur en euros pour une prévision.

LE CODE MINIMAL

jeu d'exemple : chiffres_manuscrits.csv ↓
# Lecture de chiffres manuscrits : grid search et random search en R
library(e1071)

chiffres <- read.csv("chiffres_manuscrits.csv")
X <- as.matrix(chiffres[, 1:64]) / 16                # pixels ramenés entre 0 et 1
y <- factor(chiffres$chiffre)
set.seed(42)
idx <- sample(nrow(X), round(0.75 * nrow(X)))

# Grid search : 4 x 4 = 16 combinaisons, chacune testée en validation croisée à 5 blocs
grid <- tune(svm, train.x = X[idx, ], train.y = y[idx], scale = FALSE,
             ranges = list(cost = c(0.1, 1, 10, 100), gamma = c(0.001, 0.01, 0.1, 1)),
             tunecontrol = tune.control(cross = 5))
print(grid$best.parameters)
cat("Exactitude CV (grid) :", round(1 - grid$best.performance, 4), "\n")

# Random search : 16 combinaisons tirées au hasard dans une grille fine (échelle log)
rand <- tune(svm, train.x = X[idx, ], train.y = y[idx], scale = FALSE,
             ranges = list(cost = 10^seq(-1, 2, by = 0.25), gamma = 10^seq(-3, 0, by = 0.25)),
             tunecontrol = tune.control(cross = 5, random = 16))
print(rand$best.parameters)
cat("Exactitude CV (random) :", round(1 - rand$best.performance, 4), "\n")

# Verdict sur des chiffres jamais vus pendant le réglage
cat("Exactitude test (grid) :", round(mean(predict(grid$best.model, X[-idx, ]) == y[-idx]), 4), "\n")

QUESTIONS FRÉQUENTES

Quelle différence entre grid search et random search ?

Le grid search teste toutes les combinaisons d'une grille fixée à l'avance. Le random search tire un nombre donné de combinaisons au hasard dans des plages de valeurs. À budget égal, le random search explore plus de valeurs différentes de chaque réglage, ce qui le rend souvent plus efficace quand seuls un ou deux réglages comptent vraiment.

Qu'est-ce qu'un hyperparamètre ?

C'est un réglage du modèle fixé avant l'apprentissage, par opposition aux paramètres appris sur les données. Par exemple, la profondeur maximale d'un arbre ou le nombre d'arbres d'une forêt sont des hyperparamètres ; les seuils de découpage sont des paramètres appris.

GridSearchCV est trop lent, que faire ?

Réduire la grille aux réglages qui comptent, passer à RandomizedSearchCV avec un nombre d'essais fixé, paralléliser avec n_jobs=-1, ou utiliser HalvingGridSearchCV qui élimine tôt les mauvaises combinaisons. Au-delà, l'optimisation bayésienne (Optuna) réduit encore le nombre d'essais.

LES ALGOS VOISINS

à comparer avant de choisir
plus économe en essais

Optimisation bayésienne

Choisit chaque nouvel essai d'après les résultats des précédents. Utile quand un entraînement coûte cher.

Voir la fiche →
le juge de chaque essai

Validation croisée

La méthode qui note chaque combinaison. Sans elle, le réglage surapprend.

Voir la fiche →
le modèle réglé ici

SVM à noyau

Très sensible à C et gamma : un exemple type où le réglage change tout.

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 →