SHAP值能说明吗?

数据挖掘 机器学习 Python xgboost 数据科学模型 集成建模
2021-09-17 11:39:18

我在使用 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:省内人口)

2个回答

我猜你所说的 SHAP 值之间的相关性是指“SHAP 交互值”。

SHAP 值是衡量特征值如何在观察级别贡献目标变量的量度。同样,SHAP 交互值考虑目标值,而特征(Pearson、Spearman 等)之间的相关性不涉及目标值,因此它们可能具有不同的大小和方向。

这些特征可能会一起增长,但它们在不同时间间隔对目标变量的贡献可能会逆转。

您可能想查看文档和这个漂亮的作品

请注意,尽管 Shapley 值的设计考虑了相关性,但 SHAP 只是它的近似值。阅读https://papers.nips.cc/paper/7062-a-unified-approach-to-interpreting-model-predictions.pdf,尤其是 4.1 的第一句,您可以注意到 SHAP 假定功能独立。如果近似值以非常高的相关性崩溃,我不会感到惊讶。