训练和交叉验证误差曲线

数据挖掘 机器学习 数据集 交叉验证 准确性
2021-09-19 05:25:43

我有一个图表,它在 X 轴上绘制训练数据大小,在 y 轴上绘制精度。我使用 sklearn 的learning_curve绘制了曲线。

在此处输入图像描述

可以观察到,训练数据集的准确性降低,但验证数据集的准确性提高。我无法为这种行为辩护。

  1. 通常,随着训练数据集的增加,训练精度应该会增加,对吗?
  2. 此外,假设数据集非常嘈杂,因此训练精度随着数据集大小的增加而降低。但这并不能解释为什么验证准确性会提高,因为噪声也应该会影响它。
1个回答

我认为您所看到的是正常行为:

只有很少的样本(如 2000 年),模型很容易(过度)拟合数据 - 但它不能很好地概括。所以你得到了很高的训练准确率,但模型可能无法很好地处理新数据(即验证/测试准确率低)。

随着您添加更多样本(如 9000 个),模型变得更难以拟合数据 - 因此您的训练准确度较低,但模型将更好地处理新数据(即验证/测试准确度开始上升)。

所以:

  1. 随着训练数据集的增加,训练精度应该会降低,因为更多的数据更难拟合。

  2. 随着训练数据集的增加,验证/测试的准确性也应该增加,因为较少的过度拟合意味着更好的泛化。

Andrew Ng 有一个关于学习曲线的视频。请注意,他在 y 轴上绘制了误差,您在 y 轴上具有准确性..所以 y 轴被翻转。

另请看视频的后半部分。它解释了高偏差和高方差问题。

您的模型似乎有很大的差异(由于两条曲线之间的“差距”很大) - 对于您拥有的少量数据来说,它仍然太复杂了。获取更多数据或使用更简单的模型(或在同一模型上进行更多正则化)可能会改善结果。