学习曲线 - 为什么训练准确度开始如此之高,然后突然下降?

时间:2016-05-02 11:11:44

标签: python machine-learning scikit-learn classification logistic-regression

我实现了一个模型,其中我使用Logistic回归作为分类器,我想绘制训练和测试集的学习曲线,以决定下一步做什么以改进我的模型。

只是为了给你一些信息,为了绘制学习曲线,我定义了一个函数,它采用了一个模型,一个预分割数据集(训练/测试X和Y数组,NB:使用train_test_split函数),评分函数作为输入并迭代n个指数间隔子集的数据集训练并返回学习曲线。

我的结果如下图所示 enter image description here

我想知道为什么训练准确度开始如此之高,然后突然下降,然后随着训练集大小的增加再次开始上升?而相反,为了测试的准确性。我认为非常好的准确性和下降是由于一些小数据集在开始时的一些噪音,然后当数据集变得更加一致时它开始上升,但我不确定。有人可以解释一下吗?

最后,我们可以假设这些结果意味着低方差/中度偏差(在我的上下文中70%的准确度并不差)所以为了改进我的模型,我必须采用整体方法或极端特征工程吗?

2 个答案:

答案 0 :(得分:4)

我认为当数据集较小时(训练精度非常高,测试精度较低),您将过度拟合训练样本。随着数据集大小的增加,分类器会更好地开始概括,从而提高测试数据集的成功率。

在10 ^ 3数据集之后,准确度似乎达到70%,这表明您在过度拟合训练和不适合测试数据集之间取得了良好的平衡

答案 1 :(得分:0)

就我的理解而言,您的学习曲线表明了高差异情景。由于复杂模型通常可以很好地适合少量样本,因此训练集的准确性通常很高。随着样本数量的增加,即使是复杂的模型也无法完美地分类,因此精度开始下降。

您调用了验证数据集“test”,但通常称为验证。随着样本计数的增加,列车和验证数据集的覆盖范围以及随后的稳定表明已找到该模型配置的最佳性能。获取更多样本数据无济于事。如果您想提高准确度,您需要找到减少偏差的方法,这通常意味着调整建模参数或使用不同的学习算法。