在机器学习领域,最怕出现的就是过拟合,也就是训练出来的模型在训练集上进行测试,效果很好(一般来讲,在神经网络训练中,随着迭代次数的增加,模型的拟合能力会变得越来越好,如下图中的红线部分),但是在测试集上效果很差(也就是泛华能力变得很差,举个栗子,对于加法准则来讲,1+1=2,随着迭代次数来讲,每一次1+1都能算出等于2,但是突然测试集来了一个100+100,模型只能够计算1+1的,不能计算100+100的,因此泛化能力就不行)。因此可以理解为泛华能力就是模型在测试集上的效果与真实效果的对比,拟合能力就是模型在训练集上与真实效果的对比。
随着迭代次数逐渐增多,那么模型的拟合能力就会变得更强,并且模型的复杂度就会上升,也会容易导致过拟合。相反如果限制模型的复杂度,降低其拟合能力,又有可能会导致欠拟合。因此,在模型能力和复杂度之间取得一个较好的平衡对一个机器学习算法来讲十分重要。我们可以使用偏差-方差来分析和指导。
偏差:在实际训练一个模型的时候,训练集是从真实分布上采样得到的有效样本的集合。不同的训练集会得到不同的模型。偏差是指一个模型在不同训练集上的平均性能和最优模型的差异。偏差可以用来衡量一个模型的拟合能力;
方差:是指一个模型在不同训练集上的差异,可以用来衡量一个模型是否容易过拟合。
如下图,a是一种理想情况,也是我们机器学习想要获得到的模型。
b表示是高偏差低方差的情况,表示模型的泛化能力很好,但是拟合能力不行。
c表示的高方差低偏差的情况,表示模型的泛化能力不行,但是拟合能力很好。
d表示的高方差高偏差的情况,表示模型的泛化能力和拟合能力都不行。
方差一般会随着训练样本的增加而减少,当样本比较多的时候,方差比较小,我们可以选择能力强的模型来减少偏差。
下图是机器学习模型的期望错误、偏差和方差随复杂度的变化情况。最优的模型并不一定是偏差曲线和方差曲线的交点。