XGboost - Wahl nach Modell

10

Ich verwende XGboost , um eine Zielvariable mit zwei Klassen für Versicherungsansprüche vorherzusagen. Ich habe ein Modell (Training mit Kreuzvalidierung, Optimierung von Hyperparametern usw.), das ich auf einem anderen Datensatz ausführe.

Meine Frage ist :

Gibt es eine Möglichkeit zu wissen, warum ein bestimmter Anspruch auf eine Klasse betroffen ist, dh auf die Merkmale, die die vom Modell getroffene Auswahl erklären?

Der Zweck besteht darin, die von der Maschine getroffene Entscheidung gegenüber Dritten zu rechtfertigen.

Danke für deine Antwort.

Fabrice BOUCHAREL
quelle

Antworten:

7

Ich schlage vor, Sie gehen für Shap . Es verwendet die Shapley-Werte (Konzept aus der Spieltheorie), um das Modellverhalten zu beschreiben, und kann damit eine einzelne Vorhersage erklären.

Die grafische Oberfläche verwendet Force Plots, wie das unten gezeigte. Geben Sie hier die Bildbeschreibung ein

Der rote Balken besteht aus den Merkmalen, die die Vorhersage zu positiven Werten führen, und der blaue aus den anderen.

In Ihrem Fall (ein Klassifikator) ist die fett gedruckte Zahl diejenige unmittelbar vor der Sigmoid- Funktion, die den Ausgabewert zwischen Null und Eins (die eine oder andere Klasse) begrenzt. Haben Sie also keine Angst, wenn es in einigen Fällen größer als eins oder negativ ist.

Die Größe der Segmente gibt an, wie viel dieses Merkmal zur Vorhersage beiträgt. Unter den Segmenten sehen Sie den Namen des Merkmals (z. B. LSTAT) und seinen tatsächlichen Wert (z. B. 4.98). In diesem Fall ist LSTAT das mittlere Merkmal, das die Vorhersage für dieses Element des Datensatzes auf den Wert 24,41 (die fettgedruckte Zahl) führt.

Genießen!

Vincenzo Lavorini
quelle
9

Mithilfe der ELI5- Bibliothek können Sie die Funktionsbeiträge zu einzelnen Vorhersagen für XGBoost-Modelle erläutern.

Siehe Erklären von Vorhersagen in den unten kopierten Dokumenten:

Um eine bessere Vorstellung davon zu bekommen, wie unser Klassifikator funktioniert, untersuchen wir einzelne Vorhersagen mit eli5.show_prediction():

from eli5 import show_prediction
show_prediction(clf, valid_xs[1], vec=vec, show_feature_values=True)

Geben Sie hier die Bildbeschreibung ein

Imran
quelle