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