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 :
-
Est beaucoup plus rapide car il évite les simulations coûteuses.
-
Produit des valeurs exactes de SHAP (sans approximation) pour les arbres.
-
Fonctionne directement avec les modèles déjà entraînés.
Que fournit TreeExplainer ?
Pour chaque prédiction individuelle, TreeExplainer décompose la sortie du modèle en :
-
Une valeur de base (la prédiction moyenne sur l’ensemble du jeu de données).
-
Une somme de contributions individuelles : une valeur SHAP par variable expliquant l’écart par rapport à la moyenne.
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 :
-
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.
-
Création de l'explainer : Un objet
TreeExplainer
est créé pour expliquer les prédictions du modèle XGBoost. L'objetexplainer
sera ensuite utilisé pour calculer les valeurs de Shapley, qui expliquent l'impact de chaque caractéristique sur la prédiction du modèle. -
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. -
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.
-