我正在尝试svmpath程序包,该程序包应该找到经过训练的SVM的最佳超参数,而无需对数据的不同子集进行多次运行。更重要的是,它的计算复杂度应该更低(根据其docs)。

但是,似乎一次要占用大量内存。

最小的工作示例:

library(data.table)
library(svmpath)
# Loaded svmpath 0.953

features <- data.table(matrix(runif(100000*16),ncol=16))
labels <- (runif(100000) > 0.7)
svmpath(x=features,y=labels)
# Error in x %*% t(y) : requires numeric/complex matrix/vector arguments
svmpath(x=as.matrix(features),y=labels)
# Error: cannot allocate vector of size 74.5 Gb

library(kernlab)
ksvm(as.matrix(features),y=labels,kernel=vanilla)
# runs


检查训练功能仅显示一行,弹出的可能很大,Kscript <- K * outer(y, y)。实际上,这似乎是罪魁祸首:runif(100000) %o% runif(100000)会产生相同的错误。

是否有任何易于在R中实现的快速修复?

最佳答案

显然,它找不到最佳的C(成本)值。
但是,它列出了您应该依次尝试的所有C值
使用N折交叉验证或测试数据集找到最佳的方法。

关于r - 一次吞噬大量内存的svmpath怎么办?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24348065/

10-11 02:42