用插入符号和R绘制学习曲线

Gab*_*e B 8 plot r machine-learning supervised-learning

我想研究模型调整的偏差/方差之间的最佳权衡.我正在使用插入符号R,它允许我根据模型的超参数(mtry,lambda等)绘制性能指标(AUC,准确度......)并自动选择最大值.这通常会返回一个好的模型,但如果我想进一步挖掘并选择不同的偏差/方差权衡,我需要一个学习曲线,而不是一个性能曲线.

为简单起见,假设我的模型是一个随机森林,它只有一个超参数'mtry'

我想绘制训练和测试集的学习曲线.像这样的东西:

学习曲线

(红色曲线是测试集)

在y轴上我设置了一个错误度量(错误分类的例子的数量或类似的东西); 在x轴上'mtry'或者训练集大小.

问题:

  1. 是否有根据训练集折叠不同大小迭代训练模型的功能?如果我必须手动编码,我该怎么做?

  2. 如果我想将超参数放在x轴上,我需要所有由caret :: train训练的模型,而不仅仅是最终模型(在CV之后获得最大性能的模型).这些"丢弃"的模型在火车后仍然可用吗?

mak*_*ker 2

在某个时候,可能是在提出这个问题之后,caret 包添加了learning_curve_dat帮助评估模型在一系列训练集大小上的性能的函数。

这是函数文档中的示例:

library(caret)
set.seed(1412)
class_dat <- twoClassSim(1000)

set.seed(29510)
lda_data <- learning_curve_dat(dat = class_dat, 
                               outcome = "Class",
                               test_prop = 1/4, 
                               ## `train` arguments:
                               method = "lda", 
                               metric = "ROC",
                               trControl = trainControl(classProbs = TRUE, 
                                                        summaryFunction = twoClassSummary))

ggplot(lda_data, aes(x = Training_Size, y = ROC, color = Data)) + 
  geom_smooth(method = loess, span = .8)
Run Code Online (Sandbox Code Playgroud)

找到每个 Training_Size 的性能指标,并将其与数据变量(“重新采样”、“训练”和可选的“测试”)一起保存在 lda_data 中。

以下是函数文档的链接:https ://rdrr.io/cran/caret/man/learning_curve_dat.html

需要明确的是,这回答了问题的第一部分,但没有回答第二部分。

注意至少在 2020 年 8 月之前,插入符号包代码和文档中存在拼写错误。函数调用是learing_curve_dat在更正为 之前的learning_curve_dat。我已经更新了我的答案以反映这一变化。确保您使用的是最新版本的插入符包。

  • 我很困惑为什么这个函数不起作用,我注意到插入符号包中有一个拼写错误,它被拼写为“learing_curve_dat()”,而不是“learning_curve_dat()”。 (2认同)