学习曲线 - 为什么训练准确率开始时如此之高,然后突然下降?
Learning curves - Why does the training accuracy start so high, then suddenly drop?
我实现了一个模型,在该模型中我使用逻辑回归作为分类器,我想绘制训练集和测试集的学习曲线以决定下一步做什么以改进我的模型。
只是为了给你一些信息,为了绘制学习曲线,我定义了一个采用模型的函数,一个 pre-split 数据集(train/test X 和 Y 数组,注意:使用 train_test_split
函数),一个评分函数作为输入,并在 n 个指数间隔的子集和 returns 学习曲线上迭代数据集训练。
我的结果如下图
我想知道为什么训练准确率一开始这么高,然后突然下降,然后随着训练集大小的增加又开始上升?而对于测试精度则相反。我认为准确性非常好,下降是因为开始时数据集较小导致一些噪音,然后当数据集变得更加一致时它开始上升,但我不确定。有人可以解释一下吗?
最后,我们是否可以假设这些结果意味着低 variance/moderate 偏差(在我的上下文中 70% 的准确度还不错),因此为了改进我的模型,我必须求助于集成方法或极端特征工程学?
我认为当数据集很小(训练准确度非常高,测试准确度很低)时,你会 过度拟合 训练样本。随着数据集大小的增加,您的分类器开始更好地泛化,从而提高测试数据集的成功率。
在 10^3 数据集之后,准确率似乎稳定在 70%,这表明您在训练数据集过度拟合和测试数据集欠拟合之间取得了良好的平衡
据我了解,您的学习曲线表明存在高差异情况。训练集的准确度通常很高,因为复杂的模型通常可以很好地拟合少量样本。随着样本数的增加,即使是复杂的模型也无法完美分离 类,因此准确度开始下降。
您将验证数据集称为 "test",但它通常称为验证。训练和验证数据集的覆盖范围,然后随着样本数量的增加而趋于稳定,这一事实表明已经找到了该模型配置的最佳性能。获取更多示例数据无济于事。如果你想提高准确性,你需要找到一种方法来减少偏差,这通常意味着调整你的建模参数或使用不同的学习算法。
我实现了一个模型,在该模型中我使用逻辑回归作为分类器,我想绘制训练集和测试集的学习曲线以决定下一步做什么以改进我的模型。
只是为了给你一些信息,为了绘制学习曲线,我定义了一个采用模型的函数,一个 pre-split 数据集(train/test X 和 Y 数组,注意:使用 train_test_split
函数),一个评分函数作为输入,并在 n 个指数间隔的子集和 returns 学习曲线上迭代数据集训练。
我的结果如下图
我想知道为什么训练准确率一开始这么高,然后突然下降,然后随着训练集大小的增加又开始上升?而对于测试精度则相反。我认为准确性非常好,下降是因为开始时数据集较小导致一些噪音,然后当数据集变得更加一致时它开始上升,但我不确定。有人可以解释一下吗?
最后,我们是否可以假设这些结果意味着低 variance/moderate 偏差(在我的上下文中 70% 的准确度还不错),因此为了改进我的模型,我必须求助于集成方法或极端特征工程学?
我认为当数据集很小(训练准确度非常高,测试准确度很低)时,你会 过度拟合 训练样本。随着数据集大小的增加,您的分类器开始更好地泛化,从而提高测试数据集的成功率。
在 10^3 数据集之后,准确率似乎稳定在 70%,这表明您在训练数据集过度拟合和测试数据集欠拟合之间取得了良好的平衡
据我了解,您的学习曲线表明存在高差异情况。训练集的准确度通常很高,因为复杂的模型通常可以很好地拟合少量样本。随着样本数的增加,即使是复杂的模型也无法完美分离 类,因此准确度开始下降。
您将验证数据集称为 "test",但它通常称为验证。训练和验证数据集的覆盖范围,然后随着样本数量的增加而趋于稳定,这一事实表明已经找到了该模型配置的最佳性能。获取更多示例数据无济于事。如果你想提高准确性,你需要找到一种方法来减少偏差,这通常意味着调整你的建模参数或使用不同的学习算法。