功能集

时间:2017-01-20 11:53:11

标签: r classification feature-selection

我正在尝试使用R中的Boruta包进行特征选择。问题是我的功能集太大(70518功能),因此数据帧太大(2Gb)并且无法由Boruta包处理立刻。我想知道我是否可以将数据框分成几组,每组包含少量的功能?这听起来有点奇怪,因为我不确定算法是否可以正确识别权重,如果不存在所有特征。 如果没有,如果有人能提出另一种方法,我将非常感激。

2 个答案:

答案 0 :(得分:0)

我认为在这种情况下你最好的可能是首先尝试过滤掉一些低信息(例如〜零差异)或高度相关的功能。

caret packagesome useful functions to help with this

例如,findCorrelation()可用于轻松删除多余功能:

dat <- cor(dat, method='spearman')
dat[is.na(dat)] <- 0

features_to_ignore <- findCorrelation(dat, cutoff=0.75, verbose=FALSE)
dat <- dat[,-features_to_ignore]

这将删除Spearman相关系数为0.75或更高的所有要素。

答案 1 :(得分:0)

我首先要问你为什么认为这甚至可以起作用?在这种情况下,不仅是p >> n,还有p >>>>>> n。你总是会发现虚假的联想。更重要的是,即使你能做到这一点(比如通过在云计算服务中租用足够大的机器,这是我建议的方法),你会看到一个荒谬的计算量,因为计算的复杂性构建单个决策树的是O(n * v log(v)),其中n是记录数,v是每个记录中字段的数量。构建RF对每棵树都需要那么多。

您可能想要从头开始重新考虑问题,而不是解决上述问题。你真的试图在这做什么?你能回到第一原则并重新思考吗?