测试精度大于训练精度怎么办?

Posted

技术标签:

【中文标题】测试精度大于训练精度怎么办?【英文标题】:Test accuracy is greater than train accuracy what to do? 【发布时间】:2018-12-30 01:37:02 【问题描述】:

我正在使用随机森林。我的测试准确率为 70%,而训练准确率为 34%?该怎么办 ?我该如何解决这个问题。

【问题讨论】:

欢迎来到 SO。请更具体并显示代码和数据。 【参考方案1】:

Test 准确度不应高于train,因为该模型针对后者进行了优化。这种行为可能发生的方式:

您没有使用相同的源数据集进行测试。您应该进行适当的训练/测试拆分,其中它们都具有相同的基础分布。很可能您为test提供了一个完全不同(并且更受欢迎)的数据集

应用了不合理的高度 regularization。即使如此,也需要一些“测试数据分布与训练数据分布不同”的元素才能发生观察到的行为。

【讨论】:

我同意@javadba 并想补充一点:另一个原因可能是数据污染,其中训练集的记录也存在于测试集中。【参考方案2】:

首先,您应该检查用于训练的数据。我认为数据有问题,数据可能没有经过适当的预处理。

此外,在这种情况下,您应该尝试更多的 epoch。绘制学习曲线以分析模型何时收敛。

您应该检查以下内容:

    训练和验证准确度得分都应该增加,损失应该减少。 如果在任何特定时期之后第 1 步出现问题,则仅在该时期训练您的模型,因为在那之后您的模型过度拟合。

【讨论】:

以上是关于测试精度大于训练精度怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

PyTorch 半精度训练踩坑

Oracle NUMBER 的 Scale 怎么可能大于 Precision?

Python %f 怎么指定精度? 比我想指定到小数点后两位?

针对最大深度绘制决策树训练/测试精度

关于浏览器精度问题

tensorflow识别Mnist时,训练集与验证集精度acc高,但是测试集精度低的比较隐蔽的原因