训练和测试误差之间的差异有多大才被认为是合适的? [关闭]

Posted

技术标签:

【中文标题】训练和测试误差之间的差异有多大才被认为是合适的? [关闭]【英文标题】:How much difference between training and test error is considered suitable? [closed] 【发布时间】:2020-02-16 08:19:00 【问题描述】:

我正在研究回归问题,我使用带有决策树的 ad-boost 进行回归,并使用 r^2 作为评估度量。我想知道训练 r^2 和测试 r^2 之间有多大差异被认为是合适的。我训练 r^2 是 0.9438 并且测试 r^2 是 0.877。是过拟合还是好?。我只想知道究竟训练和测试之间的差异有多大可以接受合适?.

【问题讨论】:

【参考方案1】:

您的问题有几个问题。

首先,r^2 当然推荐作为预测问题的性能评估度量;引用我在another SO thread 中的回答:

整个 R-squared 概念实际上直接来自统计世界,重点是解释性模型,它在机器学习环境中几乎没有用处,重点显然是预测模型;至少 AFAIK,除了一些非常入门的课程之外,我从来没有(我的意思是 从来没有 ...)看到 R 平方用于任何类型的性能评估的预测建模问题;流行的机器学习介绍,例如 Andrew Ng 在 Coursera 的Machine Learning,甚至懒得提及它也不是偶然的。而且,正如上面Github thread 中所述(强调添加):

特别是在使用 test 集时,我有点不清楚 R^2 的含义。

我当然同意。

第二:

我的训练 r^2 是 0.9438,测试 r^2 是 0.877。是过拟合还是好的?

训练和测试分数之间的差异本身表示过度拟合。这只是泛化差距,即训练集和验证集之间性能的预期差距;引用最近的blog post by Google AI:

理解泛化的一个重要概念是泛化差距,即模型在训练数据上的性能与其在从同一分布中提取的不可见数据上的性能之间的差异。

过度拟合的特征是当您的验证损失开始增加,而您的训练损失继续减少时,即:

(图片改编自Wikipedia entry on overfitting - 不同的东西可能位于水平轴上,例如这里是提升树的数量)

我只是想知道确切训练和测试之间的差异有多大可接受适合

这个问题没有一般的答案;一切都取决于您的数据细节和您要解决的业务问题。

【讨论】:

以上是关于训练和测试误差之间的差异有多大才被认为是合适的? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Linux下swap分区多大才合适的问题探讨

机器学习123模型评估与选择 (上)

模型评估与选择

模型的泛化误差

机器学习模型的选择和评估

什么是惩罚幅度和符号差异的良好损失函数