我在使用SHAP value来解释基于树的模型时遇到了一个问题。
(https://github.com/slundberg/shapsd)
首先,我输入了大约30个特征,我有2个特征,它们之间有很高的正相关性。
在此之后,我训练了XGBoost模型(Python),并查看了2个特征的Shap值,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)
发布于 2020-06-16 07:05:26
您可以拥有对模型输出具有相反影响的相关变量。
作为一个例子,让我们以预测死亡风险的情况为例,给定两个特征:“年龄”和“去看医生”。虽然这两个变量是正相关的,但它们的影响是不同的。在所有其他条件保持不变的情况下,较高的“年龄”会导致更高的死亡风险(根据训练模型)。“看医生”的次数越多,死亡的风险就越小。
XGBoost (和SHAP)通过对另一个变量的条件作用来隔离这两个相关变量的影响:例如,在对“年龄”特征进行分裂之后,对“去医生的旅行”特征进行分裂。这里的假设是它们不是完全相关的。
发布于 2021-10-08 02:32:15
XGBoost不是线性模型,即输入特征X和预测Y之间的关系不是线性的。SHAP值构建了y的线性解释模型。因此,非常期望输入特征与其Shap值之间的相关性不匹配。
https://stackoverflow.com/questions/59035008
复制相似问题