Interprétation de votre modèle d’apprentissage profond par le SHAP

Lorsque vous interprétez les résultats des données prédictives, veillez à effectuer chaque étape avec soin. Pour satisfaire les utilisateurs, vous devez fournir des informations faciles à comprendre. Vous pouvez y parvenir en améliorant le processus de votre modèle. Il est normal de se concentrer sur des modèles simples plutôt que sur des modèles complexes. Par exemple, les modèles linéaires vous aideront à faciliter l’interprétation. Toutefois, en cas de quantité excessive de données, l’utilisation de modèles complexes présente de nombreux avantages. Avec un tel modèle, vous pouvez faire un compromis de premier plan pour obtenir des résultats précis et interprétables. Vous pouvez choisir parmi de nombreuses méthodes différentes pour résoudre des problèmes complexes. Toutefois, ces solutions n’impliquent pas la manière dont ces méthodes sont liées les unes aux autres. En outre, il n’existe pas de données permettant de justifier pourquoi une méthode est meilleure que l’autre.
La construction de SHAP s’inspire du cadre unifié précédent. Cette nouvelle approche du cadre SHAP utilise les valeurs de Shapely. Ci-dessous, vous pouvez comprendre la définition de SHAP et comment vous pouvez implémenter le concept avec le paquet Python.
Shapley Additive exPlanations ou SHAP est une approche utilisée dans la théorie des jeux. Avec SHAP, vous pouvez expliquer le résultat de votre modèle d’apprentissage de la machine. Ce modèle relie l’explication locale de l’allocation optimale de crédits à l’aide des valeurs de Shapley. Cette approche est très efficace avec la théorie des jeux.
SHAP est une valeur vedette de la contribution marginale moyenne parmi toutes les combinaisons possibles de la caractéristique. Nous verrons ci-dessous comment SHAP ou Shapely Additive exPlanations est en train de devenir une technique populaire dans l’apprentissage machine. Nous pouvons comprendre le concept à l’aide de l’exemple suivant :
Nous pouvons considérer les points qu’une équipe marque à chaque match d’une saison. Supposons que nous voulions trouver le score moyen du joueur A et sa contribution en tant que score d’équipe dans un match. Pour cela, nous devons trouver la contribution du joueur A dans le partenariat du joueur B et du joueur C.
Pendant que vous effectuez l’expérience, vous devez vous assurer que les conditions suivantes sont respectées :
Tout d’abord, vous devez importer toutes les bibliothèques nécessaires à l’aide des codes suivants :
importer les pandas en tant que pd
import numpy as np
forme d’importation
de sklearn.model_selection import train_test_split
de sklearn.metrics import mean_squared_error
de sklearn.linear_model import LinearRegression
de sklearn.tree import DecisionTreeRegressor
de sklearn.ensemble import RandomForestRegressor
de xgboost.sklearn import XGBRegressor
de sklearn.preprocessing import OneHotEncoder, LabelEncoder
de l’arbre d’importation de sklearn
importer matplotlib.pyplot en tant que plt
%matplotlib inline
les avertissements à l’importation
warnings.filterwarnings(“ignore”)
L’exemple suivant concerne l’immobilier. Cependant, vous pouvez utiliser n’importe quel ensemble de données pour trouver le résultat avec cette méthode. Ceci n’est qu’un exemple, l’imputation et le prétraitement ne sont donc pas importants. Mais lorsque vous effectuez un test original, vous devez suivre la procédure complète :
data = pd.read_csv(‘data.csv’)# Supprimer les caractéristiques ayant des valeurs nulles élevées
data.drop([‘PoolQC’, ‘MiscFeature’, ‘Fence’, ‘FireplaceQu’,
LotFrontage’], inplace=True, axis=1)# Supprimer les valeurs nulles
data.dropna(inplace=True)# Préparer X et Y
X = pd.get_dummies(données)
X.drop([“SalePrice”], inplace=True, axis=1)
y = données [“Prix de vente”].
Dans cette étape, vous devez faire correspondre le modèle à l’ensemble des données :
modèle = XGBRegressor(n_estimateurs=1000, max_depth=10, learning_rate=0.001)# Ajuster le modèle
model.fit(X, y)
Maintenant, vous devez utiliser la bibliothèque SHAP. C’est la bibliothèque la plus puissante disponible. Vérifiez les parcelles qu’elle propose.
charger le code de visualisation JS dans le portable
shap.initjs()
Traçage de force
i = 5
shap.force_plot(expliner.expected_value, shap_values[i], features=X.iloc[i], feature_names=X.columns)
À l’aide de l’explication ci-dessus, vous pouvez visualiser les caractéristiques qui contribuent à trouver la sortie de votre modèle et à pousser la valeur de base. La valeur de base est la sortie moyenne du modèle que nous recevons à l’aide des données de formation.