李宏毅 机器学习笔记-03 Bias and Variance

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_39538889/article/details/97284623

前情回顾:上节课我们的五个模型在测试集上得到如下图的结果。并且得出一个结论,一个更复杂的模型在测试集上往往得不到好的结果,因为overfitting。

今天我们要讨论的是error来自什么地方?

通过这节课的学习我们就可以知道:error的来源,并且如何挑选方法来提升model的表现。
在这里插入图片描述
依旧沿用上节课的例子,我们知道Niantic存在一个公式 f ^ \hat{f} 来计算神奇宝贝升级后的CP值。但是这个function我们是不知道的,我们只能用实际数据通过训练找到最优函数 f f^* 来近似这个函数。

f ^ \hat{f} 就像是一个靶心,我们发现得到的 f f^* 不在靶心,两者中间有一个距离,距离来自于两件事:BiasVariance。他们都是什么呢?
在这里插入图片描述

Bias and Variance

在这里插入图片描述
首先我们回忆一下统计学知识:期望平均数都是有平均的概念,但一个很根本的区别在于,期望是随机变量的总体的平均,而平均值是从总体中抽取出来的样本的平均。前者是理论上的值、理想值,后者是现实观察到的统计量。

使用统计量(期望和方差)来表示数据,本质上是一种近似的思想。假设随机变量X(总体)的数学期望为 μ \mu ,方差为 σ 2 \sigma^{2} 。假设训练样本的均值为 m m ,方差为 s 2 s^{2}

通过抽样采集N个数据点: { x 1 , x 2 , , x N } \{x^1,x^2,\dots,x^N\} ,计算N个数据的平均值(不等于 μ \mu ,因为只有数据量足够大的情况下,才能逼近 μ \mu )。对多个 m m 计算期望值可得到 μ \mu
  在这里插入图片描述
  同样抽样采集N个数据点: { x 1 , x 2 , , x N } \{x^1,x^2,\dots,x^N\} 计算N个数据的平均值,然后计算得到样本的方差 s 2 s^2 。对多个 s 2 s^2 计算期望值,但这却是一个有偏估计。但如果增加N的的个数,就接近于无偏估计了。
在这里插入图片描述
下图展示的是Variance和Bias的四种组合,Bias大则平均值远离圆心,Variance大则set比较分散范围大。
在这里插入图片描述

平行宇宙

平行宇宙指的是在样本空间中随机抽取定量的样本,通过抽取的样本来建模。例如随机抽10只Pokemon。
在这里插入图片描述
显然,在不同的数据空间中,使用相同的模型,但得到的 f f^* 是不同的。下图是123号空间和345号空间的对比。
在这里插入图片描述
把100个 f f^* 都绘制出来,如下图所示,其中最上面的是线性模型,第二个最高次方是三次方,第三个最高次方是五次方。在这里插入图片描述

Variance的理解

简单的模型散布比较密,方差比较小,复杂的模型比较分散,方差比较大。简单模型不太受data的影响,可以用极限的思想来考虑,比如 f ( x ) = c f(x)=c ,此时variance为0,随着模型复杂越来越大。
在这里插入图片描述

Bias的理解

前边已经说了,平均值距离靶心的远近,决定了偏差的大小。
在这里插入图片描述
从图中我们可以看出,随着阶次的提高,红线越来越乱,平均的线(蓝线)越接近黑线。也就是说阶次越高,bias反倒越小。
在这里插入图片描述
Model本质上是一个function set,这个set是存在一个范围的。Bias越大,距离靶心越远,范围越小。从set中选出的best function根本够不到圆心。反之,函数越复杂,它的空间范围越大,越有可能包含真实的function。
在这里插入图片描述
在这里插入图片描述
Bias过大就是欠拟合(Underfitting),Varirance过大就是过拟合(Overfitting)。如何判断我训练的model是那种情况?
在这里插入图片描述
如何模型无法拟合训练数据,则就是具有过大的bias。如何可以拟合训练数据,但无法拟合测试数据,那就是具有过大的variance。

对于bias过大的问题,有两种做法,一种是添加输入数据的特征(好的特征没有加进来,所以无法拟合),一种是采用更加复杂的模型。

在这里插入图片描述
对于variance过大:添加数据(数据增强)或者采用正则化(希望参数越小越好)。正则化可能会损坏bias(使得bias增加),使得函数空间不包括目标函数target。

模型选择

不推荐直接使用public Testing Set评测结果最优的作为最佳的模型。这是由于真实的private Testing Set和public Testing Set不太一样。在这里插入图片描述
正确的方法是使用交叉验证,把训练集划分为训练集和验证集。通过训练数据得到模型,然后把模型放到验证集上面进行验证,假设得到最佳模型为Model 3。然后再把model 3放到Training Set所有数据上跑,得到模型的参数。需要注意的是,不能再跟进public Testing Set的结果去重新选模型。如果这么做的话,就会使得模型的泛化能力下降,反倒得到不好的结果。
在这里插入图片描述
N折交叉检验,从而选出最佳的Model。把Training set分三份,一份做Val两份做Train,之后调换顺序。

最后再用最佳的Model在整个Training Set上面跑一下,得到模型。
在这里插入图片描述
忠告:不要根据public Training set来调整model

来自奔腾大大:李宏毅 机器学习笔记 Bias and Variance

'''这句话不太理解,先收藏着'''
顺便说一下,对于确定的模型寻找超参数,本质上和寻找不同模型中的最优模型是相同的,它是在模型参数的相同的前提下进行寻找的。

猜你喜欢

转载自blog.csdn.net/weixin_39538889/article/details/97284623
今日推荐