Lecture2 Where does the error come from?

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

  • 1.bias 偏置
  • 2.variance 方差
    知道了error的来源,就可以挑选适当的方法调整你的model。
    image.png

    如上图所示,假设f^是最优的结果,f* 是估测的结果,我们求出多次实验的 f* 总和的期望,与最优解的距离就是bias,每个f* 之间的距离就是variance。如果 bias太大,那么可以理解为你压根就没瞄准靶心,如果variance太大,说明你射出的子弹有偏移。

如何找多个 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过大的情况,解决方法有两个:

  • 1.增加更多的输入特征。

  • 2.建立一个更复杂的model。
    如果你的model很好的fitting训练集,但是在测试集上得出的error很大,那么很大可能你的variance过大。(也就是over fitting)
    对于variance过大的情况,解决方法:

  • 1.增加更多的数据。

    image.png

  • 2.regularization 正则化。

    image.png

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。


**

你可能感兴趣的:(Lecture2 Where does the error come from?)