没有免费的午饭定理(No Free Lunch Theorem),这个定理说明html
若学习算法
L
a
L_a
L a 在***某些问题***上比学习算法
L
b
L_b
L b 要好, 那么必然存在***另外一些问题***, 在这些问题中
L
b
L_b
L b 比
L
a
L_a
L a 表现更好。web
这里说的表现好就是前面所说的泛化能力更强。而后出现了下面这个公式算法
E
o
t
e
(
L
a
∣
X
,
f
)
=
∑
h
∑
x
∈
χ
−
X
P
(
x
)
I
(
h
(
x
)
≠
f
(
x
)
)
P
(
h
∣
X
,
L
a
)
E_{ote}(L_a|X,f) = \sum_{h}\sum_{x\in\chi-X}P(x)\mathbb{I}(h(x)\neq f(x))P(h|X,L_a)
E o t e ( L a ∣ X , f ) = ∑ h ∑ x ∈ χ − X P ( x ) I ( h ( x ) ̸ = f ( x ) ) P ( h ∣ X , L a ) app
使人生畏的长公式,不过咱们来依次解读它。svg
留坑,周末更 好了,周六了,今天终于看懂了这个定理的证实,下面咱们一字一句地来解读书中的证实: 首先,定义好符号
χ
\chi
χ :样本空间,什么是样本空间呢?就是你的样本的属性张成的空间,书的前文有介绍 仍是以他书中的西瓜来举例吧: 西瓜的属性和每一个属性的取值是 色泽= 青绿||乌黑||浅白 x= 0 || 1 || 2 根蒂= 蜷缩||稍蜷||硬挺 y= 0 || 1 || 2 敲声= 浊响||沉闷||清脆 z= 0 || 1 || 2 你把色泽、根蒂、敲声想一想成x,y,z轴。取值的范围都是0,1,2。怎么样,是否是像一个正方体的三维空间,固然属性可能有多种,那就上升到多维空间去了,很差想像了。函数
H
H
H :假设空间,什么是假设空间呢? 什么是假设呢,前面说也叫学得模型,这里咱们不搞那些概念。请看这篇博主的文章http://blog.csdn.net/VictoriaW/article/details/77686168,看完应该就能理解假设空间和版本空间。(此处9月1日更新,这里的假设其实就是学得的一个用来判断的模型,或者说函数,或者说映射也行,反正通过学习,就获得这样一个假设,用来判断西瓜的好坏(笑)。)学习
L
a
L_a
L a :学习算法,学习算法有其偏好性,对于相同的训练数据,不一样的学习算法能够产生不一样的假设,学得不一样的模型,所以才会有那个学习算法对于具体问题更好的问题,这里这个没有免费的午饭定理要证实的就是:若对于某些问题算法
L
a
L_a
L a 学得的模型更好,那么必然存在另外一些问题,这里算法
L
b
L_b
L b 学得的模型更好.这里的好坏在下文中使用算法对于全部样本的总偏差表示测试
P
(
h
∣
X
,
L
a
)
P(h|X,L_a)
P ( h ∣ X , L a ) : 算法
L
a
L_a
L a 基于训练数据
X
X
X 产生假设
h
h
h 的几率 这里我说一下本身的理解,既然是
L
a
L_a
L a 基于
X
X
X 产生假设
h
h
h 的几率,那么就说明假设不止一个(你说这不是废话吗?上面都说有假设空间了,假设固然不止一个),这里要注意的是这里的假设是一个映射,是
y
=
h
(
x
)
y=h(x)
y = h ( x ) ,是基于数据
X
X
X 产生的对于学习目标(判断好瓜)的预测。因数据
X
X
X 不同,因此可能产生不同的假设
h
h
h ,既然假设假设有可能不同,那么对每一种假设都有其对应的几率即
P
(
h
∣
X
,
L
a
)
P(h|X,L_a)
P ( h ∣ X , L a ) .并且全部假设
h
h
h 加起来的几率为1,这个不难理解,几率总和为1spa
f
f
f :表明但愿学得的真实目标函数,要注意这个函数也不是惟一的,而是存在一个函数空间,在这个空间中按某个几率分布,下文证实中采用的是均匀分布。.net
好,上面那个公式到了
E
o
t
e
(
L
a
∣
X
,
f
)
=
∑
h
∑
x
∈
χ
−
X
P
(
x
)
I
(
h
(
x
)
≠
f
(
x
)
)
P
(
h
∣
X
,
L
a
)
E_{ote}(L_a|X,f) = \sum_{h}\sum_{x\in\chi-X}P(x)\mathbb{I}(h(x)\neq f(x))P(h|X,L_a)
E o t e ( L a ∣ X , f ) = ∑ h ∑ x ∈ χ − X P ( x ) I ( h ( x ) ̸ = f ( x ) ) P ( h ∣ X , L a )
首先看这个
E
E
E ,这个
E
E
E 是指望,expectation的意思,这个下标
o
t
e
_{ote}
o t e ,是off-training error,即训练集外偏差(忘了是在哪篇博客上看到的了,错了我不负责哈嘻嘻)。
E
o
t
e
(
L
a
∣
X
,
f
)
E_{ote}(L_a|X,f)
E o t e ( L a ∣ X , f ) : 算法
L
a
L_a
L a 学得的假设在训练集外的全部样本上的偏差的指望
P
(
x
)
P(x)
P ( x ) : 对于这个,个人理解是样本空间中的每一个样本的取得几率不一样,什么意思呢?拿西瓜来讲,(色泽=浅白,根蒂=硬挺,敲声=清脆)的西瓜可能比(色泽=浅白,根蒂=稍蜷,敲声=沉闷)的西瓜更多,取到的几率更大。因此有
P
(
x
)
P(x)
P ( x ) 这个几率。
I
(
h
(
x
)
≠
f
(
x
)
)
\mathbb{I}(h(x)\neq f(x))
I ( h ( x ) ̸ = f ( x ) ) :看前面的符号表把这个叫作指示函数,这个很好理解,就像if语句括号里的表达式同样,为真就=1,为假就=0。
P
(
h
∣
X
,
L
a
)
P(h|X,L_a)
P ( h ∣ X , L a ) : 前面说过了,再复习一下,算法
L
a
L_a
L a 基于训练集
X
X
X 产生假设
h
h
h 的几率。
其实这里最开始最令我困惑的是什么呢?是两个求和符号,由于这里求和符号感受不规范啊!有木有,不事后来以为理解了意思就大概行了. 第一个求和符号:
∑
h
\sum_h
∑ h : 这里的这个对假设的求和其实我也不是很理解,个人理解主要是不知道这个对假设求和的空间究竟是:同一个算法对于不一样训练集产生不一样的假设,每一个假设有不一样的几率,仍是算法对于同一个训练集会产生不一样的假设,每一个假设有不一样的几率。不过这个不重要,群里有人说前三章看看就好,具体结合后面的算法来理解就好了,先日后面看着吧。(此处9月1日更新,这里是由于学习算法对于训练数据
χ
{\chi}
χ 是可能产生多个假设的。且对不一样的假设有不一样的产生几率,因此有
P
(
h
∣
X
,
L
a
)
P(h|X,L_a)
P ( h ∣ X , L a ) 这个表达式。) 第二个求和符号:
∑
x
∈
χ
−
X
\sum_{x\in{\chi-X}}
∑ x ∈ χ − X :对于样本空间中每个训练集外的数据都进行右边的运算。
好了,公式的每一部分都说清楚了,来总体理解一下,这个公式就是说: 对于算法
L
a
L_a
L a 产生的每个不一样的假设
h
h
h ,进行训练外样本的测试,而后测试不成功(由于求的是偏差)指示函数就为1,而且两个几率相乘,最后全部的结果加起来,就是该算法在训练集外产生的偏差。
而后下面考虑二分类问题,先要说明,对于咱们想要求得的真实目标函数
f
f
f 可能也不止一个,这个好理解,由于知足版本空间中的假设的函数均可以是真实目标函数,而后这些不一样的
f
f
f 有着相同的几率(均匀分布),函数空间为
{
0
,
1
}
\left \{ 0,1 \right\}
{ 0 , 1 } ,那么有多少个这种函数呢?咱们来看对于同一个样本的这个预测值,对于样本空间
χ
\chi
χ 中的某个样本
x
x
x ,若是
f
1
(
x
)
=
0
f_1(x)=0
f 1 ( x ) = 0 ,
f
2
(
x
)
=
1
f_2(x) = 1
f 2 ( x ) = 1 , 那么这就是两个不一样的真实目标函数,因此对于某个样本能够区分出两个真实目标函数,一共有
∣
χ
∣
\left | \chi \right|
∣ χ ∣ 个样本,因此一共有
2
∣
χ
∣
2^{\left | \chi \right |}
2 ∣ χ ∣ 个真实目标函数,这些真实目标函数是等可能分布的(均匀分布),因此对于某个假设
h
(
x
)
h(x)
h ( x ) 若是
h
(
x
)
=
0
h(x) = 0
h ( x ) = 0 那么就有
1
2
\frac{1}{2}
2 1 的可能与真实目标函数相等。 因此下面来看这个公式推导
$\sum_f E_{ote}\left ( L_a|X,f\right) $
=
∑
f
∑
h
∑
x
∈
χ
−
X
P
(
x
)
I
(
h
(
x
)
≠
f
(
x
)
)
P
(
h
∣
X
,
L
a
)
= \sum_f\sum_h\sum_{x\in\chi-X}P(x)\mathbb{I}(h(x)\neq f(x))P(h|X,L_a)
= ∑ f ∑ h ∑ x ∈ χ − X P ( x ) I ( h ( x ) ̸ = f ( x ) ) P ( h ∣ X , L a )
=
∑
x
∈
χ
−
X
P
(
x
)
∑
h
P
(
h
∣
X
,
L
a
)
∑
f
I
(
h
(
x
)
≠
f
(
x
)
)
=\sum_{x\in\chi-X}P(x)\sum_hP(h|X,L_a)\sum_f\mathbb{I}(h(x)\neq f(x))
= ∑ x ∈ χ − X P ( x ) ∑ h P ( h ∣ X , L a ) ∑ f I ( h ( x ) ̸ = f ( x ) ) ①
=
∑
x
∈
χ
−
X
P
(
x
)
∑
h
P
(
h
∣
X
,
L
a
)
1
2
2
∣
χ
∣
=\sum_{x\in\chi-X}P(x)\sum_hP(h|X,L_a)\frac{1}{2}2^{\left | \chi \right |}
= ∑ x ∈ χ − X P ( x ) ∑ h P ( h ∣ X , L a ) 2 1 2 ∣ χ ∣ ②
=
1
2
2
∣
χ
∣
∑
x
∈
χ
−
X
P
(
x
)
∑
h
P
(
h
∣
X
,
L
a
)
=\frac{1}{2}2^{\left | \chi \right |}\sum_{x\in\chi-X}P(x)\sum_hP(h|X,L_a)
= 2 1 2 ∣ χ ∣ ∑ x ∈ χ − X P ( x ) ∑ h P ( h ∣ X , L a ) ③
=
2
∣
χ
∣
−
1
∑
x
∈
χ
−
X
P
(
x
)
⋅
1
=2^{\left | \chi \right |-1}\sum_{x\in\chi-X}P(x)\cdot 1
= 2 ∣ χ ∣ − 1 ∑ x ∈ χ − X P ( x ) ⋅ 1 ④
第一步是怎么推导出来的呢?这里涉及到一个求和运算 假设
a
i
∈
{
a
1
,
a
2
,
.
.
.
,
a
m
}
a_i\in \left\{ a_1,a_2,...,a_m \right\}
a i ∈ { a 1 , a 2 , . . . , a m }
b
j
∈
{
b
1
,
b
2
,
.
.
.
,
b
n
}
b_j\in \left\{ b_1,b_2,...,b_n \right\}
b j ∈ { b 1 , b 2 , . . . , b n }
c
k
∈
{
c
1
,
c
2
,
.
.
.
,
c
o
}
c_k\in \left\{ c_1,c_2,...,c_o \right\}
c k ∈ { c 1 , c 2 , . . . , c o }
那么
∑
i
m
∑
j
n
∑
k
o
a
i
b
j
c
k
\sum_i^m\sum_j^n\sum_k^oa_ib_jc_k
∑ i m ∑ j n ∑ k o a i b j c k
=
∑
i
m
a
i
∑
j
n
b
j
∑
k
o
c
k
=\sum_i^ma_i\sum_j^nb_j\sum_k^oc_k
= ∑ i m a i ∑ j n b j ∑ k o c k 这个很容易理解,你想
(
a
1
+
a
2
+
.
.
.
+
a
m
)
(
b
1
+
b
2
+
.
.
.
+
b
n
)
(
c
1
+
c
2
+
.
.
.
+
c
o
)
(a_1+a_2+...+a_m)(b_1+b_2+...+b_n)(c_1+c_2+...+c_o)
( a 1 + a 2 + . . . + a m ) ( b 1 + b 2 + . . . + b n ) ( c 1 + c 2 + . . . + c o ) 是否是等于
a
1
b
1
c
1
+
a
2
b
1
c
1
+
.
.
.
a
m
b
1
c
1
+
.
.
.
+
a
m
b
n
c
o
{a_1}{b_1}{c_1}+{a_2}{b_1}{c_1}+...{a_m}{b_1}{c_1}+...+{a_m}{b_n}{c_o}
a 1 b 1 c 1 + a 2 b 1 c 1 + . . . a m b 1 c 1 + . . . + a m b n c o 看懂了上面那个你再看第一步也就看懂了
第二步 主要是
∑
f
I
(
h
(
x
)
≠
f
(
x
)
)
=
1
2
2
∣
χ
∣
\sum_f\mathbb{I}(h(x)\neq f(x)) =\frac{1}{2}2^{\left | \chi \right |}
∑ f I ( h ( x ) ̸ = f ( x ) ) = 2 1 2 ∣ χ ∣ 这个其实也很好理解,由于一共有
2
∣
χ
∣
2^{\left | \chi \right |}
2 ∣ χ ∣ 个
f
f
f ,且均匀分布,因此
f
(
x
)
=
1
f(x) = 1
f ( x ) = 1 和
f
(
x
)
=
0
f(x)=0
f ( x ) = 0 的
f
f
f 个数相等,对于每个
h
(
x
)
h\left( x \right)
h ( x ) 来讲,无论
h
(
x
)
=
0
h(x)=0
h ( x ) = 0 仍是
1
1
1 ,都有一半
f
(
x
)
f(x)
f ( x ) 与之相等,即
1
2
2
∣
χ
∣
\frac{1}{2}2^{\left | \chi \right |}
2 1 2 ∣ χ ∣ 因此就得出第二步
第三步到第四步就更好理解了 几率求和为1,就是这么简单
通过这么一通推导后,发现得出指望的表达式中关于没有具体算法的,因此是算法无关的! 若是错误,望指出共交流,共学习!