Gab*_*e B 8 plot r machine-learning supervised-learning
我想研究模型调整的偏差/方差之间的最佳权衡.我正在使用插入符号R,它允许我根据模型的超参数(mtry,lambda等)绘制性能指标(AUC,准确度......)并自动选择最大值.这通常会返回一个好的模型,但如果我想进一步挖掘并选择不同的偏差/方差权衡,我需要一个学习曲线,而不是一个性能曲线.
为简单起见,假设我的模型是一个随机森林,它只有一个超参数'mtry'
我想绘制训练和测试集的学习曲线.像这样的东西:

(红色曲线是测试集)
在y轴上我设置了一个错误度量(错误分类的例子的数量或类似的东西); 在x轴上'mtry'或者训练集大小.
问题:
是否有根据训练集折叠不同大小迭代训练模型的功能?如果我必须手动编码,我该怎么做?
如果我想将超参数放在x轴上,我需要所有由caret :: train训练的模型,而不仅仅是最终模型(在CV之后获得最大性能的模型).这些"丢弃"的模型在火车后仍然可用吗?
在某个时候,可能是在提出这个问题之后,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。我已经更新了我的答案以反映这一变化。确保您使用的是最新版本的插入符包。