2018-12-10 22:39:29 feilong_csdn 阅读数 417
  • 机器学习之概率与统计推断

    本课程讲解机器学习算法所需概率和统计推断知识。概率部分包括概率公理及推论、条件概率、贝叶斯公式、随机变量及其概率函数(CDF/pdf)、常用概率分布及其均值、方差;统计推断部分包括大数定律和中心极限定理、极大似然估计、贝叶斯估计,估计的评价、偏差-方差平衡。课程还会讲解假设检验的基本概念。

    20155 人正在学习 去看看 AI100讲师

在机器学习的面试中,能不能讲清楚偏差方差,经常被用来考察面试者的理论基础,本文就机器学习中偏差和方差进行了详细总结,供参考


一、理解偏差、方差

偏差:描述的是预测值的期望与真实值之间的差距,偏差越大,越偏离真实数据
方差:预测值的方差,描述的是预测值的变化范围,离散程度,也就是离预测值期望值的距离,方差越大,数据的分布越分散,概念上理解比较抽象,下面我们通过下面一个例子来理解一下偏差和方差
在这里插入图片描述

如上图,我们假设一次射击就是一个机器学习模型对一个样本进行预测,射中红色靶心位置代表预测准确,偏离靶心越远代表预测误差越大。偏差则是衡量射击的蓝点离红圈的远近,射击位置即蓝点离红色靶心越近则偏差越小,蓝点离红色靶心越远则偏差越大;方差衡量的是射击时手是否稳即射击的位置蓝点是否聚集,蓝点越集中则方差越小,蓝点越分散则方差越大。



二、偏差、方差与模型范化能力

先给出结论:模型的泛化能力(泛化误差)是由偏差、方差与数据噪声之和,如下式:

Err(x)= bias2(x)+var(x)+ ε2 \text{Err}\left( x \right) = \ \text{bias}^{2}\left( x \right) + var\left( x \right) + \ \varepsilon^{2}

偏差度量的是学习算法预测误差和真实误差的偏离程度,即刻画学习算法本身的学习能力,方差度量同样大小的训练数据的变动所导致的学习性能的变化,即刻画数据扰动所造成的影响,噪声则表达了当前任务上任何学习算法所能到达的期望预测误差的下界,即刻画了学习问题本身的难度,因此泛化误差是由学习算法的能力、数据的充分性以及问题本身难度决定

学习算法刚训练时,训练不足欠拟合,此时偏差较大;当训练程度加深之后,训练数据的扰动也被算法学习到了,此时算法过拟合,方差过大,训练数据轻微扰动都会使得学习模型发生显著变化,因此我们得出结论:模型欠拟合时偏差过大,模型过拟合时方差过大。我们通过下面的例子来更形象的理解一下上面的描述的结论,看下图
在这里插入图片描述

例如现在我们选择机器学习模型对图中数据做拟合,上左图使用直线对数据进行拟合,直线不能很好的分割数据,预测值将有大量分错,如红色的叉分到了蓝色的圈一类,此时模型偏差过大,模型欠拟合;再看上右图,模型过度拟合数据,将数据中的噪音点也都学到,此时数据的轻微波动将会导致预测结果的波动,方差过大,模型过拟合;自然上中图是我们认为比较好的拟合。

如上左图模型便是高偏差,但是方差小;上右图模型是高方差,但完全分割训练样本中所有数据因此偏差小;上中图便是比较理想的方差和偏差都比较小;那么有没有想像一下高方差同时又高偏差的模型是什么样子?如下图红色线展示的模型便是高方差同时高偏差
在这里插入图片描述

上面给出了泛化误差和偏差、方差与数据噪声的公式,下面给出繁琐的推导公式,当然对公式不敏感的可以跳过此段公式推导继续看下文

Err(x)= bias2(x)+var(x)+ ε2 \text{Err}\left( x \right) = \ \text{bias}^{2}\left( x \right) + var\left( x \right) + \ \varepsilon^{2}

先给出各个符号的含义

x:测试样本集

D:训练数据集

yD:测试数据集x的标记

y:测试数据集x的真实标记

f:由训练集D学习到的模型

f(x,D):模型f对x的预测输出

f(x):模型f对x预测输出的均值,即期望预测输出

首先期望预测输出是由预测输出f(x,D)的均值得到:

f(x)=E(f(x,D)) \overset{\overline{}}{f}\left( x \right) = E(f(x,D))

根据上面的量我们便可以表示出偏差、方差和噪声,首先偏差是期望输出与真是标记y的误差,方便直接取平方:

bias2(x)= (f(x)y)2 \text{bias}^{2}\left( x \right) = \ \left( \overset{\overline{}}{f}\left( x \right) - y \right)^{2}

方差是针对预测输出上进行计算:

var(x)= E[f(x,D) f(x)]2 \text{var}\left( x \right) = \ {E\left\lbrack f\left( x,D \right) - \ \overset{\overline{}}{f}\left( x \right) \right\rbrack}^{2}

噪声是真实标签和数据中的标签的差值,这里方便预算以平方计算:

ε2=E[(yDy)2] \varepsilon^{2} = E\left\lbrack \left( y_{D} - y \right)^{2} \right\rbrack

为了下面推导方便我们假设噪声的均值为0:

E[yDy]=0 E\left\lbrack y_{D} - y \right\rbrack = 0

接下来我们以回归任务为例,学习算法的平方差泛化误差损失:
在这里插入图片描述
上图推导中红色部分公式为0,因此省略掉,这里解释一下为什么红色公式为0,因为有:

E[f(x,D) f(x)]=0 E\left\lbrack f\left( x,D \right) - \ \overset{\overline{}}{f}\left( x \right) \right\rbrack = 0

E[yDy]=0 E\left\lbrack y_{D} - y \right\rbrack = 0

因此有:

ED(2(f(x,D)f(x))(f(x)yD))=0 E_{D}\left( 2\left( f\left( x,D \right) - \overset{\overline{}}{f}\left( x \right) \right)\left( \overset{\overline{}}{f}\left( x \right) - y_{D} \right) \right) = 0

ED((f(x)y)(yyD))=0 E_{D}\left( (\overset{\overline{}}{f}\left( x \right) - y)\left( y - y_{D} \right) \right) = 0

这样经过推导得出:
在这里插入图片描述
所有存在模型的泛化能力(泛化误差)是由偏差、方差与数据噪声之和:

Err(x)= bias2(x)+var(x)+ ε2 \text{Err}\left( x \right) = \ \text{bias}^{2}\left( x \right) + var\left( x \right) + \ \varepsilon^{2}



三、模型偏差高 or 方差高

在实际的应用中,如果一个模型对于测试集的预测不理想,那如何判断是由于高偏差导致还是高方差导致呢,这个判断对于后续模型优化至关重要。

参考方法:通过训练集误差和测试集误差来看高偏差 or 高方差

我们以猫狗分类模型为背景来看具体如何判断,对于猫狗分类首先我们有一个前提假设就是该数据本身能够达到很高的正确率,例如99%的正确率,看下面四种情况:

(1)训练集错误率:1%、测试集错误率:11% 低偏差高方差

(2)训练集错误率:15%、测试集错误率:16% 高偏差低方差

(3)训练集错误率:15%、测试集错误率:30% 高偏差高方差

(4)训练集错误率:0.5%、测试集错误率:1% 低偏差低方差

因此在实际工程中我们便可以通过比较训练集误差和测试集误差来看模型是由何种原因导致,然后采取相应的错误,下一节介绍如何优化模型



四、高偏差高方差时优化模型


1、高偏差(模型欠拟合)时模型优化方法

(1)添加特征数
当特征不足或者选取的特征与标签之间相关性不强时,模型容易出现欠拟合,通过挖掘上下文特征、ID类特征、组合特征等新特征,往往可以达到防止欠拟合的效果,在深度学习中,有很多模型可以帮助完成特征工程,如因子分解机、梯度提升决策树、Deep-crossing等都可以称为丰富特征的方法

(2)增加模型复杂度
模型过于简单则学习能力会差,通过增加模型的复杂度可以使得模型拥有更强的你和能力,例如在线性模型中添加高此项,在神经网络模型中增加隐层层数或增加隐层神经元个数

(3)延长训练时间
在决策树、神经网络中,通过增加训练时间可以增强模型的泛化能力,使得模型有足够的时间学习到数据的特征,可达到更好的效果

(4)减小正则化系数
正则化是用来方式过拟合的,但当模型出现欠拟合时则需要有针对的较小正则化系数,如xgboost算法

(5)集成学习方法Boosting
Boosting算法是将多个弱分类串联在一起,如Boosting算法训练过程中,我们计算弱分类器的错误和残差,作为下一个分类器的输入,这个过程本身就在不断减小损失函数,减小模型的偏差

(6)选用更合适的模型
有时候欠拟合的原因是因为模型选的不对,如非线性数据使用线性模型,拟合效果肯定不够好,因此有时需要考虑是否是模型使用的不合适

2、高方差(模型过拟合)时模型优化方法

(1)增加数据集
增加数据集是解决过拟合问题最有效的手段,因为更多的数据能够让模型学到更多更有效的特征,减小噪声的影响度。当然数据是很宝贵的,有时候并没有那么多数据可用或者获取代价太高,但我们也可以通过一定的规则来扩充训练数据,比如在图像分类问题上,可以通过图像的平移,旋转,缩放、模糊以及添加噪音等方式扩充数据集,在我的这篇文章中有介绍,更一步,可使用生成式对抗网络来合成大量的新数据

(2)降低模型的复杂度
数据集少时,模型复杂是过拟合的主要因素,适当降低模型复杂度可以避免模型拟合过多的采样噪音,例如在决策树算法中降低树深度、进行剪枝;在深度网络中减少网络层数、神经元个数等

(3)正则化防止过拟合
正则化思想:由于模型过拟合很大可能是因为训练模型过于复杂,因此在训练时,在对损失函数进行最小化的同时,我们要限定模型参数的数量,即加入正则项,即不是以为的去减小损失函数,同时还考虑模型的复杂程度

未加入正则项的模型损失函数:

C(x)= 12i=1n(f(x)yi)2 C\left( x \right) = \ \frac{1}{2}\sum_{i = 1}^{n}{(f\left( x \right) - y_{i})}^{2}

加入正则项L后损失函数:

C(x)= 12i=1n(f(x)yi)2+ λL C\left( x \right) = \ \frac{1}{2}\sum_{i = 1}^{n}{{(f\left( x \right) - y_{i})}^{2} + \ \lambda L}

其中λ是正则项系数,是用来权衡正则项和损失函数之间权重,正则化有以下两种:

<1> L1正则化(L1范数):权重向量w的绝对值之和

L1= i=1kwi1 L_{1} = \ \sum_{i = 1}^{k}{||w_{i}||}_{1}

<2> L2正则化(L2范数):权重向量w的平方和,欧几里得范数

L2= i=1kwi22 L_{2} = \ \sum_{i = 1}^{k}{||w_{i}||}_{2}^{2}

其中w代表模型的参数,k则代表了模型参数的个数

(4)集成学习方法Bagging
集成学习Bagging是把多个模型集成在一起,来降低单一模型的过拟合风险

(5)选用更合适的模型
在上诉方法都没有达到很好的效果时可以考虑选择使用其他模型处理数据



五、谈偏差和Boosting、方差和Bagging

上文在提到高偏差和高方差优化时使用集成学习方法,这小节再深入介绍一下为什么Bagging降低了模型方差,Boosting降低了模型的偏差

1、Bagging和方差

Bagging算法对数据重采样,然后在每个样本集训练出来的模型上取平均值
假设有n个随机变量,方差记为σ2,两两变量之间的相关性是ρ,则n个随机变量的均值的方差为:

var= n2γ2δ2ρ+mγ2δ2(1ρ) var = \ n^{2}*\gamma^{2}*\delta^{2}*\rho + m*\gamma^{2}*\delta^{2}*(1 - \rho)

       =n21n2δ2ρ+m1n2δ2(1ρ) \ \ \ \ \ \ \ = n^{2}*\frac{1}{n^{2}}*\delta^{2}*\rho + m*\frac{1}{n^{2}}*\delta^{2}*(1 - \rho)

=ρδ2+(1ρ)δ2n                             = \rho*\delta^{2} + \left( 1 - \rho \right)*\frac{\delta^{2}}{n}\text{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }

在随机变量完全独立的情况下,n个随机变量的方差是原来的1/n

Bagging算法对n个独立不相关的模型的预测结果取平均,方差是原来单个模型1/n,上述描述不严谨因为在实际问题中,模型不可能完全独立,但为了追求模型的独立性,Bagging的方法做了不同的改进,比如随机森林算法中,每次选取节点分裂属性时,会随机抽取一个属性子集,而不是从所有的属性中选最有属性,这就为了避免弱分类器之间过强的关联性,通过训练集的重采样也能够带来弱分类器之间的一定独立性,这样多个模型学习数据,不会因为一个模型学习到数据某个特殊特性而造成方差过高

2、Boosting和偏差

Boosting算法训练过程中,我们计算弱分类器的错误和残差,作为下一个分类器的输入,这个过程本身就在不断减小损失函数,其bias自然逐步下降。但由于是采取这种sequential、adaptive的策略,各子模型之间是强相关的,于是子模型之和并不能显著降低variance。所以说boosting主要还是靠降低bias来提升预测精度



六、偏差方差平衡(Bias-Variance Tradeoff)

在实际的问题中噪音是数据自带的,没有办法优化,因此为了优化模型,降低模型的泛化误差,我们便从降低偏差和方差入手,但是方差和偏差存在权衡问题,即在优化一个时便会导致另一个升高,下图给出了泛化误差和偏差、方差的变化关系:
在这里插入图片描述
在训练不足时,模型的拟合能力不强,此时偏差主导着总体误差(泛化误差),随着训练程度的加深,模型的拟合能力已经很强,训练数据发生的噪音扰动也被模型学到,方差逐渐主导总体误差。因此我们在实际工程中需要找到一个合适的方式来权衡模型的偏差和方差?

1、偏差方差权衡之经验风险最小化模型

从上面的分析中,我们知道偏差方差权衡既是要同时降低测试误差和训练误差,即如果模型满足下式便是一个好模型:

Errortrain=Errortest \text{Error}_{\text{train}} = \text{Error}_{\text{test}}

Errortrain   0 \text{Error}_{\text{train}}\ \approx \ \ 0

为了说明如何得到上述模型,先要提出一个更为一般的机器学习模型,经验风险最小化,这里给出两个引理:

(1)联合界引理
时间A1,A2,…,Ak表示k个不同的事件,k个事件之间不是相互独立的,可能是有关联的:

P(A1..Ak)P(A1)+P(A2)++P(Ak) P\left( A_{1}\bigcup..\bigcup A_{k} \right) \leq P\left( A_{1} \right) + P\left( A_{2} \right) + \ldots + P(A_{k})

(2)Hoeffding不等式
Z1,Z2,…,Zm是m个独立同分布的随机变量,他们服从均值为φ的伯努利分布(0-1分布),即表示P(Zi=1)=φ,所有对m个独立同分布的随机变量,其均值为φ,给定λ > 0

下面式子成立:

P(ϕϕ^&gt;γ)2exp(2γ2m) P\left( \left| \phi - \hat{\phi} \right| &gt; \gamma \right) \leq 2exp( - 2\gamma^{2}m)

不等式含义是:估计的值φ与真实值φ之间的差异,不会超过不等式右侧的这个上界

经验风险最小化ERM算法证明了:当数据集m足够大时,一般误差与最小误差之间是有上界的,简单地说,当训练误差很小时,一般误差也不会很大,具体证明请参考博文:
https://blog.csdn.net/zb123455445/article/details/78538361

2、偏差方差权衡之交叉验证

(1) Hold-out cross validation 保留交叉验证
训练子集70%、保留交叉验证子集30%,通常对于保留交叉验证70%、30%是合理的划分,先用训练子集训练模型,然后在剩下的保留交叉验证子集中测试模型,选测试误差小的模型

保留交叉验证存在两个问题:
第一: 最终模型和参数的选取将极大程度上依赖于对于训练数据和测试数据的划分
第二:部分数据用于训练,不能很好的利用数据集

有些数据获取十分珍贵,上述方法没有很好的利用数据集进行模型训练,下面提出交叉验证的变种,更好的利用数据集进行模型训练

(2)留1交叉验证
这种计算量更大,仅仅针对于样本量很少的情况,如样本数15
如果数据集有n个,留1交叉验证总共要训练n次,每次选择一个数据作为测试集,其他n-1个数据作为验证集

(3)K重交叉验证
通常情况下k取5份或10份,若k=10,每次留其中一份作为数据测试,用剩下9份做模型训练,优点是很好的利用数据,缺点是要进行多次训练,计算量大,算是上面两种方式的综合,当K值大的时候,我们会有更少的Bias(偏差), 更多的Variance。,当K值小的时候,我们会有更多的Bias(偏差),更少的Variance,因此选择k对于优化结果也有十分重要的影响,一般工程中选择k=5、10较多

注意事项1:上面提到的保留交叉验证70%,30%是针对小数据量时划分,当百万数据及以上时,我们需要对数据划分训练集、验证集、测试集,验证集目的:在多个算法中选出最有效的算法;测试集目的:正确评估分类器的性能,;例如100万,我们可能只需要10000个作为验证集,10000作为测试集,划分比例(98%,1%,1%),当数据量很大时,有时候训练集可高大99.5%

注意事项2:训练数据和验证,测试数据分布不匹配的问题,例如:训练集是非常高清标准的图片,测试集是用户随意拍照上传的不清楚模糊的图片,建议:保证验证集和测试集是来自同一个分布,有的时候验证集和测试集被看成同一概念

2016-08-07 15:47:00 duxinyuhi 阅读数 655
  • 机器学习之概率与统计推断

    本课程讲解机器学习算法所需概率和统计推断知识。概率部分包括概率公理及推论、条件概率、贝叶斯公式、随机变量及其概率函数(CDF/pdf)、常用概率分布及其均值、方差;统计推断部分包括大数定律和中心极限定理、极大似然估计、贝叶斯估计,估计的评价、偏差-方差平衡。课程还会讲解假设检验的基本概念。

    20155 人正在学习 去看看 AI100讲师


S为样本方差,样本方差除以n-1而不是n,是因为样本可能没有全部反映总体,除以n-1 比除以n

的值大一些,从而更准确的接近总体方差。


比如总体中有10个颜色的球,而取样本时可能只取了8种

如下图,果冻豆的例子



2019-05-28 16:31:34 meijie2018_1 阅读数 208
  • 机器学习之概率与统计推断

    本课程讲解机器学习算法所需概率和统计推断知识。概率部分包括概率公理及推论、条件概率、贝叶斯公式、随机变量及其概率函数(CDF/pdf)、常用概率分布及其均值、方差;统计推断部分包括大数定律和中心极限定理、极大似然估计、贝叶斯估计,估计的评价、偏差-方差平衡。课程还会讲解假设检验的基本概念。

    20155 人正在学习 去看看 AI100讲师

在吴恩达机器学习课程的第86课时中,讲解了偏差和方差与欠拟合和过拟合的关系。
1、偏差与方差的概念
先看下网上关于偏差与方差的例子。
在这里插入图片描述
该例子可以理解为射击打靶。
偏差指的是多次射击的平均环数与环心的偏差度,显然上方的两个图的偏差较小,而下方两图偏离圆心较远,偏差较大。
方差指的是多次射击的成绩稳定状态,显然左边两图射击点较为集中,其方差较小,右边两图射击点不怎么集中,稳定性较差,其方差较大。
2、过拟合与欠拟合
在这里插入图片描述
分别使用1次、2次、4次多项式多数据集进行拟合,使用1次多项式进行拟合时,左图为欠拟合状态,使用4次多项式进行拟合时,右图为过拟合状态。
3、两者之间的关系
在这里插入图片描述
当拟合多项式的次数较低时,拟合不太好,其为欠拟合状态,训练误差为高偏差,此时训练误差和交叉验证误差均很高。
当拟合多项式的次数较高时,由于拟合得非常好,其为过拟合状态,此时训练误差偏差度极低,由于其预测的准确度很低,此时方差较高,为高方差状态,训练误差和交叉验证误差均很高。
在这里插入图片描述
当正则化参数lambda很大时,其对参数theta的惩罚很重,会导致欠拟合状态,此时为高偏差状态,预测不准确;
当正则化参数lambda较小时,其对参数thata的惩罚较轻,会导致过拟合状态,此时预测较为准确,但预测不稳定,方差较大,为高方差状态。

2017-08-07 20:32:10 liweibin1994 阅读数 4677
  • 机器学习之概率与统计推断

    本课程讲解机器学习算法所需概率和统计推断知识。概率部分包括概率公理及推论、条件概率、贝叶斯公式、随机变量及其概率函数(CDF/pdf)、常用概率分布及其均值、方差;统计推断部分包括大数定律和中心极限定理、极大似然估计、贝叶斯估计,估计的评价、偏差-方差平衡。课程还会讲解假设检验的基本概念。

    20155 人正在学习 去看看 AI100讲师

首先,我们先来理解一下偏差与方差的概念。举个高中数学里经常出现的例子,两个射击选手在射靶。甲射出的子弹很集中在某个区域,但是都偏离了靶心。我们说他的射击很稳定,但是不够准,准确性差。也就是说他的方差小(子弹很集中在某个区域),但是他的偏差大(子弹打中的地方距离靶心远)。相反,乙射出的子弹比较分散,但是有些很准,中了靶心。我们说他射击比较准,但是发挥不够稳定,稳定性差。
所以,偏差是描述了准确性。方差是描述稳定性。

那么,在机器学习中,偏差、方差与欠拟合、过拟合之间又有什么关系呢?

这里写图片描述

如上图中的第二个坐标,随着模型参数的增加,训练集的误差会慢慢减少。从第一个坐标和最后一个坐标可以直观感受到这种效果。因为模型参数少的时候,模型不能很好地拟合训练集的数据,所以偏差就比较大。当模型参数足够多时,模型拟合的效果就非常好了。
但是,当我们用验证集来验证时,却会有这样的情况:
这里写图片描述

对于欠拟合的情况,我们很容易理解,模型本来拟合的就不好,验证集的误差大也是自然。但是,对于过拟合来说,训练集的效果是非常好的,但是验证集上的效果却并不好,这是因为随着参数越多,模型就越不通用,而是针对了某一种特定的情况,比较有偏见,所以当用验证集验证时,误差会很大。因为验证集中的有些数据可能很符合过拟合的那条曲线,也有可能很不符合,所以数据方差就大了。也就是,方差大的时候我们可以认为是因为过拟合了。相反,模型参数少的时候,模型比较粗糙,偏离正确的拟合比较远,所以是偏差大。
这里写图片描述

2019-03-30 22:24:30 u012966380 阅读数 79
  • 机器学习之概率与统计推断

    本课程讲解机器学习算法所需概率和统计推断知识。概率部分包括概率公理及推论、条件概率、贝叶斯公式、随机变量及其概率函数(CDF/pdf)、常用概率分布及其均值、方差;统计推断部分包括大数定律和中心极限定理、极大似然估计、贝叶斯估计,估计的评价、偏差-方差平衡。课程还会讲解假设检验的基本概念。

    20155 人正在学习 去看看 AI100讲师

最近在研究方差、偏差对结果评测的影响

偏差:模型预期的预测与我们将要预测的真实值之间的差值,用来衡量模型预测值和真实值之间的差异。

方差:是实际值与期望值之差平方的平均值,是预测模型的不同关系间变化的多少

在机器学习过程中针对偏差和方差常会出现以下场景:

高偏差:欠拟合,训练误差很大,训练误差与测试误差差距很大,
解决方法:
1.寻找更好的特征(可以先使用gdbt筛选一波)
2.用更多的特征 (增加数据维度)

高方差:过拟合,可能由于模型过于复杂,训练误差小,训练误差与测试误差差距大。
解决方案:
1.增大训练数据集合 (增加训练数据量)
2.减少训练数据特征(减小数据维度)
3.尝试增加正则化程度

借用一个经典的图片直观的解释一下:
在这里插入图片描述
低偏差,低方差:预测结果准确率很高,并且模型比较健壮(稳定),预测结果高度集中。

低偏差,高方差:预测结果准确率较高,并且模型不稳定,预测结果比较发散。

高偏差,低方差:预测结果准确率较低,但是模型稳定,预测结果比较集中。

高偏差,高方差:预测结果准确率较低,模型也不稳定,预测结果比较发散。

没有更多推荐了,返回首页