首先我来介绍一下高方差和高偏差的概念,可能很多人理解的不是很清楚。
偏差:是指一个模型的在不同训练集上的平均性能和最优模型的差异。偏差可以用来衡量一个模型的拟合能力。偏差越大,预测值平均性能越偏离最优模型。偏差衡量模型的预测能力,对象是一个在不同训练集上模型,形容这个模型平均性能对最优模型的预测能力。
方差:( variance)描述的是 一个模型在不同训练集上的差异,描述的是一个模型在不同训练集之间的差异,表示模型的泛化能力,方差越小,模型的泛化能力越强。可以用来衡量一个模型是否容易过拟合。
预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,预测结果数据的分布越散。方差用于衡量一个模型在不同训练集之间的关系,和最优模型无关。对象是不同训练集上的一个模型,表示选取不同的训练集,得出的模型之间的差异性。
记住:方差和偏差都是衡量模型的,方差表示选取不同的训练集,训练出模型的差异有多大,而偏差是指一个模型在不同训练集上的平均性能和最优模型的差异。
假设上面打靶图中的红点是真实值,每一个蓝色的点代表了一个根据不同的训练集训练出一个训练模型的预测数据,就是选取不同的训练集,训练出不一样的模型(不一样的模型指的是假设的模型结构一样,但是选取不同的训练集,训练出不同的模型参数,例如:模型都是y=ax^3+bx+c,但是选取不同的训练集,模型1:y=0.5x^3+2x+3,模型2:y=x^3+5x+2),每一个蓝点代表某一个训练模型对红点的预测值,这样说就很容易理解力吧。
分析上面的四幅图,左上是低偏差,低方差,因为首先每个模型预测的点都相距很近,所以选取不同的训练集,预测出他们模型之间的差异比较小,所以每个模型的方差比较低,其次对于每一个的模型,他们预测的值和红点之间的距离很近,准确率很高,偏差很小,所以他们是低偏差的。右上是低偏差,高方差,因为首先每个模型预测的点都相距很离散,所以选取不同的训练集,预测出他们模型之间的差异比较大,所以每个模型的方差比较高,其次对于每一个的模型,他们预测的值准确率很高,结果比较集中,偏差比较小,所以他们是低偏差的。左下是高偏差,低方差,因为首先每个模型预测的点都相距很近,所以选取不同的训练集,预测出他们模型之间的差异比较小,所以每个模型的方差比较小,其次对于每一个的模型,他们预测的值准确率很差,离红心点比较远,偏差比较大,所以他们是高偏差的。右下是高偏差,高方差,因为首先每个模型预测的点都相距很离散,所以选取不同的训练集,预测出他们模型之间的差异比较大,所以每个模型的方差比较大,其次对于每一个的模型,他们预测的值准确率很差,离红心点比较远,偏差比较大,所以他们是高偏差的。
再用一个简单的例子说明一下
左上中选取模型结构y=ax+b,不管选取什么训练集,他们预测出的直线的每个参数是差距不大的,所以说是低方差的,但是对于上面红线这一个参数已知的模型,预测出来的结果和真实的结果差距较大,所以它是高偏差的。右上的是拟合度刚刚合适。右下的模型真实值和预测值之间的偏差平均最小,所以右下的模型偏差很低,但是对于不同的训练集,他们训练出的模型参数差距是比较大的,如下图所示,
所以说,右下的方差比较大。
吴恩达老师(Andrew)在机器学习的课程中讲解了偏差和方差,在这儿我总结一下。
当你的训练误差和交叉验证误差或测试误差都很大,且值差不多时,是处于高偏差,低方差,欠拟合状态,需要增加多项式的次数来解决。
当你的训练误差和交叉验证误差差距很大,且测试集误差很小,验证误差很大,是处于低偏差,高方差,过拟合状态,需要减少多项式的次数或者利用正则化来解决。如下图所示:
利用正则化防止过拟合时,正则化参数的选择需要注意,过大或者过小都不合适。