理解{caret}训练(tuneLength =)和来自{kernlab}的SVM方法

J.M*_*.M. 13 r svm r-caret

试图更好地了解如何train(tuneLength = )运作{caret}.我试图理解SVM方法之间的一些差异时发生了混乱,{kernlab}我已经阅读了文档(这里)和插入符号培训页面(这里).

我的玩具示例是使用iris数据集创建五个模型.结果在这里,可重现的代码在这里(它们相当长,所以我没有复制并粘贴到帖子中).

从{caret}文档:

tuneLength
一个整数,表示调整参数网格中的粒度量.默认情况下,此参数是列车应生成的每个调整参数的级别数.如果trainControl具有选项search ="random",则这是随机搜索将生成的调整参数组合的最大数量.(注意:如果给定,则必须命名此参数.)

在这个例子中,trainControl(search = "random")和train(tuneLength = 30),但似乎有67个结果,而不是30个(调整参数组合的最大数量)?我试着四处看看是否有30个独特的ROC价值观,甚至是ydim价值观,但按照我的统计,他们不是.

对于玩具示例,我创建了下表:

caret_SVM

有没有办法看到"引擎盖下"发生了什么?例如,M1(svmRadial)和M3(svmRadialSigma)都采用和给出相同的调谐参数,但基于调用$results似乎使用不同的方式?

我的理解train(tuneLength = 9)是,这两种模式会产生的结果sigma和C每个9 values, 9 times由于9是每个调谐参数(唯一的例外是随机搜索)水平是多少?同样,M4将9^3因为train(tuneLength = 9)和有3调整参数?

迈克尔

top*_*epo 12

我需要更新更新软件包文档,但是在包网页上拼写详细信息以进行随机搜索:

"唯一组合的总数由tuneLength选项指定train."

但是,这是使用RBF内核的特别混乱的SVM.这是一个故障:

  • svmRadial在成本曲调和使用的单个值sigma基础上kern lab的sigest功能.对于网格搜索,tuneLength是要测试的成本值的数量,对于随机搜索,它是sigma要评估的(成本)对的总数.
  • svmRadialCost与每个重采样循环内部相同svmRadial但sigest在其中运行.对于随机搜索,它不会调整sigma.
  • svmRadialSigma用网格搜索调整成本和sigma.在次优认知表现的时刻,我将其设置为sigma在网格搜索期间尝试最多6个值,因为我觉得成本空间需要更宽的范围.对于随机搜索,它的作用相同svmRadial.
  • svmRadialWeight是同样的,svmRadial但也考虑了类权重,仅适用于2类问题.

至于网页上的SOM示例,这是一个错误.我过度采样SOM参数空间,因为需要有一个过滤器xdim <= ydim & xdim*ydim < nrow(x).这个错误来自于我没有保留适量的参数.