R mlr - 从训练数据子集和整个测试数据(不是整个训练数据)创建学习曲线?

时间:2016-11-23 12:56:39

标签: r machine-learning mlr

假设我正在创建这样的学习曲线(代码中可能出现的小错误,它只是一个示例)。我想要的是一个经典的学习曲线,你可以放大训练集,保持验证/测试集的大小相同。

learningCurve <- generateLearningCurveData("regr.glmnet",
                                           bh.task,
                                           makeResampleDesc(method = "cv", iters = 5, predict = "both"),
                                           seq(0.1, 1, by = 0.1),
                                           list(setAggregation(auc, train.mean), setAggregation(auc, test.mean))
)

上述代码的问题在于,学习者确实接受了训练数据部分的训练,但auc.train.mean测量是在整个训练集上进行评估的。这导致我不想要的学习曲线。我希望这个衡量标准能够评估用于学习的训练集分数的表现,如下所示:

http://www.astroml.org/sklearn_tutorial/practical.html#learning-curves

我相信这句话解释了一切:

  

请注意,当我们训练一小部分训练数据时,使用此子集计算训练误差,而不是完整训练集。

如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

此问题的修复程序位于this pull request,应尽快合并。

修复到位后,我会在评论中获得完整示例的以下学习曲线:

enter image description here

答案 1 :(得分:0)

作为未来读者的参考,这将是固定的,这是github问题

https://github.com/mlr-org/mlr/issues/1357