码迷,mamicode.com
首页 > 其他好文 > 详细

加州理工学院公开课:机器学习与数据挖掘_偏差与方差权衡(第八课)

时间:2014-09-25 00:59:17      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:机器学习   偏差   方差   学习曲线   

课程简介:


在回顾了VC分析之后,本节课重点介绍了另一个理解泛化的理论:偏差与方差,并通过学习曲线的运用比较了VC分析和偏偏差方差权衡的不同用途.

课程大纲:

1、偏差与方差的权衡
2、学习曲线

1、偏差与方差的权衡

在上一节课:VC 维中,我们求出了 Eout 的边界,Eout < Ein + Ω。该公式描述了 Eout 的边界。现在让我们从不同的角度来分析 Eout。
我们把 Eout 分解为两部分:
1、假设集 H 近似 f 的能力(即 H 中与 f 距离最小的 G 与 f 的误差大小 )
2、我们在 H 中找到该 G 的能力。(即 我们从 H 中找到的 g 与 G 的误差大小 )
衡量误差的时候我们使用了平方误差法
上述的 1、2 两点通常来说是冲突的。要使 H 更好地近似 f 则要求 H 更复杂,包含跟多的假设,这样 H 就越有可能接近甚至包含 f(此时 G 就是 f )。然而,如果随着 H 复杂度的提高,找到的 g 就越有可能远离 G。因为我们要在一个更大的范围里面找到 G ,所以会变得困难。当数据不好的时候,g 可能会远离 G。偏差与方差就是为了描述这两种情况且找到一个平衡点,使得 Eout 与 Ein 足够接近且 Eout 足够小。
因为我们得到的 g 是与特定假设集有关的,所以规定:gD(x) 表示在特定的数据集 D 下得到的函数在 x 对应的输出。因此有:Eout(gD(x))= Ex[ (gD(x)-f(x))^2)]。为了研究一般性的问题(与特定 D 无关),我们需要去掉 D。方法是求Eout关于 D 数学期望,所以我们有:
Ed[Eout(gD(x))] 
=  Ed[Ex[ (gD(x)-f(x))^2)]] 
= Ex[Ed[ (gD(x)-f(x))^2)]]
现在,先处理 Ed[ (gD(x)-f(x))^2)]。
定义 ~g(x) 表示 g(x) 的数学期望并且假设 ~g(x)便是H中最接近 f 的假设。则 ~g(x) = Ed[gD(x)](本来是在g(x) 头山加一横表示平均的,不过还是这样算啦)
Ed[ (gD(x)-f(x))^2)]
bubuko.com,布布扣

为什么会不见了最后一项?因为
Ed[2(gD(x)-~g(x)(~g(x)-f(x)))] 
= 2(~g(x)-f(x))Ed(gD(x)-~g(x)) 
= 2(~g(x)-f(x))(Ed(gD(x)]-Ed[~g(x)]) ) 
= 2(~g(x)-f(x))(Ed(gD(x)]-~g(x)) ) 
= 2(~g(x)-f(x))(~g(x)-~g(x)) ) 
= 0
其中 Ed[gD(x)-~g(x)^2] 表示方差。(~g(x)-f(x))^2 表示偏差
因此方差是指我们找到的假设与最后的假设之间的平均距离,而偏差是指最好的假设与真实值之间的距离
对于一个简单的假设集比如:H = ax,一般方差都会比较小,而偏差则会很大。相反,如果是一个很复杂的模型如 H = ax^100+bx^99...+zx^1,则一般方差会变大,而偏差会较小。而我们是希望能够在这里找到一个平衡点。因此我们应该根据数据的多少而选择不同的模型。如果我们只有很少的数据,那就应该选择较简单的模型,否则方差可能会很大。而当我们有大量数据时,我们就应当选择较复杂的模型,因为大量的数据会减少方差,而复杂的模型会较少偏差。

2、学习曲线:

所谓学习曲线就是 Eout 与 Ein 与 样本数量的关系曲线。
下面让我们观察两个模型的学习曲线图:
左图对应的是简单模型的,右边的是复杂模型。
bubuko.com,布布扣
显然,当一个模型比较简单的时候,无论 Eout 还是 Ein 都很大,随着 N 的增大,Eout 与 Ein 的距离变得很小。相反,当一个模型很复杂的时候,Ein 在一开始的时候甚至可以为0(想象 VC 的情况,当N 小于 VC 维是,我们可以完全的分离样本内的数据,不会产生误差),但是当 N比较小的时候,Eout 变得非常大, 那是因为小 N 不足以应付复杂的复杂的模型。当N 不断增大的时候,Eout 与 Ein 靠拢,但是 Eout 与 Ein 的距离却比简单模型的要到。但是因为我们的目的的得到小的 Eout,而当我们有大量数据的时候复杂模型的 Eout 比简单模型的 Eout 要小,所以应该优先选择复杂的模型。
下面把 VC 维和 方差偏差放在学习曲线中进行比较:

bubuko.com,布布扣

可以看到:对于 VC 维来说,蓝色点表示的是样本内误差:Ein ,粉红色点表示的是  Ω(或者说 Ω至少大于粉红色的点)。对于偏差方差来说,蓝色点表示的是偏差,而粉红色点 - 蓝色点表示的是方差。
对于偏差方差来说,为什么蓝色点表示偏差?即为什么偏差不会随着 N 而改变?根据定义,偏差是相同大小的不同数据集下得到的最好的,最接近 f 的假设与 f 的距离。虽然可能 10 个点的数据集比2个点的数据集能够得到更好的近似,但是当我们非常多的数据集的时候,那么他们的数学期望应该是相近的而且接近 f,所以在上图中就表现为一条平行于 x 轴的水平线了。
下面我们举一个关于学习曲线的例子:

请看下面的线性模型:

bubuko.com,布布扣

为什么要加上 noise ?那是认为的干扰,目的混淆视听,测试在该干扰下,机器学习到的模型与 y = Wx 线性的近似程度。当机器学习得到的模型是:y = Wx 时,认为是最好的情况,因此有下面的结论:

bubuko.com,布布扣 bubuko.com,布布扣     

其中 d+1 是线性模型的自由度,有点类似 VC 维。在作用上可以说是一致的。
至于为什么是 (d+1/N),作者没说,我也不清楚了...
感觉对后面部分的理解不是十分好...

为什么需要对偏差与方差进行分析?目的是为了给出一个指导方针,在 H、D、学习算法的取舍下得到一个平衡。

加州理工学院公开课:机器学习与数据挖掘_偏差与方差权衡(第八课)

标签:机器学习   偏差   方差   学习曲线   

原文地址:http://blog.csdn.net/feitianhu213/article/details/39528757

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!