R 了解 {caret} 训练(tuneLength = )和 {kernlab} 的 SVM 方法

问题描述 投票:0回答:1

尝试更好地理解

train(tuneLength = )
{caret}
中的工作原理。当我试图理解
{kernlab}
的 SVM 方法之间的一些差异时,我感到困惑,我已经查看了文档(这里)和插入符培训页面(这里)。

我的玩具示例是使用

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

来自

{caret}
文档:

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

这个例子中

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
调整参数?

r svm r-caret
1个回答
18
投票

我需要更多更新包文档,但详细信息已拼写在包网页上以进行随机搜索

“唯一组合的总数由

tuneLength
选项指定到
train
。”

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

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

至于网页上的 SOM 示例,这是一个错误。我对 SOM 参数空间进行了过度采样,因为需要有一个针对

xdim <= ydim & xdim*ydim < nrow(x)
的过滤器。这个错误是因为我没有保留正确数量的参数。

© www.soinside.com 2019 - 2024. All rights reserved.