AdaBoost原理
主要理论:根据训练集中的样本权重:
w
w
w ,及弱分类器的权重:
α
α
α,不断继承产生新的弱学习器--------构建一套所有父类到子类的弱学习器相加的组合学习模型放入符号函数(sign) 进行分类。
看图吧!!!
没明白对吧,开始我也不明白,往下看就会明白一点点了。
我们先罗列出公式部分,根据公式我们一步一步就会知道为什么会根据训练集权重: w w w、和弱学习器权重: α α α,产生父类弱学习器,子类弱学习…及不知多少代子孙弱学习器。
算法流程:图片来自知乎(梦里寻梦)
看完这套流程,我们就可以继续了,这套流程图是来自知乎,编写公式太费劲了,忘知乎大神见谅,该大神的adaboost文章对我引发特别深,如果往下看不明白,强烈建议点击图片链接转到该大神座下聆听教诲。。。。
==========================================================
下面我们开始讲解如何构建子孙三代弱学习器的继承及组合。
我们拿周志华老师的《统计学习方法》里面的例题开始讲解:
先来个官方语言:假设弱分类器由 x < v 或 x > v x<v 或 x>v x<v或x>v 产生,阈值的选取条件:是其阈值 v v v 使该分类器在训练集上分类误差率最低。
注明一下:这个误差率其实就来自权重值。
这是书本上给的数据集:看数据集只有训练集 x,标签y、并没有训练集权重。
根据算法流程,我们要构建第一个爷爷,这个爷爷捡了个古代的破瓷器(数据集),想要把他修理好。他就需要一些材料、这个材料就是训练集权重: w w w
-
初始化数据权重分布:
D 1 = ( w 10 , w 11 , . . . . . . w 19 ) D_1 = (w_{10},w_{11},......w_{19}) D1=(w10,w11,......w19)
( w 10 + w 11 + . . . . . . + w 19 = 1 ) (w_{10}+w_{11}+......+w_{19} = 1) (w10+w11+......+w19=1)
D
1
D1
D1
这爷爷辈研究怎么用最少的材料修理好这个瓷器,最后发现还是有三处没修理好,爷爷没本事,手艺不行,只能修到这程度了。
翻译过来就是:在权值分布为
D
1
D_1
D1 的训练数据集上。不断尝试分割,计算误差率,发现
v
v
v 取2.5时,分类误差最低。
故爷爷辈弱学习器为:
样本:
(
6
,
7
,
8
)
(6,7,8)
(6,7,8)被错分
误差率:
e
1
e_1
e1 =
P
(
G
1
(
x
i
)
≠
y
i
)
P(G_1(x_i)≠y_i)
P(G1(xi)=yi)
w
16
+
w
17
+
w
18
=
(
0.1
+
0.1
+
0.1
)
w_{16}+w_{17}+w_{18} = (0.1+0.1+0.1)
w16+w17+w18=(0.1+0.1+0.1) = 0.3
根据公式:我们计算出爷爷辈弱学习器的权重:
α
α
α
根据这个工具(公式)获得:
α
α
α=0.4236
爷爷辈的弱学习器(即爷爷辈修补程度)出来了~~
这个爷爷辈感觉自己这手艺这辈子都难以修好这个破瓷瓶(样本集)了,他开始转而求其次,研究修理这个破瓷瓶的材料(权重),然后把研究(更新)好的材料(权重)传给儿子,用来继续修理这个瓷瓶。
那么他就需要用到一个研究工具(更新公式)
更新后的权重(即研究后的新材料):
D
2
D_2
D2
画红框的位置大家有没有发现是
D
1
D_1
D1分错后的
w
w
w 位置,发现其权重变大了。而其他权重则变小了,这是希望能把之前经常分类错误(经常分类错误会出现权重不断变大)的数据能在下一个个体学习器分类正确(记住:权重是用来计算误差的,为了降低误差,选择阈值时会倾向把权重大的分类正确)
第二步
研究好的
D
2
D_2
D2可以完美的传承给下一代了,那么就可以通过这个
D
2
D_2
D2训练集进行分类,找到一个
v
v
v阈值使其在
D
2
D_2
D2上误差率最小。
我们找到了一个阈值
v
v
v = 8.5 其误差率是最小的。
误差率:
e
2
e_2
e2 = 0.2143 误差率降低了
计算出儿子辈的学习权重:
α
α
α = 0.6496
儿子辈的弱学习器(修补程度)也出来了~~
因为儿子修补瓷瓶的程度建立在爷爷已经修过的基础上,所以
目前瓷瓶的完好度= 爷爷辈弱学习器(修补程度) + 儿子辈弱学习器(修补程度)
这个儿子辈也发现自己这手艺这辈子都难以修好这个破瓷瓶(样本集)了,他也开始转而求其次,研究修理这个破瓷瓶的材料(权重),然后把研究(更新)好的材料(权重)传给孙子辈,让他用来继续修理这个瓷瓶。
那么他就需要用到一个之前爷爷辈用过研究工具(更新公式)
- 更新后的权重(即研究后的新材料):
画红框的位置大家有没有发现是 D 2 D_2 D2分错后的 w w w 位置,发现其权重变大了。而其他权重则变小了,这是希望能把之前经常分类错误(经常分类错误会出现权重不断变大)的数据能在下一个个体学习器分类正确(记住:权重是用来计算误差的,为了降低误差,选择阈值时会倾向把权重大的分类正确)
第三步
研究好的
D
3
D_3
D3又可以完美的传承给下一代了,那么就可以通过这个
D
3
D_3
D3训练集进行分类,找到一个
v
v
v阈值使其在
D
3
D_3
D3上误差率最小。
我们找到了一个阈值
v
v
v = 5.5 其误差率是最小的。
误差率:
e
3
e_3
e3 = 0.1820 误差率又降低了 有4个误差
计算出儿子辈的学习权重:
α
α
α = 0.7514
孙子辈的弱学习器(修补程度)也出来了~~
因为孙子修补瓷瓶的程度建立在爷爷、儿子已经修过的基础上,所以
目前瓷瓶的完好度(强学习器) = 爷爷辈弱学习器(修补程度) + 儿子辈弱学习器(修补程度) + 孙子辈弱学习器(修补程度)
这时我们发现,经过三代人,不断累积材料知识,不知不觉已经修好了这个瓷瓶。这三代人组成了一个强学习器
可以根据
x
x
x 的区间范围查看一下原训练集, 是否一一对应。
adaboost集成算法倒此就讲完了。如有不明白,转去大神处吧
大神地址:
https://zhuanlan.zhihu.com/p/27126737