当我们采用linear regression的方式建立并训练模型之后,需要在testing data上进行模型的检验。
检验的方法很简单,假设每个testing data为
(x,y)
,将
x
代入到拟合出的
在testing data上面,
∑|y−y^|
很可能不为0,甚至很大,错误的来源有两个方面——bias和variance。
可以用打靶来形象的说明bias与variance之间的关系。
bias就像是打靶的时候没有瞄准把心,因此射中的位置会有一定的偏差;variance就像是即使你瞄准一个地方打,也可能因为各种原因造成子弹发散。
bias(variance)产生的原因是,我们的training集合是全集的一个比较小的子集,因此training集合中数据的期望(方差)不一定等于全集的期望(方差)。
一般来说,比较简单的model受sampled data的影响较小(考虑极端情况下 f(x)=c ,因此variance较小。但是简单的model的bias可能很大(因为简单的model很可能不能cover所有的情况)。
一张图可以形象的展示bias与variance与模型复杂度之间的关系:在下图中,横坐标代表模型的次数,纵坐标代表模型上的error。可以看到随着模型越来越复杂,bias带来的error越来越小而variance带来的error越来越大。这个过程也是从underfitting到overfitting的过程。
在实际的训练过程中,需要从bias与variance之间取得一个平衡,从而获得最小的error。从上图中我们可以知道,当模型在training set上面都没有很好的performance(underfitting)时,bias带来的error是非常大的,这个时候可以通过增加feature和增加模型复杂度来解决。当模型处于overfitting的状态时,可以通过增加training data和正则化(regularization)来解决。