前面小编给大家简单介绍过拟合和欠拟合时,提到了一个概念:学习曲线,我们通过学习曲线能够很清晰的判别出模型现在说出的状态是欠拟合还是过拟合,下面小编具体整理了学习曲线的相关内容,希望对大家有所帮助。
学习曲线(learning curve)是不同训练集大小,模型在训练集和验证集上的得分变化曲线。横坐标为·样本数,纵坐标为训练和交叉验证集上的得分(如准确率)。
模型在新数据上的表现如何,都能清晰地在展现在学习去线上,我们也能通过这些表现,进而判断模型是否方差偏高或者偏差过高,以及增大训练集是否可以减小过拟合。
(1)当训练集和测试集的误差收敛但却很高时,为高偏差。
左上图中训练集和验证集上的曲线能够收敛,但偏差很高,训练集和验证集上准确率相差很大,却都很差。这种情况下模型对已知数据和未知数据都不能进行准确的预测,很可能是欠拟合。
增加模型参数,采用更复杂的模型,减小正则项。
(2)当训练集和测试集上误差之间有大的差距时,为高方差。
当训练集的准确率比其他独立数据集上的测试结果的准确率要高时,一般都是过拟合。
右上图中,训练集和验证集的准确率差距很大,这种情况下,模型能够很好的拟合已知数据,但是泛化能力不足,属于高方差,很可能是过拟合。
增大训练集,降低模型复杂度,增大正则项,或者通过特征选择减少特征数。
(3)右下方图,也是最理想情况:找到偏差和方差都很小的状态,就是收敛而且误差较小。
学习曲线的具体操作:
每个模型对于整个测试数据集的预测的均方误差:mean_squared_error(y_test y_test_predict);