为了评估训练模型的output,通常我们会将数据集分为三类:training set, validate set, test set,一般的比例为6:2:2,最好根据实际数据量来划分比例。
现在来看看房价预测这个例子。我们用模型训练之后无非会有三种情况,如下图:
(1)第一种即是我们所说的high bias(高偏移):造成high bias的原因有两种,第一种可以从图上看出,就是我们的训练的feature很少,以至于再怎么训练,多项式也无法完全拟合所有数据(同时如果此时再增加train set的数量也是徒劳的,所以有些情况下并不见的数据越多越好,关键是要找对模型,一步一步来调整对策)。第二种稍后再说。
(2)第二种是最理想的结果,介于overfit和underfit之间。
(3)第三种是high variance,造成high variance的原因其实也有两种,也刚好是和high bias对应。第一种原因是feature太多了,以至于完全拟合了所有数据,这时候可以想象,如果增加training set的数量,可能会有很不错的效果。第二种也放在后面说。
然后我们可以以feature size为变量来描绘validate set和training set两个数据的cost function。我们的最终目的当然是使得两个cost function尽量小,同时也要尽量相等。
由此可以看出其实bias的本质是 对于training set的准确度评估;而variance是用training set训练好的模型对validate set评估的方差。
然后我们用training set size为变量来描绘validate set和training set两个数据的cost function。
在high bias情况下:
在high variance情况下:
上面的两个图就是learning curve,应该不难理解。
最后我们看看实际经过regularization后的cost function的式子
所以可以看出参数lambda也是能影响到模型的最后效果的。
如果lambda过大,自然会减少多项式参数theta的值,导致underfit。反之同理。
所以造成bias和variance的第二个原因就是lambda值的选择。 根据这些原因就可以知道自己的模型问题出在哪儿,然后对症调整。
结论:practical application中,要学会用learning curve 来找出模型具体的问题所在,才能正确训练出好的结果。