DNN、随机森林和梯度提升决策树之间的不同特征重要性结果

数据挖掘 机器学习 神经网络 特征选择 随机森林 可解释的ai
2021-10-06 13:58:29

我一直在用 3 种不同的回归模型对代谢物数据进行建模。我使用随机森林模型和梯度提升决策树(我使用了 scikit-learn 内置的特征重要性)运行特征重要性得到了类似的结果,但使用深度神经网络我得到了非常不同的结果(使用了排列特征重要性)。我还运行了 PCA,PCA 给了我与 DNN 相似的结果!这是正常的吗?他们两个还能准确吗?我有相当多的初始功能。

2个回答

导致这种差异的因素很少——

  1. 默认 RF FE 方法的常见问题。
    在潜在预测变量的测量规模或类别数量不同的情况下,它是不可靠的
    阅读

  2. 相关特征
    当您具有相关特征时,
    基于 RF 树的 FI方法将根据树如何使用两个相关特征
    排列方法来划分重要性,因为跳过任何人都不会对结果产生影响

  3. 特征交互
    如果我们有两个具有交互的特征,
    基于树的方法将在连续拆分中捕获交互,并相应地将重要性划分为两个特征
    基于排列的方法将为这两个特征分配高重要性,因为当跳过任何人时,倾角将很高(假设加性交互)

    在这种情况下,这是一个思考当两个特征交互时应该如何划分FI的问题。理想情况下,应该创建第三个特征(例如 X1*X2)并获得所有 FI

你应该试试 -

  • 使用相应测试的身份相关特征,例如 Pearson、Crammers、Spearman 等。
  • 对所有情况使用排列方法。Sklearn 可以选择
#https://scikit-learn.org/stable/modules/permutation_importance.html
from sklearn.inspection import permutation_importance
r = permutation_importance(model, X_val, y_val, n_repeats=30)
  • 然后如果需要,寻找任何交互效果(参见建议阅读)


推荐阅读
注意默认随机森林重要性
Discovering-interaction-effects-in-ensemble
Chapter#7 - Feat Engg
Interpretable-ml-book

为什么你会期望它们是一样的?

一方面,随机森林和梯度提升是两种不同的集成。即使他们的估计器是决策树,并且他们似乎都在 scikit 中测量了基于杂质的特征重要性。结果会有所不同。我的猜测不多,但不同。

对于深度神经网络,您正在计算不同的“特征重要性”指标。因此,计算结果不同是有道理的。

可悲的是,特征重要性只是聚合统计信息,并不能告诉您太多有关模型可解释性的信息。

不同模型中不同的特征重要性完全没问题,没问题。