我正在尝试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/