如何比较特征选择方法的性能?


10

有几种特征选择 /变量选择方法(例如参见Guyon&Elisseeff,2003Liu等,2010):

  • 过滤器方法(例如,基于相关性,基于熵,基于随机森林重要性),
  • 包装器方法(例如,前向搜索,爬山搜索)和
  • 特征选择是模型学习的一部分的嵌入式方法。

机器学习工具(例如R,Python等)也实现了许多已发布的算法。

比较不同的特征选择算法并为给定问题/数据集选择最佳方法的合适方法是什么?另一个问题是,是否存在已知的衡量特征选择算法性能的指标?

Answers:


4

这是一个难题,研究人员正在取得很大进展。

如果您正在寻找有监督的功能选择,我建议使用LASSO及其变体。在监督学习下,对算法的评估非常简单:选择测试数据时所采用的任何度量标准的性能。

LASSO的两个主要警告是:(1)所选功能将不会自动检测到交互,因此您必须先验设计所有功能(即,在通过模型运行它们之前),以及(2)LASSO将不会识别出非功能。 -线性关系(例如,二次关系)。

尝试克服这两个警告的一种方法是使用Gradient Boosted Machines,它会自动进行功能选择。值得注意的是,GBM的统计属性比LASSO的统计属性更加模糊。

如果您正在寻找无监督的特征选择,这些研究人员似乎使用了类似的正则化方法,但是在这种特殊情况下的评估变得不那么明显了。人们尝试了许多不同的方法,例如PCA / SVD或K-Means,它们最终将试图找到数据的线性近似。

在那种情况下,性能的典型度量是重建误差或群集的RMSE。

在软件方面,R和Python都具有GBM,LASSO,K-Means,SVD和PCA。R和Sklearn for Python中的GLMNET和XGBoost是相关的库。


1

我一直认为特征选择是最终结果的一步。

在下文中,我以某种方式将特征选择和降维混合在一起,这可能有一些目标,可能会造成混淆。

一些典型的用途:

  • 减少机器学习中的计算:选择的质量是最终学习结果的一个因素,并且显然也是完成学习的速度

  • 可视化/了解数据,最终组合多个维度。当它不隐藏有趣的东西并且可以理解时,这是很好的

  • 简化学习结果,仍然使它们易于理解(例如根本原因分析)。如果简单,就很好,但是就质量而言还是足够的

  • 控制拟合,如先前的答复所暗示

  • ...

因此,我认为没有一般规则(就像在ML中一样),但这是个案问题。

只是个人的信念...


0

这很大程度上取决于具体情况和您要解决的问题。存在一些通用规则,例如包装器方法更灵活,也更容易过度拟合。

可以通过学习任务的整体性能来评估特征选择性能,例如可以使用不同的方法选择特征,然后使用这些不同的特征集进行分类,并比较获得的分类器的精度。

在某些场景(如某些生物学应用程序)中,另一个重要因素是所选特征和结果的可解释性,例如在聚类问题中,所选特征的含义和生成的聚类是性能的非常重要的衡量指标。


0

您将必须运行一组人工测试,尝试使用不同的方法检测相关特征,同时事先知道输入变量的哪些子集会影响输出变量。

一个好的技巧是保留一组具有不同分布的随机输入变量,并确保您的特征选择算法确实将它们标记为不相关。

另一个技巧是确保在对行进行置换之后,将标记为相关的变量停止分类为相关。

以上所述适用于过滤器和包装器方法。

如果分开(一个接一个地)将变量对目标没有任何影响,但联合起来表现出很强的依赖性,则一定要处理这种情况。示例将是一个众所周知的XOR问题(请查看Python代码):

import numpy as np
import matplotlib.pyplot as plt
from sklearn.feature_selection import f_regression, mutual_info_regression,mutual_info_classif

x=np.random.randn(5000,3)
y=np.where(np.logical_xor(x[:,0]>0,x[:,1]>0),1,0)

plt.scatter(x[y==1,0],x[y==1,1],c='r',marker='x')
plt.scatter(x[y==0,0],x[y==0,1],c='b',marker='o')
plt.show()
print(mutual_info_classif(x, y)) 

输出:

Python 3 XOR图

[0. 0. 0.00429746]

因此,可能强大的(但单变量)过滤方法(计算出变量和输入变量之间的互信息)无法检测数据集中的任何关系。而我们可以肯定地知道它是100%的依存关系,并且知道X就能以100%的准确性预测Y。

好的主意是为特征选择方法创建一种基准,有人愿意参加吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.