我想用R中的SVM实现来做一些回归。我已经尝试过使用来自svm的e1071,但是我受到了内核函数的限制。于是我从kernlab转到了kernlab。但是我有一个主要的缺点,就是没有在kernlab中提供调优函数(就像tune.svm在e1071中那样)。有人能解释一下我如何调优不同内核的参数吗?
PS。我想特别使用rbfdot内核。因此,如果至少有人能帮助我理解如何调整西格玛,我将非常感激。
PPS。我完全知道kpar的"automatic"值可以用来“计算一个好的西格玛”。但我需要一些更具体、更符合tune.svm的东西。
发布于 2016-06-28 12:27:59
要么编写自己的包装器(诚实地说并不难),要么尝试已经得到验证的实现解决方案,如mlr和caret。
mlr教程有一个关于它的例子。
ps = makeParamSet(
makeDiscreteParam("C", values = 2^(-2:2)),
makeDiscreteParam("sigma", values = 2^(-2:2))
)
ctrl = makeTuneControlGrid()
rdesc = makeResampleDesc("CV", iters = 3L)
res = tuneParams("classif.ksvm", task = iris.task, resampling = rdesc, par.set = ps, control = ctrl)这将执行3倍交叉验证,以选择参数从网格和评估精度的虹膜数据集。当然,您可以改变重采样策略(离开一出、蒙特卡罗CV、CV、重复CV、自助验证和保留)、搜索策略(网格搜索、随机搜索、广义模拟退火和迭代F-race都得到支持)和评估指标。
https://stackoverflow.com/questions/26459650
复制相似问题