从kernlab调整ksvm

时间:2014-10-20 06:29:50

标签: r kernlab

我想在R中使用SVM实现进行一些回归。我尝试使用svm中的e1071,但我受到内核函数的限制。所以我从ksvm转到kernlab。但是我的主要缺点是kernlab中没有提供调整功能(如tune.svm中的e1071)。有人可以解释如何调整那里不同内核的参数?

PS。我想特别使用rbfdot内核。因此,如果至少有人可以帮助我理解如何调整sigma,我将非常感激。

PPS。我完全清楚可以使用kpar的"automatic"值" 来计算好的sigma "。但我需要更有形的东西,更需要tune.svm

1 个答案:

答案 0 :(得分:1)

要么你自己编写包装器(不是那么难以说实话),要么你可以尝试已经过验证的已实现的解决方案,例如mlrcaret

mlr教程有an example about it

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都支持)和评估指标。