0

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

你们能向我解释一下,为什么 2 个特征之间的输出 SHAP 值的相关性与输入相关性不同?我可以相信SHAP的输出吗?

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

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

2个特征是
1)省内人口和
2)省内家庭数。

模型性能
训练 AUC:0.73
测试 AUC:0.71

散点图
输入散点图(x:省内家庭数,y:省内人口)
SHAP值输出散点图(x:省内家庭数,y:省内人口)

4

2 回答 2

1

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

例如,让我们以在给定两个特征的情况下预测死亡风险的例子:“年龄”和“就医次数”。虽然这两个变量是正相关的,但它们的影响是不同的。所有其他事情保持不变,更高的“年龄”会导致更高的死亡风险(根据训练有素的模型)。“去看医生”的次数越多,死亡风险就越小。

XGBoost(和 SHAP)通过调节另一个变量来隔离这两个相关变量的影响:例如,在拆分“年龄”特征之后,拆分“去看医生”特征。这里的假设是它们不是完全相关的。

于 2020-06-15T23:05:25.527 回答
0

XGBoost 不是线性模型,即输入特征 X 和预测 y 之间的关系不是线性的。SHAP 值构建了 y 的线性解释模型。因此,非常期望输入特征与其 SHAP 值之间的相关性不匹配。

于 2021-10-08T02:32:15.077 回答