Permutation Importance

Fonctions :

  • permutation_importance()

    permutation_importance() est une méthode fournie par sklearn.inspection qui permet de mesurer l'importance des caractéristiques d'un modèle en perturbant les valeurs de chaque caractéristique et en observant l'impact sur les performances du modèle.

    Importation :

    from sklearn.inspection import permutation_importance

    Attributs :

    Attribut Description
    estimator Le modèle entraîné à évaluer. Exemple : un classificateur ou un régressseur, comme un RandomForestClassifier ou un LogisticRegression.
    X Tableau ou DataFrame contenant les caractéristiques d'entrée utilisées pour générer des prédictions (les données de test).
    y Tableau ou série contenant les valeurs cibles pour l'évaluation du modèle.
    n_repeats Le nombre de répétitions de la permutation pour chaque caractéristique. Par défaut : 10.
    random_state Contrôle l'initialisation aléatoire pour rendre les résultats reproductibles. Par défaut : None.
    scoring La métrique utilisée pour évaluer la performance du modèle, comme 'accuracy', 'neg_mean_squared_error', etc.
    n_jobs Le nombre de jobs parallèles à utiliser pour effectuer les calculs. Par défaut : 1 (pas de parallélisme).

    Exemple de code :

    from sklearn.ensemble import RandomForestClassifier
    from sklearn.model_selection import train_test_split
    from sklearn.datasets import load_iris
    from sklearn.inspection import permutation_importance
    
    # Charger un dataset d'exemple
    data = load_iris()
    X = data.data
    y = data.target
    
    # Diviser les données en ensembles d'entraînement et de test
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    
    # Entraîner un modèle RandomForest
    model = RandomForestClassifier(random_state=42)
    model.fit(X_train, y_train)
    
    # Calculer l'importance des caractéristiques par permutation
    results = permutation_importance(model, X_test, y_test, n_repeats=10, random_state=42, scoring='accuracy')
    
    # Afficher les résultats
    print("Importance des caractéristiques (moyenne des scores après permutation) :")
    for i in range(len(data.feature_names)):
        print(f"{data.feature_names[i]} : {results.importances_mean[i]}")
    Résultat du code

    Explication du code :

    • Chargement des données : Nous utilisons ici le jeu de données Iris fourni par sklearn comme exemple.

    • Division des données : Les données sont divisées en ensembles d'entraînement et de test à l'aide de train_test_split.

    • Entraînement du modèle : Un modèle RandomForestClassifier est créé et entraîné sur l'ensemble d'entraînement.

    • Permutation de l'importance : La fonction permutation_importance() est utilisée pour calculer l'importance de chaque caractéristique dans l'ensemble de test en perturbant chaque colonne de caractéristiques et en observant l'impact sur la précision du modèle. Le paramètre n_repeats=10 signifie que chaque permutation est répétée 10 fois pour plus de robustesse.

    • Affichage des résultats : Les importances moyennes des caractéristiques sont imprimées, montrant l'impact de chaque caractéristique sur la performance du modèle. Les valeurs sont extraites de results.importances_mean, qui contient la moyenne de l'importance pour chaque caractéristique.

     

    Explications supplémentaires :

    • Scoring : Le scoring peut être personnalisé pour utiliser différentes métriques selon le type de problème (par exemple, accuracy, f1, etc.).

    • N_repeats : Plus le nombre de répétitions (n_repeats) est élevé, plus les résultats sont fiables. Cependant, un nombre élevé de répétitions peut rendre le calcul plus long.