从kernlab调整ksvm

5
我想使用R中的SVM实现进行回归。我已经尝试使用e1071中的svm,但是由于核函数的限制,我受到了限制。因此,我转向kernlab中的ksvm。但是,与e1071中的tune.svm不同,kernlab没有提供调谐函数,这是一个主要的缺点。有人能解释一下如何调整不同内核的参数吗?
PS. 我特别想使用rbfdot内核。因此,如果至少有人可以帮我理解如何调整sigma,我将非常感激。
PPS. 我完全意识到kpar的"自动"值可用于"计算出一个好的sigma"。但我需要更具体、更接近tune.svm的东西。
1个回答

2
要么你自己写一个包装器(说实话并不难),要么你可以尝试已经被证明的解决方案,比如mlrcaret
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倍交叉验证以从网格中选择参数并在鸢尾花数据集上评估准确性。当然,您可以更改重新采样策略(leave-one-out、monte-carlo CV、CV、重复CV、引导验证和holdout都已实现)、搜索策略(网格搜索、随机搜索、广义模拟退火和迭代F-race都得到支持)和评估指标。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接