为啥用子集选择方法在这个数据集中选择的特征太少

Posted

技术标签:

【中文标题】为啥用子集选择方法在这个数据集中选择的特征太少【英文标题】:Why too few features are selected in this dataset by subset selection method为什么用子集选择方法在这个数据集中选择的特征太少 【发布时间】:2015-12-04 13:04:31 【问题描述】:

我有一个包含 148 个输入特征的分类数据集(其中 20 个是二进制的,其余的在 [0,1] 范围内是连续的)。数据集有66171个负例,只有71个正例。

数据集(arff 文本文件)可从此保管箱链接下载:https://dl.dropboxusercontent.com/u/26064635/SDataset.arff。

在 Weka 套件中,当我使用 CfsSubsetEvalGreedyStepwisesetSearchBackwards() 设置为 truefalse)时,所选功能集仅包含 2 个功能(即 79 和 @987654329 @)!不用说,这两个特征的分类性能非常糟糕。

使用ConsistencySubsetEval(在 Weka 中也是如此)导致选择零特征!当使用特征排序方法并选择最佳(例如 12 个)特征时,可以获得更好的分类性能。

我有两个问题:

首先,导致选择这么几个特征的数据集是什么?是因为正反例数不平衡?

其次,更重要的是,有没有其他的子集选择方法(在 Matlab 中或其他)我可以尝试并可能导致选择更多特征?

【问题讨论】:

【参考方案1】:

显然,班级不平衡没有帮助。您可以尝试对数据集进行子样本以获得更好的诊断。 SpreadSubsample 过滤器允许您这样做,说明允许的最大类不平衡是多少,例如 10:1、3:1 或任何您认为合适的值。

对于选择方法,您可以先尝试 WEKA 中的降维方法,例如 PCA。

但如果算法正在选择这些特征集,它们似乎对您的分类任务最有意义。

【讨论】:

顺便说一句,如果您将数据集保存为稀疏 arff,通过 Weka Explorer 过滤器 NonSparseToSparse,您将节省大量空间,从 35 MB 到 2.5 MB。它还有助于加速某些 Weka 算法(不是全部)。

以上是关于为啥用子集选择方法在这个数据集中选择的特征太少的主要内容,如果未能解决你的问题,请参考以下文章

特征选择

特征选择与特征子集(二)

特征选择/特征提取

用R语言实现遗传算法

从子集中选择观察值以基于 R 中的大型数据框创建新子集

特征选择算法