[ML] AdaBoost算法
2016-05-21 19:26
225 查看
华电北风吹
日期:2016-05-21
AdaBoost算法通过提高被前一轮弱分类器错误分类样本的权值,降低那些被正确分类的样本的权重,然后构建一系列的分类器,通过分类器的加权投票做出最终决策。
一、AdaBoost算法
AdaBoost算法流程
——————————————————————————————————
对于输入样本(x(i),y(i)),i=1,2,...,m,设置弱分类器的个数N
step 1. 初始化训练样本权重w1,i=1m,i=1,2,...,m
step 2. 依次前向构建每个弱分类器k=1,2,...,N
a. 根据当前每个样本的权重wk,i,i=1,2,...,m训练分类器Gk(x)使得分类器在样本权重集w上加权分类准确率最低。
b. 计算分类器Gk(x)的分类准确率
ek=∑mi=1wk,iI(Gk(x(i))≠y(i)))(1-1)
c. 计算Gk(x)的系数αm
αk=121−ekek(1-2)
d. 更新样本权重
wk+1,i=wk,iZkexp(−αky(i)Gk(x(i))),i=1,2,...,m(1-3)
其中,Zk为归一化因子,保证所有样本加权和一直为1.
Zk=∑mi=1wk,iexp(−αky(i)Gk(x(i)))(1-4)
step 3. 设分类器的线性组合为
f(x)=∑Nk=1αkGk(x)(1-5)
最终的判别函数为
G(x)=sign(f(x))=sign(∑Nk=1αkGk(x))(1-6)
——————————————————————————————————
关于上面AdaBoost算法里面涉及到的参数做一点简单说明。
1、由于这是训练数据集,所以对于任何一个分类器都应该有em≤12。
2、所有的αk,k=1,2,...,N的和不一定1.
3、对于权重更新方式(公式1-3),意义在于分类正确的就以指数形式降低权重,分类错误就指数形式增加权重。
二、AdaBoost收敛性分析
AdaBoost算法通俗易懂,但是这样加权投票方式,不同于Bagging少数服从多数,深入理解的话肯定有疑问这样的加权能够提高分类准确率吗?现在我们来解决这个问题,随着弱分类器的个数增多,分类错误率单调递减。
1、AdaBoost的误差界满足如下不等式
1m∑mi=1I(G(x(i)))≠y(i)≤1m∑mi=1exp(−y(i)f(x(i)))=∏Nk=1Zk(2-1)
证明:
对于前半部分不等式部分的证明,exp(−y(i)f(x(i)))肯定大于等于0,并且当G(x(i)))≠y(i)时,有exp(−y(i)f(x(i)))≥1,所以前半部分证明完毕。
对于后半部分等式部分证明如下,
1m∑mi=1exp(−y(i)f(x(i)))
=1m∑mi=1exp(−∑Nk=1αky(i)Gk(x))
=1m∑mi=1∏Nk=1exp(−αky(i)Gk(x))
=∑mi=11m∏Nk=1exp(−αky(i)Gk(x))
=∑mi=1w1,i∏Nk=1exp(−αky(i)Gk(x))
(2-2)
由公式(1-3)可得
Zkwk+1,i=wk,iexp(−αky(i)Gk(x(i))),i=1,2,...,m(2-3)
将公式(2-3)递归带入公式(2-2)最后一项,便可得到公式(2-1)等式部分。至此,公式(2-1)证毕。
2、对于二分类问题的训练误差界有如下不等式
∏nk=1=∏nk=12ek(1−ek)−−−−−−−−√=∏nk=11−4γ2k−−−−−−√≤exp(−2∑nk=1γ2k)(2-4)
这里,γm=12−em
对于每一个的权重归一化因子Zk有,
Zk=∑mi=1wk,iexp(−αky(i))Gk(x(i))
=∑y(i)≠Gk(x(i))wk,ie−αk+∑y(i)=Gk(x(i))wk,ieαk
=(1−ek)e−αk+ekeαk
(2-5)
根据公式(2-1)知 Zk越小,错误率减小的越快,对上式求偏导,即可得到AdaBoost中的等式(1-2),将等式(1-2)带入上式得,
Zk=∏nk=12ek(1−ek)−−−−−−−−√=∏nk=11−4γ2k−−−−−−√(2-6)
有
1−4γ2k−−−−−−√≤exp(−2γ2k)(2-7)
综上的可得到公式(2-4)。
并且,对于所有的γk若有γk≥γ,则有
1m∑mi=1I(G(x(i)))≠y(i)≤exp(−2Nγ2)(2-8)
公式(2-8)说明了,AdaBoost的误差以指数速率下降。
日期:2016-05-21
AdaBoost算法通过提高被前一轮弱分类器错误分类样本的权值,降低那些被正确分类的样本的权重,然后构建一系列的分类器,通过分类器的加权投票做出最终决策。
一、AdaBoost算法
AdaBoost算法流程
——————————————————————————————————
对于输入样本(x(i),y(i)),i=1,2,...,m,设置弱分类器的个数N
step 1. 初始化训练样本权重w1,i=1m,i=1,2,...,m
step 2. 依次前向构建每个弱分类器k=1,2,...,N
a. 根据当前每个样本的权重wk,i,i=1,2,...,m训练分类器Gk(x)使得分类器在样本权重集w上加权分类准确率最低。
b. 计算分类器Gk(x)的分类准确率
ek=∑mi=1wk,iI(Gk(x(i))≠y(i)))(1-1)
c. 计算Gk(x)的系数αm
αk=121−ekek(1-2)
d. 更新样本权重
wk+1,i=wk,iZkexp(−αky(i)Gk(x(i))),i=1,2,...,m(1-3)
其中,Zk为归一化因子,保证所有样本加权和一直为1.
Zk=∑mi=1wk,iexp(−αky(i)Gk(x(i)))(1-4)
step 3. 设分类器的线性组合为
f(x)=∑Nk=1αkGk(x)(1-5)
最终的判别函数为
G(x)=sign(f(x))=sign(∑Nk=1αkGk(x))(1-6)
——————————————————————————————————
关于上面AdaBoost算法里面涉及到的参数做一点简单说明。
1、由于这是训练数据集,所以对于任何一个分类器都应该有em≤12。
2、所有的αk,k=1,2,...,N的和不一定1.
3、对于权重更新方式(公式1-3),意义在于分类正确的就以指数形式降低权重,分类错误就指数形式增加权重。
二、AdaBoost收敛性分析
AdaBoost算法通俗易懂,但是这样加权投票方式,不同于Bagging少数服从多数,深入理解的话肯定有疑问这样的加权能够提高分类准确率吗?现在我们来解决这个问题,随着弱分类器的个数增多,分类错误率单调递减。
1、AdaBoost的误差界满足如下不等式
1m∑mi=1I(G(x(i)))≠y(i)≤1m∑mi=1exp(−y(i)f(x(i)))=∏Nk=1Zk(2-1)
证明:
对于前半部分不等式部分的证明,exp(−y(i)f(x(i)))肯定大于等于0,并且当G(x(i)))≠y(i)时,有exp(−y(i)f(x(i)))≥1,所以前半部分证明完毕。
对于后半部分等式部分证明如下,
1m∑mi=1exp(−y(i)f(x(i)))
=1m∑mi=1exp(−∑Nk=1αky(i)Gk(x))
=1m∑mi=1∏Nk=1exp(−αky(i)Gk(x))
=∑mi=11m∏Nk=1exp(−αky(i)Gk(x))
=∑mi=1w1,i∏Nk=1exp(−αky(i)Gk(x))
(2-2)
由公式(1-3)可得
Zkwk+1,i=wk,iexp(−αky(i)Gk(x(i))),i=1,2,...,m(2-3)
将公式(2-3)递归带入公式(2-2)最后一项,便可得到公式(2-1)等式部分。至此,公式(2-1)证毕。
2、对于二分类问题的训练误差界有如下不等式
∏nk=1=∏nk=12ek(1−ek)−−−−−−−−√=∏nk=11−4γ2k−−−−−−√≤exp(−2∑nk=1γ2k)(2-4)
这里,γm=12−em
对于每一个的权重归一化因子Zk有,
Zk=∑mi=1wk,iexp(−αky(i))Gk(x(i))
=∑y(i)≠Gk(x(i))wk,ie−αk+∑y(i)=Gk(x(i))wk,ieαk
=(1−ek)e−αk+ekeαk
(2-5)
根据公式(2-1)知 Zk越小,错误率减小的越快,对上式求偏导,即可得到AdaBoost中的等式(1-2),将等式(1-2)带入上式得,
Zk=∏nk=12ek(1−ek)−−−−−−−−√=∏nk=11−4γ2k−−−−−−√(2-6)
有
1−4γ2k−−−−−−√≤exp(−2γ2k)(2-7)
综上的可得到公式(2-4)。
并且,对于所有的γk若有γk≥γ,则有
1m∑mi=1I(G(x(i)))≠y(i)≤exp(−2Nγ2)(2-8)
公式(2-8)说明了,AdaBoost的误差以指数速率下降。
相关文章推荐
- java并发编程实践
- Java线程及Jvm监控工具
- CSS 3D旋转 hover 后设置transform 是相对于正常位置
- C#开源大全项目
- 简单实用的一些快捷键
- docker学习笔记1-docker简介
- TensorFlow 深度学习笔记 Stochastic Optimization
- android课程学习:打招呼案例
- 【POJ 1721】CARDS(置换群)
- 巧记Java知识点
- CSS Modules 关于CSS模块化的方法 基于React
- NYOJ - 21 三个水杯
- 练习三1021
- [Android] 布局优化
- SQL Server 2008 如何开启数据库的远程连接
- HDU 5695 Gym Class
- 分糖果 差分约束
- 线段树模板
- Linux学习-vmware虚拟机安装tomcat
- 大蒟蒻の博客小窝