试图更好地理解train(tuneLength = )
如何在{caret}
中工作。当我试图理解来自{kernlab}
的支持向量机方法之间的一些差异时,我的困惑就发生了--我已经回顾了文档(这里)和插入符号培训页面(这里)。
我的玩具示例是使用iris
数据集创建五个模型。结果是这里,可复制的代码是这里 (它们很长,所以我没有将它们复制并粘贴到帖子中)。
来自{caret}
文档:
tuneLength 表示调优参数网格中粒度大小的整数。默认情况下,此参数是由train生成的每个调优参数的级别数。如果trainControl有选项search =“随机”,则这是通过随机搜索生成的最大优化参数组合数。(注:如果给出了,则必须命名此参数。)
在这个例子、trainControl(search = "random")
和train(tuneLength = 30)
中,似乎有67个结果,而不是30个(优化参数组合的最大数量)?我试着四处游玩,看看是否有30个唯一的ROC
值,甚至是ydim
值,但据我统计,它们不是。
对于这个玩具示例,我创建了下表:
有办法看看“引擎盖下面”发生了什么吗?例如,M1
(svmRadial
)和M3
(svmRadialSigma
)都采用和给定相同的调参数,但基于调用$results
似乎使用它们不同?
我对train(tuneLength = 9)
的理解是,这两个模型都会产生sigma
和C
的结果,每个模型都带有9 values, 9 times
,因为9
是每个调优参数的级别数(随机搜索除外)。类似地,M4
将是9^3
,因为train(tuneLength = 9)
和有3
调优参数吗?
迈克尔
发布于 2016-08-10 16:37:05
我需要更新更多的包文档,但是详细信息在用于随机搜索的软件包网页上是拼写的:
“唯一组合的总数由
tuneLength
选项指定为train
。”
但是,使用RBF内核的SVMs尤其不稳定。下面是一篇文章:
svmRadial
基于kern lab
的sigest
函数对成本进行调整,并使用单一的sigest
值,对于网格搜索,tuneLength
是要测试的代价值的个数,而对于随机搜索则是要评估的(成本,sigma
)对的总数。svmRadialCost
与svmRadial
相同,但是sigest
在每个重采样循环中运行。对于随机搜索,它不会在sigma
上进行调整。svmRadialSigma
与网格搜索调超过了成本和sigma
。在一次次优认知性能的时刻,我设置了这个方法,在网格搜索中尝试最多6个sigma
值,因为我觉得成本空间需要一个更大的范围。对于随机搜索,它的作用与svmRadial
相同。svmRadialWeight
与svmRadial
相同,但也考虑了类权重,只适用于2类问题。至于网页上的SOM示例,这是一个bug。我过采样了SOM参数空间,因为xdim <= ydim & xdim*ydim < nrow(x)
需要一个过滤器。错误来自于我没有保持正确数量的参数。
https://stackoverflow.com/questions/38859705
复制相似问题