R:解释caret train的输出结果

3
我有一个关于使用train函数在caret中进行交叉验证超参数搜索的基本问题。在运行时,它会产生以下输出:enter image description 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)

@LyzandeR 不要紧,对于所有使用 verbose = TRUE 调用 train 的输出都是相同的。添加了一些示例代码。 - undefined
1个回答

2

我想要在解释中更具体,所以我要求实际代码,以下是内容。

输出结果显示了每个10折交叉验证中测试的参数。更详细地说:

第二行(从第二行开始,因为测试从+号开始,您将理解为什么)显示在第3次折叠中测试的参数为:

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

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


那么只是标记来指示特定超参数配置的训练开始和结束吗?您能指出在Github上产生此输出的确切代码行吗,以便我可以确定吗? - undefined
@fgnu 我从经验中知道这一点(看看你的输出,你会发现在+和-之间的行总是相同的),我也与我的同事讨论过这个问题。这也是R中输出的标准方式。stepAIC也是如此。我没有时间在github上查找产生这种情况的确切行。这可能需要很多调查,我现在无法做到。 - undefined
@fgnu 你可以从这个链接开始。请查看第54行。但是打印操作发生在traindefault.r文件中。 - undefined
没问题。我觉得你的请求迫使我创建一个容易(和快速)调试的示例。输出由第30行和第236行的progress引发,由nominalTrainWorkflow调用,再由train.default调用。 - undefined
1
正如fg nu所述,生成此代码的代码在这里。函数nominalTrainWorkflow通常是它发生的地方(取决于重采样类型等),大约在第74行和第321行(在一个名为progress的函数中)。 - undefined
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接