Lecture2 Where does the error co

2019-11-04  本文已影响0人  带带吴腾跃

Lecture1中我们讲到的error来自哪里呢?
一共有两个来源:

如何找多个 f* ?
很简单,只需要用相同的model和不同的样本重复做N次实验。

如果model选择如下,做100次实验,把每个function图像都画出来,那么会得到这样的一百条直线。 image.png
image.png 如果model选择如下,做100此实验,那么结果如下图: image.png
image.png

如果model选择的更加复杂,像下面这样,那结果会变成这样。


image.png
image.png

那么由此我们可以得出,如果你在设计model的时候用的variance比较简单,那么就可以比喻成打靶时候每次打中的点很靠近,但是如果variance很大,则散布就会很开。

image.png
为什么这样?
可以这么想,因为简单的model受到data的影响是比较小的。举一个极端的例子,假设你的model为f = c,意味着无论input什么data输出都是c,所以variance直接为0。 image.png
如果我们把所有的 f* 平均一下,求出到 f^ 的距离,那么这就是bias。但是最优解 f^ 我们不知道啊!所以只能先assume一个最优解 f^ image.png

总结一下
越简单的model,variance越小,但bias越大。为什么呢?因为越简单的model,你只能在它表示的那个区域(也就是f*构成的集合)里寻找最优解,然而它却没有包含最优解,不能精确的表示f^ (最优解),故虽然variance很小,但是却距离f^ 很远。

越复杂的model,variance越大,但bias越小。因为model越复杂,他能表示的区域(也就是f*构成的集合)就多,且包含了最优解,所以能够近似精确的表示f^,但是受data 的影响较大,所以variance会很大。

image.png
此时,如果你的error来自bias,这种情况就叫做Underfitting(欠拟合);如果你的error来自variance,这种情况就叫做Overfitting(过拟合)

诊断

那么如何判断是bias过大呢?
如果你的model不能很好的fitting已有的训练集,那么你的bias过大。(也就是underfitting)
对于bias过大的情况,解决方法有两个:

Model Selection

通常需要做的就是平衡bais和variance,使得error最小。但以下是你不应该做的:例如,你手上有training set 和testing set,你有三个model,分别用testing set测试后得出如下结果。理论上model3是效果最好的,但是如果用真正的数据检测后实际上不一定是效果最好的。因为你的testing set只是你所拥有的测试集而不是真正的数据,也是有bias,所以model3对于真实数据不一定就是效果最好的。


image.png

最好的做法是,把training set分成两部分,一部分作为真正的training set,一部分作为validation set 验证集。用验证集选出error最小的model后再用整个training set来测试。然后再用testing set来检测,此时的结果才能真正反映此model对于真实testing set的结果。

image.png

如果我的training set 和 validation set分坏了怎么办?可以用N-fold Cross Validation 交叉验证**。然后求出avg error。


**
上一篇 下一篇

猜你喜欢

热点阅读