random-forest - MLP和RF的变量排名不应该相同吗?
问题描述
我有一个关于变量重要性排名的问题。我使用具有 34 个变量的相同数据集构建了 MLP 和 RF 模型,并在类似的测试数据集上实现了相同的精度。正如您在下图中所见,SHAP 汇总图和 RF VIM 的顶部变量完全不同。有趣的是,我从 MLP 中删除了排名较低的变量,并且准确性提高了。但是,RF 结果没有改变。这是否意味着 RF 不是对该数据集建模的好选择?排名相差如此之大,我还是觉得奇怪:SHAP summary plot vs. RF VIM,我编号了排名靠前和排名靠后的变量
解决方案
MLP和RF的变量排名不应该相同吗?
不会。不同的算法可能倾向于对某些特征进行更高的排名,但没有理由让排名相同。
不同的算法:
- 可能有不同的目标函数来实现预期的目标。
- 可以使用不同的特征来实现目标函数的最小值(最大值)。
最重要的是,您所说的 RF“特征重要性”(平均基尼下降)只是计算 RF“特征重要性”的众多方法之一(包括您使用的指标,以及如何计算因特征而导致的总减少)。相比之下,在解释特征对结果的贡献时,SHAP 与模型无关。
总共:
- 不同的模型对于什么是重要的和不重要的会有不同的看法。对一种算法重要的东西可能对另一种算法不那么重要,反之亦然。它没有说明模型对特定数据集的适用性。
- 使用 SHAP 值(或您和您的客户理解的任何其他特征重要性指标)来解释模型(如有必要)。
- 根据您的目标选择“最佳”模型:性能或可解释性。
推荐阅读
- r - #ConfusionMatrix.default 中的错误:数据的级别不能多于参考
- ios - (React Native / iOS)突然出现错误:架构 arm64 的未定义符号:“_RCTSharedApplication”
- cmake - CMAKE:从父目录链接库
- mako - 如何将 Mako 配置为在每次编辑模板后自动重新编译?
- javascript - React 传递道具无法读取未定义的属性
- kubernetes - 使用 kubectl 从 gke 应用程序中删除外部 IP 地址
- javascript - 使用创建反应应用程序的 AsyncFunction 错误
- angular - 如何将数值从后端传递到角度前端的变量
- java - 应用程序在 Android Studio 中崩溃。getMenuInflater().inflate(R.menu.activity_main, menu); 不存在?
- java - 用户的 Spring Security 身份验证