尝试更好地了解train(tuneLength = )
中{caret}
的工作原理。当我试图理解来自{kernlab}
的SVM方法之间的一些差异时,我发生了混淆。我已经审阅了文档(here)和插入符号培训页面(here)。
我的玩具示例是使用iris
数据集创建五个模型。结果为here,可重复的代码为here(它们相当长,所以我没有将它们复制并粘贴到帖子中)。
来自{caret}
文档:
tuneLength
表示调整参数网格中的粒度量的整数。默认情况下,此参数是列车应生成的每个调整参数的级别数。如果trainControl具有选项search =" random",则这是随机搜索将生成的调整参数组合的最大数量。 (注意:如果给出,则必须命名此参数。)
在this example,trainControl(search = "random")
和train(tuneLength = 30)
,但似乎有67个结果,而不是30个(调整参数组合的最大数量)?我试着四处看看是否有30个独特的ROC
值,甚至是ydim
值,但根据我的统计,它们并非如此。
对于玩具示例,我创建了下表:
有没有办法看看发生什么事情"引擎盖下#34;?例如,M1
(svmRadial
)和M3
(svmRadialSigma
)同时接受并获得相同的曲调参数,但基于调用$results
出现以不同方式使用它们?
我对train(tuneLength = 9)
的理解是,两个模型都会生成sigma
和C
每个9 values, 9 times
的结果,因为9
是每个模型的级别数调整参数(例外是随机搜索)?同样,M4
从9^3
起为train(tuneLength = 9)
,并且有3
个调整参数?
迈克尔
答案 0 :(得分:11)
我需要更新软件包文档,但详细信息请参见package web page for random search:
“唯一组合的总数由
tuneLength
的{{1}}选项指定。”
然而,这是使用RBF内核的特别混乱的SVM。这是一个故障:
train
调整费用,并根据svmRadial
的{{1}}函数使用单个sigma
值。对于网格搜索,kern lab
是要测试的成本值的数量,对于随机搜索,它是要评估的(成本,sigest
)对的总数。 tuneLength
与sigma
相同,但svmRadialCost
在每个重采样循环内运行。对于随机搜索,它不会调整svmRadial
。 sigest
使用网格搜索调整费用和sigma
。在一个次优的认知表现的时刻,我将其设置为在网格搜索期间尝试最多6个svmRadialSigma
值,因为我觉得成本空间需要更广泛的范围。对于随机搜索,它与sigma
相同。 sigma
与svmRadial
相同,但也考虑了类权重,仅适用于2类问题。 至于网页上的SOM示例,这是一个错误。我对SOM参数空间进行了过度采样,因为需要有svmRadialWeight
的过滤器。这个错误来自于我没有保留适量的参数。