是否有与模型无关的方法来确定特征重要性?

数据挖掘 特征选择
2021-10-12 18:20:35

Sklearn 有一个feature_importances_属性,但这是高度特定于模型的,我不确定如何将其解释为删除最重要的特征并不一定会最大程度地降低模型质量。

是否有一种与模型无关的方法来判断哪些特征对预测问题很重要?

我能看到的唯一方法是:

  • 使用不同模型的集合
  • 要么从一大组功能开始,然后一次删除一个。要找到“提升”的特征,请将集成质量与完整特征集与集成质量与移除的特征集进行比较。

(这不能做的是找到连接的特征:一些特征可能不完全相同,但有一个共同的潜在原因,这对预测很重要。因此删除它们中的任何一个不会有太大变化,但删除两者可能改变很多。我问另一个问题。)

2个回答

“确定特征重要性”的方法通常称为特征选择算法

有 3 种类型的特征选择算法:

  • 过滤器方法:他们完全不使用模型来选择变量,只查看特征值。一个例子是 scikit-learn 的方差阈值选择器。
  • Wrapper 方法:他们使用任何预测算法对不同的特征子集进行评分,并据此选择最佳子集。这些使用模型但与模型无关,因为它们不关心您使用哪个模型。一个例子是递归特征消除
  • 嵌入式方法:在这些方法中,变量选择是模型的一部分,因此特征选择和模型耦合在一起。这是feature_importances_随机森林算法的情况。

从这个问题中,我了解到过滤器和包装器方法都适合 OP 需求。Kovavi 和 John 的一篇经典文章很好地涵盖了这两个方面

在这里,您可以看到 scikit-learn 特征选择功能的概述,其中包括上述三种类型的变量选择算法的示例。

是的,有一些与模型无关的特征重要性方法,即可以应用于任何预测模型。

例如,检查排列重要性方法,在The Elements of Statistical Learning 的“15.3.2 变量重要性”一章中描述

披露这部分是从我的另一个答案 中复制的