我正在处理一个回归问题,我使用了带有决策树的AdaBoost进行回归,并使用R²作为评估指标。我想知道训练R²和测试R²之间的差异有多大被认为是合适的。我的训练R²是0.9438,测试R²是0.877。这是过拟合还是表现良好?我只想知道训练和测试之间的差异具体有多大被认为是可接受或合适的?
回答:
你的问题有几个问题。
首先,R²绝对不推荐作为预测问题的性能评估指标;引用我在另一个Stack Overflow帖子中的回答:
R-squared的整个概念实际上直接来自统计学界,那里强调的是解释性模型,而在机器学习的背景下,它在预测模型中几乎没有用处;至少据我所知,除了某些非常入门的课程之外,我从未(我指的是从未…)见过使用R-squared进行任何类型性能评估的预测建模问题;也不仅仅是巧合,受欢迎的机器学习介绍,如Andrew Ng在Coursera上的机器学习课程,甚至都没有提到它。而且,正如在上面的Github线程中所指出的(强调增加):
特别是在使用测试集时,我不太清楚R^2的意义。
我完全同意这一点。
第二:
我的训练R²是0.9438,测试R²是0.877。这是过拟合还是表现良好?
训练和测试分数之间的差异本身并不表示过拟合。这只是泛化差距,即训练集和验证集之间性能的预期差距;引用Google AI最近的一篇博客文章:
理解泛化的重要概念是泛化差距,即模型在训练数据上的表现与其在来自相同分布的未见数据上的表现之间的差异。
过拟合的典型特征是,当你的验证损失开始增加,而你的训练损失继续减少时,即:
(图片改编自维基百科关于过拟合的条目 – 水平轴可能代表不同的东西,例如这里是提升树的数量)
我只想知道训练和测试之间的差异具体有多大被认为是可接受或合适的?
这个问题没有普遍的答案;一切都取决于你的数据细节和你试图解决的业务问题。