R理解{kernlab}中的{caret} train(tuneLength =)和SVM方法

3j86kqsm  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(99)

试图更好地理解train(tuneLength = ){caret}中的工作原理。当试图理解{kernlab}中SVM方法之间的一些差异时,我感到困惑。我已经查看了文档(here)和插入符号训练页面(here)。
我的小例子是使用iris数据集创建五个模型,结果是here,可复制的代码是here(它们相当长,所以我没有复制并粘贴到帖子中)。
{caret}文档:

tuneLength

一个整数,表示调整参数网格中的粒度量。默认情况下,此参数是应该由train生成的每个调整参数的级别数。如果trainControl具有选项search =“random”,则此参数是随机搜索将生成的调整参数组合的最大数量。(注意:如果给定,则必须命名此参数。)
this exampletrainControl(search = "random")train(tuneLength = 30)中,但似乎有67个结果,而不是30个(优化参数组合的最大数量)?我试着四处看看是否有30个唯一的ROC值,甚至ydim值,但根据我的计数,它们不是。
对于玩具示例,我创建了以下表格:


的数据
有没有一种方法可以看到“引擎盖下”发生了什么?例如,M1svmRadial)和M3svmRadialSigma)都接受并被赋予了相同的调优参数,但基于调用$results,它们的使用方式似乎不同?
我对train(tuneLength = 9)的理解是,两个模型都会产生sigmaC的结果,每个结果都有9 values, 9 times,因为9是每个调优参数的级别数(随机搜索除外)?同样,M4会是9^3,因为train(tuneLength = 9)3调优参数?

oxcyiej7

oxcyiej71#

我需要更新更多的软件包文档,但细节在package web page for random search上拼写:
唯一组合的总数由tuneLength选项指定为train
然而,对于使用RBF核的SVM来说,这一点尤其模糊。下面是一个运行:

  • svmRadial根据kernlabsigest函数调整cost并使用sigma的单个值。对于网格搜索,tuneLength是要测试的cost值的数量,对于随机搜索,它是要评估的(cost,sigma)对的总数。
  • svmRadialCostsvmRadial相同,但sigest在每个rescue循环中运行。对于random,search,它不会在sigma上进行优化。
  • svmRadialSigma与网格搜索同时调整cost和sigma。在认知性能次优的情况下,我将其设置为在网格搜索期间最多尝试6个sigma值,因为我觉得成本空间需要更大的范围。对于随机搜索,它与svmRadial相同。
  • svmRadialWeightsvmRadial相同,但也考虑了类权重,并且仅用于2类问题。

至于网页上的SOM示例,这是一个错误。我对SOM参数空间进行了过度采样,因为需要对xdim <= ydim & xdim*ydim < nrow(x)进行过滤。这个错误是由于我没有保持正确的参数数量。

相关问题