SHAP值可以解释吗?

时间:2019-11-25 15:21:26

标签: python machine-learning data-science xgboost shap

使用SHAP值解释基于树的模型时遇到问题。
https://github.com/slundberg/shapsd
首先,我输入了大约30个要素,而我有2个要素之间具有高度正相关。
之后,我训练了XGBoost模型(python),并查看了SHAP值具有负相关的2个特征的SHAP值。

您能否全部向我解释,为什么两个要素之间的输出SHAP值没有与输入相关性相同的相关性?我可以相信SHAP的输出吗?

========================

输入之间的相关性:0.91788
SHAP值之间的相关性:-0.661088

2个功能是
1)省和省的人口减少
2)全省家庭人数。

模型性能
火车AUC:0.73
测试AUC:0.71

散点图
Input scatter plot (x: Number of family in province, y: Pupulation in province)
SHAP values output scatter plot (x: Number of family in province, y: Pupulation in province)

1 个答案:

答案 0 :(得分:0)

您可以具有对模型输出有相反影响的相关变量。

作为一个例子,让我们以预测死亡风险为例,它具有两个特征:“年龄”和“去医生的路程”。尽管这两个变量是正相关的,但它们的作用是不同的。所有其他事物保持不变,较高的“年龄”导致较高的死亡风险(根据训练有素的模型)。而且,“就诊次数”越多,死亡的风险就越小。

XGBoost(和SHAP)通过以另一个变量为条件来隔离这两个相关变量的影响。在分割“年龄”功能之后,分割“前往医生的行程”功能。这里的假设是它们之间没有完美的关联。