【问题标题】:Multi-class feature selection using a SVM and rfe in the caret package使用 caret 包中的 SVM 和 rfe 进行多类特征选择
【发布时间】:2015-01-11 14:39:11
【问题描述】:

我正在尝试使用 caret 包中的 rfe 函数对属于大约 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 版本。仍然没有成功。这里有什么我忽略的地方吗?

【问题讨论】:

  • 我很确定这个问题与无法通过 varImp() 计算 SVM 的变量重要性有关。您可能需要编写自己的 rank() 函数。
  • @David,感谢一百万的洞察力。是否可以举一个小例子或指出我可以找到一个例子的方向。老实说,我觉得自己不够胜任。

标签: r r-caret


【解决方案1】:

我会说问题在于您正在执行 2000 引导样本。假设参数tuneLength 的值为T,并且您正在测试5 个子集大小。对于这些规范,您正在为具有 8000 个样本和 400 个变量的数据集拟合 10000*T SVM 模型。

也许我低估了它,但我通常不会进行超过 50 次的重采样(除非训练集非常小)。您基本上是在尝试估计此处的平均值(与引导程序的更传统用途不同),并且 25 或 50 应该就足够了,尤其是对于该样本量。

请记住,rfe 在每次重采样的整个特征选择过程中都会被复制,因此计算量确实会加起来。

最大

【讨论】:

  • 感谢 topepo,有道理。但我只使用 5 个引导样本进行了试用,24 小时后它仍在运行。我将不得不尝试大卫的解决方案,只是我不知道如何在“rfe”函数中使用varIMP
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2018-05-03
  • 2012-07-27
  • 2015-01-27
  • 2016-12-21
  • 2014-02-01
  • 2013-02-17
相关资源
最近更新 更多