我想在R中使用SVM实现进行一些回归。我尝试使用svm
中的e1071
,但我受到内核函数的限制。所以我从ksvm
转到kernlab
。但是我的主要缺点是kernlab
中没有提供调整功能(如tune.svm
中的e1071
)。有人可以解释如何调整那里不同内核的参数?
PS。我想特别使用rbfdot
内核。因此,如果至少有人可以帮助我理解如何调整sigma,我将非常感激。
PPS。我完全清楚可以使用kpar的"automatic"
值" 来计算好的sigma "。但我需要更有形的东西,更需要tune.svm
。
答案 0 :(得分:1)
要么你自己编写包装器(不是那么难以说实话),要么你可以尝试已经过验证的已实现的解决方案,例如mlr
和caret
。
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都支持)和评估指标。