【问题标题】:R: Interpretation of caret train outputR:插入符号序列输出的解释
【发布时间】:2015-11-13 22:14:44
【问题描述】:

我有一个关于使用train 函数在caret 中进行交叉验证的超参数搜索的非常基本的问题。在运行时,它会产生如下所示的输出:

我的问题是为什么每个超参数配置不止一行,输出中的+- 表示什么?


一些可以产生上述输出的示例代码(取自here的随机示例):

library(caret)
library(datasets)
data(mtcars)
split = createDataPartition(y = mtcars$mpg, p = 0.6, list = FALSE)
dev = mtcars[split,]
val = mtcars[-split,]
ctrl = trainControl(method = "cv",number = 10, verbose = TRUE)
lmCVFit = train(mpg ~ ., data = mtcars, method = "lm", trControl = ctrl, metric="Rsquared")
summary(lmCVFit)

【问题讨论】:

  • @LyzanderR 没关系,对trainverbose = TRUE 的所有调用的输出都是相同的。添加了一些示例代码。

标签: r r-caret


【解决方案1】:

我想在解释中具体说明,这就是我要求提供实际代码的原因,但它就在这里。

输出显示了在 10 折交叉验证的每一折中测试的参数。更详细:

您的第二行(我从第二行开始,因为测试以 + 开头,您会明白为什么)表明在折叠 3 中测试的参数是:

  • eta = 0.01, max_depth=4, gamma=1 and nround=1000

算法实际上会保存这些参数,因为它试图找到参数的最佳组合。在下一行(第 3 行)中,输出与第 2 行完全相同,唯一的区别是它以减号开头。这只是为了通知您上述参数的处理现已结束。您会注意到所有以减号开头的行始终与它们上方的行相同(带有加号的行)。第 4 行以加号开头并测试一组新参数(实际上,这次唯一改变的是 max_depth=8)。该过程仍处于交叉验证的第 3 次,并且在其他折叠中将发生相同的次数,以便算法可以选择最佳参数。

【讨论】:

  • 所以只是标记来指示特定超参数配置的训练开始和结束?您能否指出 Github 上产生此输出的确切代码行,以便我确定?
  • @fgnu 我从经验中知道这一点(看看你的输出,你会发现 +s 和 -s 之间的线总是相同的),我也和我的同事讨论过这个问题。这也是 R 中的标准输出方式。stepAIC 也是如此。我没有时间查看 github 并找到产生这个的确切行。这可能需要我现在做不了的大量调查。
  • @fgnu 你可以从this 一开始。检查第 54 行。但打印发生在 traindefault.r 文件中。
  • 不用担心。我认为您的要求迫使我创建一个简单(且快速)调试的示例。输出由progress 在第 30 和 236 行提出,由nominalTrainWorkflow 调用,由train.default 调用。
  • 正如`fg nu`所述,生成它的代码是here,函数nominalTrainWorkflow通常出现在第74行和第321行附近(取决于重采样的类型等)(在一个名为progress的函数中)。
猜你喜欢
  • 2017-08-09
  • 2017-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多