NFL(没有免费的午餐)
@(周志华·机器学习)
1、诠释
NFL全称:No Free Lunch Theorem;意思是,所有的学习算法的期望性能是相同的。
NFL的前提是,所有“问题出现的机会相同”、或所有的问题同等重要。
NFL的寓意是,让我们清楚的认识到,脱离具体问题,空泛地谈论“什么学习算法更好”毫无意义,因为若考虑所有潜在的问题,则所有的学习算法都一样好。要谈论算法的相对优劣,必须要针对具体的学习问题;在某些问题上表现好的学习算法,在另一些问题上却可能不尽如人意,学习算法自身的归纳偏好与问题是否相配,往往会起到决定性的作用。
2、证明
为简单起见,假设样本空间χ\chiχ和假设空间?都是离散的.
令P(h∣X,εa)P(h|X,ε_a)P(h∣X,εa)代表算法εaε_aεa基于训练数据XXX产生假设hhh的概率.
再令fff代表我们希望学习的真实目标函数.
那么εaε_aεa的“训练集外误差”,即εaε_aεa在训练集之外的所有样本上的误差,为:
Eote(εa∣X,f)=∑h∑x∊χ−XP(x)ⅼ(h(x)≠f(x))P(h∣X,εa)
E_{ote}(ε_a|X,f)=\sum_h\sum_{x∊\chi-X}P(x)ⅼ(h(x)≠f(x))P(h|X,ε_a)
Eote(εa∣X,f)=h∑x∊χ−X∑P(x)ⅼ(h(x)̸=f(x))P(h∣X,εa)
这是一个长公式,下面诠释一下这条公式:
Eote:E代表expectation,E_{ote}:E代表expectation,Eote:E代表expectation,期望的意思;ote代表ote代表ote代表 off-training error,训练集外误差的意思。
Eote(εa∣X,f):E_{ote}(ε_a|X,f):Eote(εa∣X,f):基于训练集XXX和希望学习的真实目标函数fff的算法εaε_aεa的训练集外误差。
P(x)P(x)P(x):样本xxx出现的概率;在现实生活中,每一种样本都有其出现的概率,例如二子花生就比三子花生出现的概率大。
ⅼ(h(x)≠f(x))ⅼ(h(x)≠f(x))ⅼ(h(x)̸=f(x)):指示函数,为真时取值1,否则取值0.
P(h∣X,εa)P(h|X,ε_a)P(h∣X,εa):前面已经介绍过,代表算法εaε_aεa基于训练数据XXX产生假设hhh的概率.但这个要如何理解呢?我们知道根据算法和训练集可以产生版本空间,版本空间里的假设可能有多条也可能只有1条,假设自然也就有概率了,但不管怎么说,所有的假设的概率加起来肯定等于1.
P(x)ⅼ(h(x)≠f(x))P(h∣X,εa)P(x)ⅼ(h(x)≠f(x))P(h|X,ε_a)P(x)ⅼ(h(x)̸=f(x))P(h∣X,εa):单个样本和单个假设hhh的期望。这里可以回顾一下高中知识,数学期望的计算公式
E(x)=∑inxi.p(xi) E(x) = \sum_i^nx_i.p(x_i) E(x)=i∑nxi.p(xi)
∑h∑x∊χ−X\sum_h\sum_{x∊\chi-X}∑h∑x∊χ−X:上述介绍过,hhh和xxx都是有多个的,所以要对它们进行求和,我们计算的是训练集外的误差,所以x∊χ−Xx∊\chi-Xx∊χ−X.
接下来就是公式推导了,推导前先介绍一下公式推导的前提。这里讨论二分类问题,且真实目标函数可以是任何函数Font metrics not found for font: . {0,1},函数空间为{0,1}Font metrics not found for font: .,其中Font metrics not found for font: .是样本数。对所有可能的fff按均匀分布对误差求和有:
∑fEote(εa∣X,f)\sum_fE_{ote}(ε_a|X,f)∑fEote(εa∣X,f)
=∑f∑h∑x∊χ−XP(x)ⅼ(h(x)≠f(x))P(h∣X,εa)=\sum_f\sum_h\sum_{x∊\chi-X}P(x)ⅼ(h(x)≠f(x))P(h|X,ε_a)=∑f∑h∑x∊χ−XP(x)ⅼ(h(x)̸=f(x))P(h∣X,εa)
=∑x∊χ−XP(x)∑hP(h∣X,εa)∑fⅼ(h(x)≠f(x))=\sum_{x∊\chi-X}P(x)\sum_hP(h|X,ε_a)\sum_fⅼ(h(x)≠f(x))=∑x∊χ−XP(x)∑hP(h∣X,εa)∑fⅼ(h(x)̸=f(x))
=∑x∊χ−XP(x)∑hP(h∣X,εa)122∣χ∣=\sum_{x∊\chi-X}P(x)\sum_hP(h|X,ε_a)\dfrac{1}{2}2^{|\chi|}=∑x∊χ−XP(x)∑hP(h∣X,εa)212∣χ∣
=122∣χ∣∑x∊χ−XP(x)∑hP(h∣X,εa)=\dfrac{1}{2}2^{|\chi|}\sum_{x∊\chi-X}P(x)\sum_hP(h|X,ε_a)=212∣χ∣∑x∊χ−XP(x)∑hP(h∣X,εa)
=2∣χ∣−1∑x∊χ−XP(x)=2^{|\chi|-1}\sum_{x∊\chi-X}P(x)=2∣χ∣−1∑x∊χ−XP(x)
让我们来看看这公式是如何推导的:
第一行应该都能看明白,就是在上一条公式中添加了∑f\sum_f∑f。但为什么要对真实目标函数进行求和呢?因为这个函数不是唯一的,而是存在着一个函数空间;在现实中,我们为了某个目的而寻求唯一的真实目标函数,但在这里,我们没有目标、没有具体的问题,所以要对所有的真实目标函数进行求和。
第二行是怎么得到的?这个很容易理解,我们使用具体的变量表示出来:
$
a_1b_1c_1+a_2b_1c_1+…a_mb_1c_1+…+a_mb_nc_o =
(a_1+a_2+…+a_m)(b_1+b_2+…+b_n)(c_1+c_2+…+c_o)
$
第三行对真实目标函数进行求和:Font metrics not found for font: .。|?|个样本,每个样本对真实目标函数fff来说都可能取两个值0和1,那么真实目标函数的个数是所有样本可能取值的组合C21﹒C21﹒﹒﹒C21C_2^1﹒C_2^1﹒﹒﹒C_2^1C21﹒C21﹒﹒﹒C21,共|?|个C21C_2^1C21相乘,即Font metrics not found for font: .,若fff均匀分布,则有一半的fff对xxx的预测与h(x)h(x)h(x)不一致,指示函数为假时取值为0(零乘以任何数都得零),所以我们不需要对h(x)h(x)h(x)一致的值求和。
第四行只是换位而已。
第五行对假设进行求和,上面说过,所有的假设加起来是等于1的。
显然,总误差与学习算法无关,也就是对于作意的学习算法,它们的期望都是一样的。对于作意的学习算法εaε_aεa和εbε_bεb都有:
∑fEote(εa∣X,f)=∑fEote(εb∣X,f)
\sum_fE_{ote}(ε_a|X,f) = \sum_fE_{ote}(ε_b|X,f)
f∑Eote(εa∣X,f)=f∑Eote(εb∣X,f)