Die Interpretation Ihres Modells des tiefen Lernens durch SHAP

Wenn Sie die Ausgabe von Vorhersagedaten interpretieren, müssen Sie jeden Schritt sorgfältig ausführen. Um die Benutzer zufriedenzustellen, müssen Sie leicht verständliche Erkenntnisse liefern. Dies können Sie erreichen, indem Sie den Prozess Ihres Modells verbessern. Es ist in Ordnung, sich auf einfache Modelle zu konzentrieren und nicht auf komplexe Modelle. Zum Beispiel helfen Ihnen lineare Modelle bei der einfachen Interpretation. Bei übermäßigen Datenmengen bringt die Verwendung komplexer Modelle jedoch zahlreiche Vorteile mit sich. Mit einem solchen Modell können Sie einen Kompromiss zwischen Genauigkeit und Interpretierbarkeit der Ergebnisse erzielen. Sie können aus zahlreichen verschiedenen Methoden wählen, um komplexe Probleme zu lösen. Aus diesen Lösungen geht jedoch nicht hervor, wie sich diese Methoden zueinander verhalten. Außerdem gibt es keine Daten, die belegen, warum die eine Methode besser ist als die andere.
Die SHAP-Konstruktion lässt sich von dem bisherigen einheitlichen Framework inspirieren. Dieser neue Ansatz des SHAP-Frameworks verwendet Shapely-Werte. Im Folgenden wird die Definition von SHAP erläutert und wie Sie das Konzept mit dem Python-Paket implementieren können.
Shapley Additive exPlanations oder SHAP ist ein Ansatz, der in der Spieltheorie verwendet wird. Mit SHAP können Sie die Ausgabe Ihres maschinellen Lernmodells erklären. Dieses Modell verbindet die lokale Erklärung der optimalen Kreditvergabe mit Hilfe von Shapely-Werten. Dieser Ansatz ist in der Spieltheorie sehr effektiv.
SHAP ist ein Merkmalswert des durchschnittlichen marginalen Beitrags unter allen möglichen Kombinationen des Merkmals. Im Folgenden werden wir besprechen, wie SHAP oder Shapely Additive exPlanations zu einer beliebten Technik beim maschinellen Lernen wird. Wir können das Konzept anhand des folgenden Beispiels verstehen:
Wir können die Punkte betrachten, die eine Mannschaft in jedem Spiel einer Saison erzielt. Angenommen, wir möchten die durchschnittliche Punktzahl von Spieler A und seinen Beitrag als Mannschaftspunktzahl in einem Spiel finden. Dazu müssen wir den Beitrag von Spieler A in der Partnerschaft von Spieler B und Spieler C finden.
Während Sie das Experiment durchführen, müssen Sie die folgenden Bedingungen für die Spiele sicherstellen:
Zunächst müssen Sie alle notwendigen Bibliotheken mit Hilfe der folgenden Codes importieren:
import pandas as pd
import numpy as np
import shap
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.linear_model import LinearRegression
from sklearn.tree import EntscheidungsBaumRegressor
from sklearn.ensemble import RandomForestRegressor
from xgboost.sklearn import XGBRegressor
from sklearn.preprocessing import OneHotEncoder, LabelEncoder
from sklearn import Baum
import matplotlib.pyplot as plt
%matplotlib inline
importiere warnungen
warnings.filterwarnings(‘ignore’)
Im folgenden Beispiel geht es um Immobilien. Sie können jedoch jeden beliebigen Datensatz verwenden, um mit dieser Methode die Ausgabe zu finden. Dies ist nur ein Beispiel, daher sind Imputation und Vorverarbeitung nicht wichtig. Wenn Sie jedoch einen Originaltest durchführen, müssen Sie die komplette Prozedur befolgen:
data = pd.read_csv(‘data.csv’)# Entfernen Sie Merkmale mit hohen Nullwerten
data.drop([‘PoolQC’, ‘MiscFeature’, ‘Fence’, ‘FireplaceQu’,
‘LotFront’], inplace=True, axis=1)# Nullwerte entfernen
data.dropna(inplace=True)# X und Y vorbereiten
X = pd.get_dummies(data)
X.drop([‘Verkaufspreis’], inplace=True, axis=1)
y = Daten[‘Verkaufspreis’]
In diesem Schritt müssen Sie das Modell mit dem Datensatz anpassen:
model = XGBRegressor(n_estimators=1000, max_depth=10, learning_rate=0.001)# Fit the Model
model.fit(X, y)
Jetzt müssen Sie die SHAP-Bibliothek verwenden. Dies ist die leistungsfähigste Bibliothek, die es gibt. Prüfen Sie die Plots, die sie anbietet.
JS-Visualisierungscode in das Notizbuch laden
shap.initjs()
Plotten erzwingen
i = 5
shap.force_plot(explaininer.expected_value, shap_values[i], features=X.iloc[i], feature_names=X.columns)
Mit Hilfe der obigen Erklärung können Sie Features anzeigen, die dazu beitragen, die Ausgabe Ihres Modells zu finden und den Basiswert zu drücken. Der Basiswert ist die durchschnittliche Ausgabe des Modells, die wir mit Hilfe der Trainingsdaten erhalten.