试图更好地理解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
复制相似问题