python - SHAP值能说明吗?
问题描述
我在使用 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
解决方案
您可以拥有对模型输出具有相反影响的相关变量。
例如,让我们以在给定两个特征的情况下预测死亡风险的例子:“年龄”和“就医次数”。虽然这两个变量是正相关的,但它们的影响是不同的。所有其他事情保持不变,更高的“年龄”会导致更高的死亡风险(根据训练有素的模型)。“去看医生”的次数越多,死亡风险就越小。
XGBoost(和 SHAP)通过调节另一个变量来隔离这两个相关变量的影响:例如,在拆分“年龄”特征之后,拆分“去看医生”特征。这里的假设是它们不是完全相关的。
推荐阅读
- javascript - 如何使用 VBA 在提示“选择上传文件”时上传文件
- php - php比较值是否大于
- javascript - 在更改选项的选定属性后强制选择刷新
- python - 在 Docker 容器中调试 Python
- umbraco7 - ContentTypeService 找不到别名为“homePage”的内容类型
- arrays - 如何解压 pyspark WrappedArray
- javascript - 整数输入的 JavaScript 提示验证
- moodle - 如何将自定义元字段添加到 Moodle 课程元素?
- yii2 - GET 参数验证
- javascript - 使用 Ajax/PHP/JQuery 的动态下拉列表、分页和搜索栏