GridSearch
Fonctions :
-
GridSearchCV()
La fonction GridSearchCV() de la bibliothèque sklearn.model_selection permet d'effectuer une recherche exhaustive sur une grille de paramètres pour un modèle d'apprentissage automatique. Cela permet de trouver les meilleures combinaisons d'hyperparamètres pour maximiser les performances du modèle. Elle applique la validation croisée pour évaluer chaque combinaison de paramètres et renvoyer le modèle avec la meilleure performance.
Importation :
from sklearn.model_selection import GridSearchCVAttributs :
Paramètre
Description
estimatorLe modèle à ajuster (par exemple, un classificateur ou un régression). C'est l'objet qui sera optimisé avec les hyperparamètres. param_gridDictionnaire ou liste de dictionnaires, où les clés sont les hyperparamètres à tester et les valeurs sont les valeurs possibles pour ces paramètres. scoringLa méthode de scoring à utiliser pour évaluer les performances du modèle. Par défaut, il est défini à None, ce qui signifie que la méthodescoredu modèle sera utilisée.cvLe nombre de splits pour la validation croisée. Par défaut, il est défini à 5. n_jobsLe nombre de processus à utiliser pour la recherche en parallèle. Par défaut, il est défini à 1 (aucune parallélisation). verboseLe niveau de verbosité du processus de recherche. Par défaut, il est défini à 0 (pas de sortie). refitSi True, le modèle sera réajusté avec les meilleurs hyperparamètres trouvés. Par défaut, il est défini àTrue.Exemple de code :
from sklearn.model_selection import GridSearchCV from sklearn.svm import SVC from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split # Chargement du jeu de données Iris data = load_iris() X = data.data y = data.target # Division des données en train et test X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Définition du modèle à optimiser model = SVC() # Définition de la grille des hyperparamètres param_grid = { 'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf'], 'gamma': ['scale', 'auto'] } # Initialisation de GridSearchCV grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5, verbose=1) # Ajustement du modèle avec la grille de paramètres grid_search.fit(X_train, y_train) # Affichage des meilleurs hyperparamètres print(f"Meilleurs hyperparamètres : {grid_search.best_params_}") # Évaluation du modèle avec les meilleurs paramètres best_model = grid_search.best_estimator_ accuracy = best_model.score(X_test, y_test) print(f"Précision sur le jeu de test : {accuracy:.4f}")Explication du code :
-
Chargement des données :
-
Le jeu de données Iris est chargé via
load_iris()qui contient des informations sur les fleurs d'iris avec quatre caractéristiques et une variable cible représentant la classe de l'iris.
-
-
Séparation des données :
-
Les données sont divisées en ensembles d'entraînement et de test avec
train_test_split(), 70 % des données sont utilisées pour l'entraînement et 30 % pour les tests.
-
-
Définition du modèle :
-
Nous choisissons un classificateur SVM (
SVC()) comme modèle pour effectuer la classification.
-
-
Grille des hyperparamètres :
-
La grille des hyperparamètres (
param_grid) définit différentes valeurs à tester pour les paramètresC,kernel, etgammade l'algorithme SVM. Nous testons différentes valeurs pour chacun de ces paramètres.
-
-
Initialisation de GridSearchCV :
-
GridSearchCVest initialisé avec le modèleSVC(), la grille de paramètresparam_grid, et un nombre de 5 pour la validation croisée (cv=5).
-
-
Ajustement du modèle :
-
grid_search.fit()ajuste le modèle aux données d'entraînement, en effectuant une recherche exhaustive de la meilleure combinaison de paramètres pour chaque combinaison d'hyperparamètres de la grille.
-
-
Affichage des meilleurs paramètres :
-
Après l'ajustement,
grid_search.best_params_affiche les meilleurs paramètres trouvés lors de la recherche.
-
-
Évaluation avec les meilleurs paramètres :
-
Le modèle avec les meilleurs paramètres (
grid_search.best_estimator_) est utilisé pour prédire les classes sur le jeu de test, et la précision est calculée avecscore().
-
Points importants :
-
Recherche exhaustive :
GridSearchCVeffectue une recherche sur toutes les combinaisons possibles d'hyperparamètres, ce qui permet de trouver les meilleurs paramètres pour le modèle, mais peut être coûteux en termes de temps de calcul pour un grand nombre de paramètres. -
Validation croisée : Par défaut,
GridSearchCVutilise la validation croisée pour évaluer les performances de chaque combinaison d'hyperparamètres. Cela réduit le risque de sur-apprentissage (overfitting) et donne une estimation plus fiable des performances du modèle. -
Parallélisation : Le paramètre
n_jobspermet de paralléliser la recherche pour accélérer le processus. Par exemple,n_jobs=-1utilisera tous les processeurs disponibles.
Applications courantes :
-
Optimisation des hyperparamètres :
GridSearchCVest couramment utilisé pour ajuster les hyperparamètres d'un modèle d'apprentissage automatique, afin de maximiser les performances sur un jeu de données donné. -
Sélection de modèle : Il est également utilisé pour tester différents modèles avec différentes combinaisons d'hyperparamètres et choisir le modèle avec les meilleures performances.
Exemple d'application pratique :
Imaginons que vous ayez une tâche de classification d'images où vous utilisez un modèle SVM. Avec
GridSearchCV, vous pouvez tester différentes valeurs pour les hyperparamètres tels queC,kernel, etgammapour optimiser les performances de votre modèle. Grâce à la validation croisée, vous obtenez des résultats plus robustes et pouvez être plus confiant dans le choix des meilleurs hyperparamètres pour le modèle final. -