我正在尝试使用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版本。仍然没有成功。有什么我在这里俯瞰的吗?
答案 0 :(得分:0)
我想说问题是你正在做 2000 bootstrap示例。假设参数tuneLength
的值为T
,您正在测试5个子集大小。对于这些规范,您将为具有8000个样本和400个变量的数据集拟合10000*T
SVM模型。
也许我低调,但我通常不会做超过50次重复采样(除非训练集非常小)。你基本上试图估计这里的平均值(不像传统的自举使用),25或50应该足够,特别是对于那个样本大小。
请记住,rfe
复制了每个重采样的整个功能选择过程,因此计算确实会加起来。
最高