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.
Was ist SHAP?
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.
Wie Sie die Shapely-Werte berechnen können
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.
HINWEIS
Während Sie das Experiment durchführen, müssen Sie die folgenden Bedingungen für die Spiele sicherstellen:
- Bevor Sie das Experiment durchführen, müssen Sie davon ausgehen, dass der Versuch der Spieler bereits abgeschlossen ist
- Sie müssen auch davon ausgehen, dass jeder Spieler in mindestens einem Spiel auftreten kann, damit wir das Ergebnis auf relevante Daten stützen können.
- Es sollte ein Spiel geben, in dem ein Spieler nicht zur Verfügung steht, während die beiden anderen verfügbar sind.
- Unten finden Sie nur ein Beispiel. Sie können jede beliebige Metrik entsprechend der Rangliste des Turniers nehmen. Unten finden Sie die Gesamtpunkte als Metrik:
Schritt 1: Wenn Spieler A nicht spielt, aber Spieler B und C in einer Kombination spielen.
In dieser Bedingung müssen wir die Durchschnittspunkte der Spiele nehmen. Sie müssen bedenken, dass Spieler A nicht spielt, so dass der Durchschnitt nur die Punkte von Spieler B und C enthält.Sie können auch eine einzelne Stichprobe nehmen, um die Antwort zu finden. In diesem Beispiel nehmen Sie eine durchschnittliche Gesamtpunktzahl von 60 Punkten an.
Schritt 2: Wenn Spieler C nicht spielt, aber Spieler A und B in einer Kombination spielen.
Nun betrachten wir den Durchschnitt von Spieler A und B, während Spieler C nicht spielt. Angenommen, die Gesamtpunktzahl der Mannschaft beträgt 90 Punkte.
Da alle Spieler in einem der Spiele gespielt haben, können wir nun die Gesamtpunktzahl von Spieler A ermitteln, indem wir 85 von 65 subtrahieren. Die Antwort wäre 30 Punkte. Sie können das Experiment auch durchführen, indem Sie den Durchschnitt mehrfach berechnen und die Differenz ermitteln.
Implementierung der Codes
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’)
Vorverarbeiten der Daten nach dem Einlesen
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:
Lesen Sie die Daten
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’]
Passen Sie Ihr Modell an
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)
Wichtige Eigenschaften von Shap-Werten
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.
- Zuerst müssen Sie einen JS-Visualisierungscode in Ihrer Bibliothek starten.
JS-Visualisierungscode in das Notizbuch laden
shap.initjs()
- Jetzt können Sie die Vorhersage Ihres Modells erklären.
- Sie können damit beginnen, die SHAP-Werte und den Erklärer zu sammeln
shap_values.
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
Plotten der Ergebnisse
Plotten erzwingen
i = 5
shap.force_plot(explaininer.expected_value, shap_values[i], features=X.iloc[i], feature_names=X.columns)
Fazit
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.