【问题标题】:SHAP value can explain right?SHAP值能说明吗?
【发布时间】:2020-03-20 22:22:29
【问题描述】:

我在使用 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

散点图
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)

【问题讨论】:

  • 感谢您的提问。您可能有幸在 Data Science Stack Exchange 站点 datascience.stackexchange.com 上获得此类问题的答案
  • 谢谢杰夫哈尔。

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


【解决方案1】:

您可以使用对模型输出产生相反影响的相关变量。

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 2012-06-23
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      相关资源
      最近更新 更多