特征选择保留相关特征可能吗?

Posted

技术标签:

【中文标题】特征选择保留相关特征可能吗?【英文标题】:Feature selection retaining correlated features possible? 【发布时间】:2017-08-14 13:15:38 【问题描述】:

我的目标是找到区分两个类的最重要的特征。使用多种特征选择方法中的一种来做到这一点是有意义的。

但这是我的问题:我有很多相关的特征。

通常,特征选择的目标是消除那些冗余特征。但是这些特征具有语义含义,我想避免丢失这些信息。

因此,如果一组相关特征对类变量具有很强的预测能力,我希望它们都被识别为重要的。 (额外问题:如果我在模型中包含 10 个相关特征,它们的权重最终将仅为其“实际”重要性的十分之一。)

你能想出一种特征选择方法,即使重要特征出现在相关特征组中也能找到它们?

【问题讨论】:

如果特征相关,为什么不以某种方式组合它们,即做一些特征工程? 谢谢德雷。好点子!问题是我的特征并不完全相关——既不相互关联,也不与类变量相关。这使得很难以有意义的方式组合这些功能。我尝试根据频繁项集组合我的二进制特征,但结果是非常混乱的特征组合...... 1.如果您拥有完全相关的特征,那么这些特征会以不止一种方式对您的数据不利。 2. 设计特征的方法不止一种。 3. 如果你的特征很少,你可以用 k 作为你拥有的特征的数量来应用 PCA。这将转换您的数据,保留方差和协方差。此外,它还允许您(无损地)将您的 PCA 数据转换回原始特征空间以进行解释。 (但这不是特征工程)。 4. 对您的数据使用双射变换... 5. 有很多 - 您需要分享数据的细节。 【参考方案1】:

你能想出一种特征选择方法,即使重要特征出现在相关特征组中,也能找到它们?

也许这个功能可以帮助你。我用它来寻找重要的功能。

library(randomForest)
set.seed(4543)
data(mtcars)
mtcars.rf <- randomForest(mpg ~ ., data=mtcars, ntree=1000, keep.forest=FALSE,
                          importance=TRUE)
varImpPlot(mtcars.rf)

希望对你有帮助。

【讨论】:

【参考方案2】:

我建议之前消除高度相关的特征,因为它们是多余的 (some related explanation here)。您可以确定哪些方差为零或接近零;有一些方法可以识别列是其他列的线性组合(因此,可以安全地删除而不会丢失任何信息)。然后使用典型的特征选择技术根据其预测能力对剩余特征进行排名。

【讨论】:

【参考方案3】:

使用 Boruta 算法可以找到所有重要的特征集。 该算法主要测量随机改变特征观察顺序导致的 MSE 下降。因此允许算法决定该特征是否有助于模型的准确性。这与随机森林中的变量重要性计算非常相似。 详情可以看这篇论文:https://www.jstatsoft.org/article/view/v036i11/v36i11.pdf

【讨论】:

以上是关于特征选择保留相关特征可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

特征工程之特征选择----卡方过滤

特征选择常用算法

文本分类的特征选择

在 Scikit 特征选择之后保留特征名称

使用逻辑回归进行特征选择

9主成分分析