使用插入符号包中的SVM和rfe进行多类功能选择

时间:2013-10-19 17:42:21

标签: r r-caret

我正在尝试使用rfe包中的caret函数对属于约50个不同类的400个变量运行特征选择,总共有8000个样本。如果我将我的数据子集化为大约5个类和10个变量,那么一切都运行良好。但是,当我包含我的整个数据集时,R会运行大约32小时,然后我会收到R GUI has stopped working的警告。我尝试将数据子集化为100个变量和1000个样本,同样的事情发生了。我尝试使用完全不同的44个变量数据集和大约3000个属于44个类的样本。然而,在一天左右之后,R变得反应迟钝并关闭。我在iris数据集上尝试了相同的代码以实现可重现性:

iris$Species <- as.factor(as.character(iris$Species))
IND.svm <- rfe(iris[,-1],iris$Species,
               sizes = c(2, 5, 10,30),
               rfeControl = rfeControl(functions = caretFuncs,
                                       verbose = FALSE,number = 2000),
                                 method = "svmRadial")

我正在运行Windows 7,因此无法使用推荐的doMC包。我在具有32G RAM的机器上使用了最新的64位R版本。仍然没有成功。有什么我在这里俯瞰的吗?

1 个答案:

答案 0 :(得分:0)

我想说问题是你正在做 2000 bootstrap示例。假设参数tuneLength的值为T,您正在测试5个子集大小。对于这些规范,您将为具有8000个样本和400个变量的数据集拟合10000*T SVM模型。

也许我低调,但我通常不会做超过50次重复采样(除非训练集非常小)。你基本上试图估计这里的平均值(不像传统的自举使用),25或50应该足够,特别是对于那个样本大小。

请记住,rfe复制了每个重采样的整个功能选择过程,因此计算确实会加起来。

最高