理解{caret}训练(tuneLength =)和来自{kernlab}

时间:2016-08-09 20:19:20

标签: r svm r-caret

尝试更好地了解train(tuneLength = ){caret}的工作原理。当我试图理解来自{kernlab}的SVM方法之间的一些差异时,我发生了混淆。我已经审阅了文档(here)和插入符号培训页面(here)。

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

来自{caret}文档:

  

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

this exampletrainControl(search = "random")train(tuneLength = 30),但似乎有67个结果,而不是30个(调整参数组合的最大数量)?我试着四处看看是否有30个独特的ROC值,甚至是ydim值,但根据我的统计,它们并非如此。

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

caret_SVM

有没有办法看看发生什么事情"引擎盖下#34;?例如,M1svmRadial)和M3svmRadialSigma)同时接受并获得相同的曲调参数,但基于调用$results出现以不同方式使用它们?

我对train(tuneLength = 9)的理解是,两个模型都会生成sigmaC每个9 values, 9 times的结果,因为9是每个模型的级别数调整参数(例外是随机搜索)?同样,M49^3起为train(tuneLength = 9),并且有3个调整参数?

迈克尔

1 个答案:

答案 0 :(得分:11)

我需要更新软件包文档,但详细信息请参见package web page for random search

  

“唯一组合的总数由tuneLength的{​​{1}}选项指定。”

然而,这是使用RBF内核的特别混乱的SVM。这是一个故障:

  • train调整费用,并根据svmRadial的{​​{1}}函数使用单个sigma值。对于网格搜索,kern lab是要测试的成本值的数量,对于随机搜索,它是要评估的(成本,sigest)对的总数。
  • tuneLengthsigma相同,但svmRadialCost在每个重采样循环内运行。对于随机搜索,它不会调整svmRadial
  • sigest使用网格搜索调整费用和sigma。在一个次优的认知表现的时刻,我将其设置为在网格搜索期间尝试最多6个svmRadialSigma值,因为我觉得成本空间需要更广泛的范围。对于随机搜索,它与sigma相同。
  • sigmasvmRadial相同,但也考虑了类权重,仅适用于2类问题。

至于网页上的SOM示例,这是一个错误。我对SOM参数空间进行了过度采样,因为需要有svmRadialWeight的过滤器。这个错误来自于我没有保留适量的参数。