机器学习周志华--没有免费的午餐定理

没有免费的午餐定理(No Free Lunch Theorem),这个定理说明

若学习算法LaLa 在某些问题上比学习算法LbLb 要好, 
那么必然存在另一些问题, 
在这些问题中LbLb 比LaLa 表现更好。

这里说的表现好就是前面所说的泛化能力更强。然后出现了下面这个公式

Eote(La|X,f)=hxχXP(x)I(h(x)f(x))P(h|X,La)Eote(La|X,f)=∑h∑x∈χ−XP(x)I(h(x)≠f(x))P(h|X,La)

令人生畏的长公式,不过我们来依次解读它。

留坑,周末更 
好了,周六了,今天终于看懂了这个定理的证明,下面我们一字一句地来解读书中的证明: 
首先,定义好符号 
χχ:样本空间,什么是样本空间呢?就是你的样本的属性张成的空间,书的前文有介绍 
还是以他书中的西瓜来举例吧: 
西瓜的属性和每个属性的取值是 
色泽= 青绿||乌黑||浅白      x= 0 || 1 || 2 
根蒂= 蜷缩||稍蜷||硬挺      y= 0 || 1 || 2 
敲声= 浊响||沉闷||清脆      z= 0 || 1 || 2 
你把色泽、根蒂、敲声想想成x,y,z轴。取值的范围都是0,1,2。怎么样,是不是像一个正方体的三维空间,当然属性可能有多种,那就上升到多维空间去了,不好想像了。

HH:假设空间,什么是假设空间呢? 
什么是假设呢,前面说也叫学得模型,这里我们不搞那些概念。请看这篇博主的文章http://blog.csdn.net/VictoriaW/article/details/77686168,看完应该就能理解假设空间和版本空间。

LaLa:学习算法,学习算法有其偏好性,对于相同的训练数据,不同的学习算法可以产生不同的假设,学得不同的模型,因此才会有那个学习算法对于具体问题更好的问题,这里这个没有免费的午餐定理要证明的就是:若对于某些问题算法LaLa学得的模型更好,那么必然存在另一些问题,这里算法LbLb学得的模型更好.这里的好坏在下文中使用算法对于所有样本的总误差表示

P(h|X,La)P(h|X,La): 算法LaLa基于训练数据XX产生假设hh的概率 
这里我说一下自己的理解,既然是LaLa基于XX产生假设hh的概率,那么就说明假设不止一个(你说这不是废话吗?上面都说有假设空间了,假设当然不止一个),这里要注意的是这里的假设是一个映射,是y=h(x)y=h(x),是基于数据XX产生的对于学习目标(判断好瓜)的预测。因数据XX不一样,所以可能产生不一样的假设hh,既然假设假设有可能不一样,那么对每一种假设都有其对应的概率即P(h|X,La)P(h|X,La).而且所有假设hh加起来的概率为1,这个不难理解,概率总和为1

ff:代表希望学得的真实目标函数,要注意这个函数也不是唯一的,而是存在一个函数空间,在这个空间中按某个概率分布,下文证明中采用的是均匀分布。

好,上面那个公式到了

Eote(La|X,f)=hxχXP(x)I(h(x)f(x))P(h|X,La)Eote(La|X,f)=∑h∑x∈χ−XP(x)I(h(x)≠f(x))P(h|X,La)

首先看这个EE,这个EE是期望,expectation的意思,这个下标oteote,是off-training error,即训练集外误差(忘了是在哪篇博客上看到的了,错了我不负责哈嘻嘻)。

Eote(La|X,f)Eote(La|X,f): 算法LaLa学得的假设在训练集外的所有样本上的误差的期望

P(x)P(x): 对于这个,我的理解是样本空间中的每个样本的取得概率不同,什么意思呢?拿西瓜来说,(色泽=浅白,根蒂=硬挺,敲声=清脆)的西瓜可能比(色泽=浅白,根蒂=稍蜷,敲声=沉闷)的西瓜更多,取到的概率更大。所以有P(x)P(x)这个概率。

I(h(x)f(x))I(h(x)≠f(x)):看前面的符号表把这个叫做指示函数,这个很好理解,就像if语句括号里的表达式一样,为真就=1,为假就=0。

P(h|X,La)P(h|X,La): 前面说过了,再复习一下,算法LaLa基于训练集XX产生假设hh的概率。

其实这里最开始最令我困惑的是什么呢?是两个求和符号,因为这里求和符号感觉不规范啊!有木有,不过后来觉得理解了意思就大概行了. 
第一个求和符号: 
h∑h: 这里的这个对假设的求和其实我也不是很理解,我的理解主要是不知道这个对假设求和的空间到底是:同一个算法对于不同训练集产生不同的假设,每个假设有不同的概率,还是算法对于同一个训练集会产生不同的假设,每个假设有不同的概率。不过这个不重要,群里有人说前三章看看就好,具体结合后面的算法来理解就行了,先往后面看着吧 
第二个求和符号: 
xχX∑x∈χ−X:对于样本空间中每一个训练集外的数据都进行右边的运算。

好了,公式的每一部分都说清楚了,来整体理解一下,这个公式就是说: 
对于算法LaLa产生的每一个不同的假设hh,进行训练外样本的测试,然后测试不成功(因为求的是误差)指示函数就为1,并且两个概率相乘,最后所有的结果加起来,就是该算法在训练集外产生的误差。

然后下面考虑二分类问题,先要说明,对于我们想要求得的真实目标函数ff可能也不止一个,这个好理解,因为满足版本空间中的假设的函数都可以是真实目标函数,然后这些不同的ff有着相同的概率(均匀分布),函数空间为{0,1}{0,1},那么有多少个这种函数呢?我们来看对于同一个样本的这个预测值,对于样本空间χχ中的某个样本xx,如果f1(x)=0f1(x)=0f2(x)=1f2(x)=1, 那么这就是两个不同的真实目标函数,所以对于某个样本可以区分出两个真实目标函数,一共有|χ||χ|个样本,所以一共有2|χ|2|χ|个真实目标函数,这些真实目标函数是等可能分布的(均匀分布),所以对于某个假设h(x)h(x)如果h(x)=0h(x)=0那么就有1212的可能与真实目标函数相等。 
所以下面来看这个公式推导

fEote(La|X,f)∑fEote(La|X,f) 
=fhxχXP(x)I(h(x)f(x))P(h|X,La)=∑f∑h∑x∈χ−XP(x)I(h(x)≠f(x))P(h|X,La) 
=xχXP(x)hP(h|X,La)fI(h(x)f(x))=∑x∈χ−XP(x)∑hP(h|X,La)∑fI(h(x)≠f(x)) ① 
=xχXP(x)hP(h|X,La)122|χ|=∑x∈χ−XP(x)∑hP(h|X,La)122|χ| ② 
=122|χ|xχXP(x)hP(h|X,La)=122|χ|∑x∈χ−XP(x)∑hP(h|X,La) ③ 
=2|χ|1xχXP(x)1=2|χ|−1∑x∈χ−XP(x)⋅1 ④

第一步是怎么推导出来的呢?这里涉及到一个求和运算 
假设 
ai{a1,a2,...,am}ai∈{a1,a2,...,am} 
bj{b1,b2,...,bn}bj∈{b1,b2,...,bn} 
ak{c1,c2,...,co}ak∈{c1,c2,...,co}

那么 
minjokaibjck∑im∑jn∑koaibjck 
=miainjbjokck=∑imai∑jnbj∑kock 
这个很容易理解,你想 
(a1+a2+...+am)(b1+b2+...+bn)(c1+c2+...+co)(a1+a2+...+am)(b1+b2+...+bn)(c1+c2+...+co) 
是不是等于 
a1b1c1+a2b1c1+...amb1c1+...+ambncoa1b1c1+a2b1c1+...amb1c1+...+ambnco 
看懂了上面那个你再看第一步也就看懂了

第二步 
主要是 
fI(h(x)f(x))=122|χ|∑fI(h(x)≠f(x))=122|χ| 
这个其实也很好理解,因为一共有2|χ|2|χ|ff,且均匀分布,所以f(x)=1f(x)=1f(x)=0f(x)=0ff个数相等,对于每一个h(x)h(x)来说,不管h(x)=0h(x)=0还是11,都有一半f(x)f(x)与之相等,即122|χ|122|χ| 
所以就得出第二步

第三步到第四步就更好理解了 
概率求和为1,就是这么简单

经过这么一通推导后,发现得出期望的表达式中关于没有具体算法的,所以是算法无关的! 
如果错误,望指出共交流,共学习!

猜你喜欢

转载自blog.csdn.net/weixin_36431280/article/details/80045483