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 GridSearchCV

    Attributs :

    Paramètre
    Description
    estimator Le modèle à ajuster (par exemple, un classificateur ou un régression). C'est l'objet qui sera optimisé avec les hyperparamètres.
    param_grid Dictionnaire ou liste de dictionnaires, où les clés sont les hyperparamètres à tester et les valeurs sont les valeurs possibles pour ces paramètres.
    scoring La 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éthode score du modèle sera utilisée.
    cv Le nombre de splits pour la validation croisée. Par défaut, il est défini à 5.
    n_jobs Le nombre de processus à utiliser pour la recherche en parallèle. Par défaut, il est défini à 1 (aucune parallélisation).
    verbose Le niveau de verbosité du processus de recherche. Par défaut, il est défini à 0 (pas de sortie).
    refit Si 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 :

    1. 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.

    2. 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.

    3. Définition du modèle :

      • Nous choisissons un classificateur SVM (SVC()) comme modèle pour effectuer la classification.

    4. Grille des hyperparamètres :

      • La grille des hyperparamètres (param_grid) définit différentes valeurs à tester pour les paramètres C, kernel, et gamma de l'algorithme SVM. Nous testons différentes valeurs pour chacun de ces paramètres.

    5. Initialisation de GridSearchCV :

      • GridSearchCV est initialisé avec le modèle SVC(), la grille de paramètres param_grid, et un nombre de 5 pour la validation croisée (cv=5).

    6. 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.

    7. Affichage des meilleurs paramètres :

      • Après l'ajustement, grid_search.best_params_ affiche les meilleurs paramètres trouvés lors de la recherche.

    8. É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 avec score().

    Points importants :

    • Recherche exhaustive : GridSearchCV effectue 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, GridSearchCV utilise 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_jobs permet de paralléliser la recherche pour accélérer le processus. Par exemple, n_jobs=-1 utilisera tous les processeurs disponibles.

    Applications courantes :

    • Optimisation des hyperparamètres : GridSearchCV est 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 que C, kernel, et gamma pour 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.