当前位置:   article > 正文

李宏毅机器学习笔记(二)——欠拟合与过拟合_欠拟合时方差怎么变

欠拟合时方差怎么变

一.误差的来源

  这里的误差就是指我们在测试集上的误差,而不是训练集上的损失值。

1.实例——手枪打靶

  我们把每次的打靶看成是独立同分布的样本,中心为我们的目标。我们很容易可以看出,误差来源于两个部分:偏差(bias)和方差(variance)。其中偏差指的是样本的平均位置与中心的距离;而方差则是离散程度,我们可以看出要想有比较小的总误差,这两方面都要兼顾。
在这里插入图片描述

2.打靶与回归的联系

  上文的例子好理解,我们如何扩展到我们的回归中呢?老师这里借用了平行宇宙的概念:我们在每个平行宇宙都抓宝可梦来进行预测,固定住模型,只通过梯度下降得到最优解对应的参数,从而得到一系列的预估函数 f f f,把每个预估函数当成上文中的一次射击(当然我们要假设这一切都是独立同分布);那我们就可以用这些"射击点"的分布来评估。
  而在这里,这些函数的方差代表着它们之间是否接近,也就是图像上它们是否比较一致;而函数的偏差,就是指这些函数在所有点得到的值的平均值与真实值的差距。
  从而我们可以得到如下表格,说明打靶问题与回归问题的联系:

抽象概念打靶问题回归问题
最优解靶心训练集的误差最小
切换策略选不同的人打靶选不同类型的函数
样本一次打靶一次预测
样本误差与靶心的距离函数的均方误差
样本间方差所有点的整体离散程度所有函数的整体离散程度
样本间偏差所有点的平均位置与中心的距离所有函数平均后所得函数的均方误差

3.方差的来源

  根据前文所述,我们去分别作出一次,三次,五次多项式的模型,每次训练随机选取一些点,训练100次。得到如下训练结果。我们显然可以看出,多项式次数越高,得到的这些线就整体越杂乱,之间的差距越大,也就是方差越高。
  因此方差的来源就是参数过多,模型过于复杂。
  至于原因,就是因为参数越多,实际上函数对训练集的预测就可以越精细,既然精细,那就是说每个点都会更好的去照顾,因此每个点的变化相对而言就更会引起函数的变化;反过来如何参数很少,那就更难照顾到具体的点,那其中的点的波动就不太会引起函数的整体波动。然而这些点是随机的,必然存在着扰动,那么参数很多的话,就会将这份扰动进行放大,从而有很大的方差。当然原理也可以参考多项式插值的龙格现象。
在这里插入图片描述

4.偏差的来源

  我们做类似的操作,不过是次数增加到5000次,之后我们取做出这5000次的平均函数,为蓝线所示;而黑线则是我们确定的最优解(具体怎么找出来的不用在意,反正信就是了)。我们可以看到,随着函数的参数变多从而变得复杂,方差逐渐增大的同时偏差则在减小。
  因此偏差的来源就是参数过少,模型过于简单。
  原因还是很简单的,函数越复杂,越可以更好的照顾训练集的点;而训练集与测试集独立同分布,因此从期望来看,就越能照顾到测试集的点,也就是得到更精确的解。当然这只是数学期望,方差还是很大的。
在这里插入图片描述

5.欠拟合与过拟合的概念

  通过上文我们可以看出,当我们在测试集上的效果很差时,我们可以取看训练集上的效果,来确定到底是由偏差引起的还是方差引起的。
  如果在训练集上效果也很差,说明就是偏差引起的,这时候就是模型太简单了导致的,无法获取到需要的特征,因此也可以说是拟合的程度不够,也就是欠拟合
  而如果在训练集效果很好,说明就是方差引起的,这时候就是模型太过复杂了导致的,对点太敏感了,也就是拟合的程度太重了,也就是过拟合

二.减少误差的策略

  面对欠拟合,那就是我们要让我们的模型更复杂:比如增加我们数据的维度(也就是去利用更多的特征),或者是考虑各特征之间的联系从而使得模型变得更复杂等等。至于具体怎么增加,那只能是具体问题具体分析。
  面对过拟合,我们的模型太复杂了,这时候就有好几种策略。
  1.把模型简单化,最直接的办法。
  2.增加数据,不改变模型。由于参数个数不变而数据量增大,因此对于每个数据,随着数据量增大,受到的照顾肯定会变少,从而可以降低过拟合。
  3.正则化。如果我们没有多余数据了,我们还想利用我们现在的模型,那如何是好呢?比如三次多项式和五次多项式,它们之间的差距就在于五次项和四次项系数,如果这个系数绝对值很小,那么它们就会类似;也就是说,参数趋近于0就会造成模型的简化。因此,我们可以让我们的损失值与系数联系起来,系数绝对值越大则损失值越大;一般我们采用L2正则化,将损失值加上所有除偏置项系数的平方乘一个系数 λ \lambda λ,这个系数可以自己定,总之还是看最终效果。(至于为什么不加偏置值,因为偏置值就是个平移,大小并不会影响模型复杂度)
在这里插入图片描述
  如下图所示,上面的两张图是增加数据前后的结果;下面的三张图是调整正则化中系数的大小得到的结果,可见越大的系数越会使得参数整体尽量小,从而减小方差。
在这里插入图片描述
  综上我们可以看出,我们其实是无法同时优化偏差和方差的,我们终究是要找到一个折衷的点,最后使得在训练集上的效果尽量好即可。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/688162
推荐阅读
相关标签
  

闽ICP备14008679号