XGboost - Choix fait par modèle

10

J'utilise XGboost pour prédire une variable cible 2 classes sur les demandes d'assurance. J'ai un modèle (formation avec validation croisée, réglage d'hyper paramètres etc ...) que je lance sur un autre jeu de données.

Ma question est :

existe-t-il un moyen de savoir pourquoi une revendication donnée a été affectée à une classe, c'est-à-dire les caractéristiques qui expliquent le choix fait par le modèle?

Le but est de pouvoir justifier le choix fait par la machine à un tiers humain.

Merci pour votre réponse.

Fabrice BOUCHAREL
la source

Réponses:

7

Je vous suggère d'opter pour Shap . Il utilise les valeurs de Shapley (concept emprunté à la théorie des jeux) pour décrire le comportement du modèle, et avec cela il peut expliquer une seule prédiction.

Son interface graphique utilise des tracés de force, comme celui que vous voyez ci-dessous. entrez la description de l'image ici

La barre rouge est construite par les caractéristiques qui mènent la prédiction à des valeurs positives, et la bleue par les autres.

Dans votre cas (un classifieur), le nombre en gras sera celui juste avant la fonction sigmoïde qui limitera la valeur de sortie entre zéro et un (une classe ou l'autre). Alors n'ayez pas peur si dans certains cas, il sera supérieur à un ou négatif.

La taille des segments représente la contribution de cette caractéristique à la prédiction, et sous les segments, vous voyez le nom de la caractéristique (ex. LSTAT) et sa valeur réelle (ex. 4,98). Ainsi, dans ce cas, LSTAT est la caractéristique moyenne qui conduit la prédiction pour cet élément de l'ensemble de données à la valeur de 24,41 (le nombre en gras).

Prendre plaisir!

Vincenzo Lavorini
la source
9

Vous pouvez utiliser la bibliothèque ELI5 pour expliquer les contributions des fonctionnalités aux prévisions individuelles pour les modèles XGBoost.

Voir Explication des prévisions dans les documents, copiés ci-dessous:

Pour avoir une meilleure idée du fonctionnement de notre classificateur, examinons les prédictions individuelles avec eli5.show_prediction():

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

entrez la description de l'image ici

Imran
la source