对你来说是个好消息。
一个名为的包
的
“SHAP”
</强>
(
SHapley添加剂exPlanation
)最近刚刚为此目的发布。
<a href="https://github.com/slundberg/shap" rel="nofollow noreferrer">
这是一个链接
</A>
到github。
它支持复杂模型的可视化(难以直观地解释),如增强树(特别是XGBOOST!)
它可以向你展示“真正的”特征重要性,它比它更好
“gain”
,
“weight”
,和
“cover”
xgboost
供应因为它们不一致。
您可以阅读有关为什么SHAP更适合功能评估的所有内容
这里
。
很难给你一些适合你的代码,但是有一个很好的文档,你应该写一个适合你的代码。
以下是构建第一张图表的指南:
import shap
import xgboost as xgb
Assume X_train and y_train are both features and labels of data samples
dtrain = xgb.DMatrix(X_train, label=y_train, feature_names=feature_names, weight=weights_trn)
Train your xgboost model
bst = xgb.train(params0, dtrain, num_boost_round=2500, evals=watchlist, early_stopping_rounds=200)
“explainer” object of shap
explainer = shap.TreeExplainer(bst)
“Values you explain, I took them from my training set but you can “explain” here what ever you want
shap_values = explainer.shap_values(X_test)
shap.summary_plot(shap_values, X_test)
shap.summary_plot(shap_values, X_test, plot_type=”bar”)
</code>
绘制“
为什么某个样本得分
“你可以使用内置的SHAP功能(仅适用于Jupyter笔记本)。
完美的例子
我个人写了一个函数,将使用它绘制它
matplotlib
,这需要一些努力。
这是我使用shap值绘制的一个示例(功能是保密的,因此全部被删除)
<a href="https://i.stack.imgur.com/b8E7z.png" rel="nofollow noreferrer">
<img src =“https://i.stack.imgur.com/b8E7z.png”alt =“在此处输入图片说明”/>
</A>
你可以看到97%的预测
label=1
对于该特定样本,每个特征以及它在对数损失中添加或消除了多少。