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.
Qu’est-ce que SHAP ?
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.
Comment calculer les valeurs de Shapely
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.
NOTE
Pendant que vous effectuez l’expérience, vous devez vous assurer que les conditions suivantes sont respectées :
- Avant de réaliser l’expérience, vous devez supposer que l’essai des joueurs est déjà terminé
- Vous devez également supposer que chaque joueur peut jouer au moins un match afin que nous puissions baser le résultat sur des données pertinentes.
- Il doit y avoir un match dans lequel un joueur n’est pas disponible alors que les deux autres le sont.
- Vous trouverez ci-dessous un exemple. Vous pouvez prendre n’importe quelle mesure en fonction du classement du tournoi. Vous trouverez ci-dessous le total des points comme mesure :
Étape 1 : Lorsque le joueur A ne joue pas, mais que les joueurs B et C jouent dans une combinaison.
Dans cette condition, il faut prendre la moyenne des points des matchs. Vous devez vous rappeler que le joueur A ne joue pas, donc la moyenne n’inclura que les scores du joueur B et C. Vous pouvez également prendre un seul échantillon aléatoire pour trouver la réponse. Dans cet exemple, vous supposerez qu’un score total moyen est égal à 60 points.
Étape 2 : Lorsque le joueur C ne joue pas, mais que les joueurs A et B jouent ensemble.
Nous allons maintenant considérer la moyenne des joueurs A et B, alors que le joueur C ne joue pas. Supposons que le score total de l’équipe soit de 90 points.
Comme tous les joueurs ont joué dans l’un des matchs, nous pouvons maintenant trouver le total des points du joueur A en soustrayant 85 à 65. La réponse serait 30 points. Vous pouvez également réaliser l’expérience en calculant la moyenne de l’expérience plusieurs fois et en trouvant la différence.
Mise en œuvre des codes
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”)
Prétraiter les données après lecture
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 :
Lire les données
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”].
Adaptez votre modèle
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)
Caractéristiques importantes de Shap Values
Maintenant, vous devez utiliser la bibliothèque SHAP. C’est la bibliothèque la plus puissante disponible. Vérifiez les parcelles qu’elle propose.
- Tout d’abord, vous devez lancer un code de visualisation JS dans votre bibliothèque.
charger le code de visualisation JS dans le portable
shap.initjs()
- Vous pouvez maintenant expliquer la prédiction de votre modèle.
- Vous pouvez commencer par collecter les valeurs SHAP et l’explicatif
shap_values.
explicateur = shap.TreeExplainer(modèle)
shap_values = explaniner.shap_values(X)
Tracer les résultats
Traçage de force
i = 5
shap.force_plot(expliner.expected_value, shap_values[i], features=X.iloc[i], feature_names=X.columns)
Conclusion
À 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.