Interprétation des modèles arborescents avec SHAP TreeExplainer

Le SHAP TreeExplainer est une méthode rapide et précise pour interpréter les prédictions des modèles basés sur des arbres de décision, comme ceux entraînés avec XGBoost, LightGBM, CatBoost ou encore le RandomForestClassifier de scikit-learn.

Conçu spécifiquement pour ce type de modèle, TreeExplainer permet de calculer les valeurs de SHAP de façon efficace, en tirant parti de la structure arborescente du modèle pour en extraire les contributions exactes de chaque variable à chaque prédiction.


Pourquoi TreeExplainer ?

Contrairement à d’autres approches plus génériques (comme KernelExplainer), TreeExplainer :


Que fournit TreeExplainer ?

Pour chaque prédiction individuelle, TreeExplainer décompose la sortie du modèle en :

Cela permet une interprétation locale, mais les résultats peuvent également être agrégés pour une analyse globale.

Fonctions :

  • shap.TreeExplainer()

    La fonction shap.TreeExplainer() est utilisée pour expliquer les prédictions d'un modèle d'arbre de décision ou d'un modèle d'ensembles d'arbres, comme les modèles de Random Forest, XGBoost, LightGBM, CatBoost, et d'autres. Elle permet de calculer les valeurs de Shapley, une méthode de jeu coopératif qui attribue à chaque caractéristique une importance relative dans la prédiction d'un modèle. Ce type d'explication est utile pour comprendre l'impact de chaque caractéristique sur les résultats d'un modèle de manière précise et transparente.

    Importation :

    import shap

    Attributs :

    Paramètre Type Valeur par défaut Description
    model Modèle de machine learning None Le modèle que l'on souhaite expliquer. Cela peut être un modèle d'arbre de décision comme XGBoost, LightGBM, CatBoost, ou un modèle de forêt aléatoire.
    data array-like ou pandas DataFrame None Les données d'entraînement ou de test que le modèle a utilisées pour ses prédictions.
    feature_perturbation str 'tree_path_dependent' La méthode de perturbation des caractéristiques. 'tree_path_dependent' est souvent utilisé pour des modèles d'arbres, tandis que d'autres méthodes peuvent être choisies pour d'autres types de modèles.
    link str ou callable 'identity' La fonction de lien utilisée pour transformer les prédictions. 'identity' signifie que les valeurs de sortie sont directement utilisées.

    Exemple de code :

    import shap
    import xgboost
    from sklearn.datasets import make_classification
    from sklearn.model_selection import train_test_split
    
    # Générer des données d'exemple
    X, y = make_classification(n_samples=1000, n_features=20, random_state=42)
    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 XGBoost
    model = xgboost.XGBClassifier()
    model.fit(X_train, y_train)
    
    # Créer un explainer SHAP pour le modèle d'arbre
    explainer = shap.TreeExplainer(model)
    
    # Calculer les valeurs SHAP pour l'ensemble de test
    shap_values = explainer.shap_values(X_test)
    
    # Visualiser l'impact des caractéristiques sur les prédictions
    shap.summary_plot(shap_values, X_test)

    Explication du code :

    1. Données et modèle : Nous générons un jeu de données de classification avec 1000 échantillons et 20 caractéristiques, puis nous le divisons en ensembles d'entraînement et de test. Un modèle XGBoost est entraîné sur ces données.

    2. Création de l'explainer : Un objet TreeExplainer est créé pour expliquer les prédictions du modèle XGBoost. L'objet explainer sera ensuite utilisé pour calculer les valeurs de Shapley, qui expliquent l'impact de chaque caractéristique sur la prédiction du modèle.

    3. Calcul des valeurs SHAP : Nous appelons explainer.shap_values() pour calculer les valeurs de Shapley pour les prédictions faites par le modèle sur l'ensemble de test.

    4. Visualisation : Nous utilisons shap.summary_plot() pour afficher un graphique résumant l'importance de chaque caractéristique sur les prédictions du modèle, à l'aide des valeurs de Shapley.

    Sortie attendue :

    • Un graphique interactif qui montre l'importance de chaque caractéristique pour les prédictions du modèle. Ce graphique permet de voir comment chaque caractéristique influence les prédictions, avec une visualisation des interactions et des effets de chaque caractéristique.

    Applications :

    • Interprétation des modèles d'arbres : La fonction TreeExplainer est particulièrement utile pour expliquer des modèles d'arbres comme XGBoost, LightGBM, ou CatBoost. Elle fournit des explications détaillées et interprétables des prédictions.

    • Évaluation de l'importance des caractéristiques : L'utilisation des valeurs de Shapley aide à comprendre l'impact des différentes caractéristiques dans le modèle, facilitant l'interprétation et l'explication des résultats des modèles.

    • Transparence des modèles : SHAP est utilisé pour augmenter la transparence des modèles de machine learning, en particulier pour les modèles complexes comme ceux utilisant des ensembles d'arbres.