【发布时间】:2012-06-16 13:28:16
【问题描述】:
我是 R 和 SVM 的新手,我正在尝试从 e1071 包中分析 svm 函数。但是,我找不到任何大型数据集可以让我获得不同输入数据大小的良好结果分析范围。有谁知道如何在svm 工作?我应该使用哪个数据集? svm 的任何特定参数使它更努力地工作?
我复制了一些我用来测试性能的命令。也许在这里得到我正在尝试的东西是最有用和更容易的:
#loading libraries
library(class)
library(e1071)
#I've been using golubEsets (more examples availables)
library(golubEsets)
#get the data: matrix 7129x38
data(Golub_Train)
n <- exprs(Golub_Train)
#duplicate rows(to make the dataset larger)
n<-rbind(n,n)
#take training samples as a vector
samplelabels <- as.vector(Golub_Train@phenoData@data$ALL.AML)
#calculate svm and profile it
Rprof('svm.out')
svmmodel1 <- svm(x=t(n), y=samplelabels, type='C', kernel="radial", cross=10)
Rprof(NULL)
我不断增加重复行和列的数据集,但我达到了内存限制,而不是让svm 更努力地工作......
【问题讨论】:
-
复制训练点不会让问题变得更难。由于大多数 SVM 需要将整个数据集放入主内存中,因此您最终会遇到内存错误是有道理的。
-
那么,如何尝试使用合适的大数据集?你知道我可以用什么例子吗?
-
是的,如果您看到我的回答,我列出了许多可用的数据集。此外,您应该进行参数调整以找到最佳参数,您会发现当您搜索最准确的参数时,有些参数的训练时间会比其他参数长。查看 libsvm 作者的实用指南:google.com/…
-
您可以尝试使用 GuessCompx 包,该包对不断增加的数据子集运行算法,以估计其复杂性和总运行时间。从这里获取:github.com/agenis/GuessCompx
标签: r statistics machine-learning bioinformatics svm