【问题标题】:How to create a learning curve (bias/variance) from the output of caret::train如何从 caret::train 的输出创建学习曲线(偏差/方差)
【发布时间】:2018-02-18 10:56:43
【问题描述】:

我是插入符号库的新手。我想使用 train 函数在我的数据集上运行交叉验证(使用 rpart 方法进行分类)。我的目标是使用从我的训练调用返回的数据生成学习曲线。学习曲线将在 x 轴上绘制数据集大小。训练集和交叉验证集的预测误差将绘制为数据集大小的函数。

我的问题是,插入符号是否对训练和 cv 折叠都进行了预测?如果答案是肯定的,我将如何提取这些数据?

假设答案是肯定的,下面是一个简单的代码示例,您可以附加到该示例中来说明:

library(MASS)
data(biopsy)
biopsy <- biopsy[, -1]
names(biopsy) <- c("thick", "u.size", "u.shape", "adhsn", "s.size", "nucl", "chrom", "n.nuc", "mit", "class")
biopsy.v2 <- na.omit(biopsy)
set.seed(1)
ind <- sample(2, nrow(biopsy.v2), replace = TRUE, prob = c(0.7, + 0.3))
biop.train <- biopsy.v2[ind == 1, ]
tr.model <- caret::train(class ~ ., data= biop.train, trControl = trainControl(method="cv", number=4, verboseIter = FALSE, savePredictions = "final"), method='rpart')
#Can I extract train and cv accuracies from tr.model?

谢谢。

注意:我意识到我可能需要使用我的数据集的不同样本重复调用 train(假设 caret 也不支持这一点),这并没有反映在此处的代码示例中。

【问题讨论】:

    标签: r cross-validation r-caret rpart


    【解决方案1】:

    你可以试试这个:

    对每个重采样进行预测的数据框:

    tr.model$pred
    

    包含每个性能指标的列的数据框。每行对应每个重采样:

    tr.model$resample
    

    带有最终参数的数据框:

    tr.model$bestTune
    

    具有训练错误率和调整参数值的数据框:

    tr.model$results
    

    要指定重复的 CV:

    trainControl(..., repeats = n)
    

    其中 n 是一个整数(要计算的完整折叠集的数量)

    编辑:确定哪些重采样在测试折叠中:

    相关信息在 tr.model$pred 数据框中:

    tr.model$pred[tr.model$pred$Resample=="Fold1",4:5]
    tr.model$pred[tr.model$pred$Resample=="Fold2",4:5]
    tr.model$pred[tr.model$pred$Resample=="Fold3",4:5]
    tr.model$pred[tr.model$pred$Resample=="Fold4",4:5]
    

    那些不在测试折叠中的在训练折叠中

    【讨论】:

    • 感谢您对此@missuse 的反馈。作为后续,您知道我如何确定哪些重采样在训练折叠和交叉验证折叠中(很抱歉,如果这很明显)?
    • 很高兴为您提供帮助。检查编辑。
    • 好的,所以 tr.model$pred$Resample 包含测试折叠结果(感谢您对此的确认)。我在哪里可以找到训练折叠结果?
    • 不要引用我的话,但我很确定它们没有存储在 trainControl 结果中,因为超参数选择是基于测试结果的。但是,您可以对数据进行子集化(删除每个测试折叠)。像这样的 Fold1:biop.train[tr.model$pred$rowIndex[tr.model$pred$Resample != "Fold1"],] 并运行 trainControl(method = "none")
    猜你喜欢
    • 2017-04-27
    • 2019-08-16
    • 2018-05-28
    • 1970-01-01
    • 2014-11-18
    • 2019-03-31
    • 2013-12-20
    • 2016-04-03
    • 1970-01-01
    相关资源
    最近更新 更多