我的目标是找到区分两个类的最重要的功能。使用众多特征选择方法之一就可以做到这一点。
但这是我的问题:我有很多相关的功能。
通常,功能选择的目标是消除这些冗余功能。但这些功能具有语义含义,我希望避免丢失这些信息。
因此,如果一组相关特征对类变量具有强大的预测能力,那么我希望它们都被认为是重要的。 (额外问题:如果我在模型中包含十个相关特征,那么它们产生的权重最终只会达到其“实际”重要性的十分之一。)
您是否可以想到一种功能选择方法,即使它们出现在相关组合的组中,也能找到重要的功能?
答案 0 :(得分:0)
也许这个功能可以帮到你。我用这个来找到重要的功能。
library(randomForest)
set.seed(4543)
data(mtcars)
mtcars.rf <- randomForest(mpg ~ ., data=mtcars, ntree=1000, keep.forest=FALSE,
importance=TRUE)
varImpPlot(mtcars.rf)
我希望它可以帮到你。
答案 1 :(得分:0)
我之前建议消除高度相关的功能,因为它们是冗余的(some related explanation here)。您可以识别哪些方差为零或接近零;有一些方法可以识别哪些列是其他列的线性组合(因此,可以安全地删除而不会丢失任何信息)。然后使用典型的特征选择技术基于其预测能力对剩余特征进行排名。
答案 2 :(得分:0)
使用Boruta算法可以找到所有重要的特征集。 该算法主要测量由随机改变特征的观察顺序引起的MSE的减少。因此,允许算法确定特征是否有助于模型的准确性。这与随机森林中的变量重要性计算非常相似。 详情可在本文中找到:https://www.jstatsoft.org/article/view/v036i11/v36i11.pdf