初识AdaBoost
2017-03-24 18:03
218 查看
AdaBoost
martin
AdaBoost
算法过程
基分类器权值a与训练数据集权值w的分析
AdaBoost推导
AdaBoost是典型的Boosting方法,并且效果很显著。下图是AdaBoost的框架图:
算法过程
下面介绍AdaBoost算法的过程:1. 初始化训练数据的权值分布:
D1=(w11,w12,w13,...,w1N),w1i=1N,i=1,2,...,N
2. 对m=1,2,...,M
(a) 使用具有权值分布Dm的训练集学习,得到基本分类器:
Gm(x):X−>{−1,+1}
(b) 计算Gm(x)在训练数据集上的分类误差:
em=P(Gm(xi)≠yi)=∑Ni=1wmiI(Gm(xi)≠yi)∑Ni=1wmi=∑i=1NwmiI(Gm(xi)≠yi)
上式中,∑i=1Nwmi=1
(c) 计算Gm(x)的系数:
αm=12log1−emem
(d) 更新数据集的权值分布:
Dm+1=(wm+1,1,wm+1,2,...,wm+1,N)
wm+1,i=wmiZme−αmyiGm(xi)
其中,Zm=∑i=1Nwmie−αmyiGm(xi),是规范化因子
(e) 重复(a)−(d)步m次得到m个权值a和m个基分类器G(x)
3. 构建基本分类器的线性组合:
f(x)=∑m=1MamGm(x)
4. 最终得到分类器:
G(x)=sign(f(x))=sign(∑m=1MamGm(x))
基分类器权值a与训练数据集权值w的分析
1. 先来看基分类器的权值α,公式如下:α=12log1−emem
我们知道AdaBoost是将多个弱分类器组合起来形成一个很强的分类器,但这里有个隐含条件:弱分类器。什么叫弱分类器?意思就是在效果上比随机猜想要好的分类器。比如二分类问题,随机猜想的正确率是0.5,所以说弱分类器的正确率一定要比0.5高,于是它的错误率em<0.5,所以α会随着em的减小而增大,这是什么意思?意思是,如果我的基分类器的错误率很小,也就是正确率很大,那么在众多基分类器中我给予它很大的权值α,让它能发挥更大的作用。
2. 再来看训练数据集分布的权值分配,公式如下:
wm+1,i=wm,iZme−amyiG(xi)=⎧⎩⎨wm,iZme−am,Gm(xi)=yiwm,iZmeam,Gm(xi)≠yi
由公式可知,对训练集的样例正确分类与错误分类之间,错误分类样本的权值被放大:e2αm=1−emem倍,所以,在下一轮学习中将会被更大关注。
AdaBoost推导
AdaBoost模型是由基本分类器组成的加法模型,损失函数是指数函数。1. 加法模型:f(x)=∑Mm=1αmGm(x)
2. 损失函数:L(y,f(x))=e−yf(x)
3. 每次训练后的基分类器都是乘以α再与前一个模型线性相加,所以对于第m−1次训练后模型为:
fm−1=fm−2+αm−1Gm−1(x)=α1G1(x)+...+αm−1Gm−1(x)
4. 于是,在第m次训练后有:fm(x)=fm−1(x)+αmGm(x)
5. 目标是每一次的损失在训练集上最小,所以最小化目标函数为:
(αm,Gm(x))=min∑i=1Ne−yifm(xi)=min∑i=1Ne−yi[fm−1(xi)+αmGm(x)]=min∑i=1Ne−yifm−1(xi)−yiαmGm(x)=min∑i=1Nwmie−yiαmGm(x)
上式中,将e−yifm−1(xi)=wmi,因为wmi既不依赖α也不依赖与G,所以与最小无关。
6. 于是,有:
min∑i=1Nwmie−yiαmGm(x)=min∑yi=Gm(xi)wmie−a+∑yi≠Gm(xi)wmiea=min(e−a∑i=1NwmiI(yi=Gm(xi))+eα∑i=1NwmiI(yi≠Gm(xi)))=min(e−a∑i=1Nwmi[1−I(yi≠Gm(xi))]+eα∑i=1NwmiI(yi≠Gm(xi)))=min((eα−e−α)∑i=1NwmiI(yi≠Gm(xi))+e−a∑i=1Nwmi)
所以,我们得到了优化的目标函数:L(α)=(eα−e−α)∑i=1NwmiI(yi≠Gm(xi))+e−a∑i=1Nwmi
7. 对6中的目标函数关于α求导,令∂L(α)∂α=0,求的最小值:
∂L(α)∂α=−e−a∑i=1Nwmi+(eα+e−α)∑i=1NwmiI(yi≠Gm(xi))=0
等价于:
(eα+e−α)∑i=1NwmiI(yi≠Gm(xi))=e−a∑i=1Nwmi
因为:em=∑Ni=1wmiI(yi≠Gm(xi)),∑Ni=1wmi=1
所以有:
(eα+e−α)em=e−a
等价于:
e2a=1−emem
解得:
α=12ln1−emem
8. 由于之前有个假设:wmi=e−yifm−1(xi),而这个式子又可以化为:
wm+1,i=e−yifm(xi)=e−yi[fm−1(xi)+αmGm(xi)]=wmie−yiαmGm(xi)
于是,就有了更新公式:wm+1,i=wmie−yiαmGm(xi),与AdaBoost算法中的更新公式只差了个规范化因子而已。
参考:
[1] 《统计学习方法》李航
相关文章推荐
- 【机器学习】作业8 - AdaBoost
- Adaboost from Baidu
- traincascade与AdaBoost的opencv实现框架
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图
- 集成学习基本原理:Adaboost,Bagging和Stacking
- weka[7] - Adaboost
- 6. Ensemble learning & AdaBoost
- 机器学习实战笔记7(Adaboost)
- Gradient boost adaboost简单区别
- how to draw Opencv face detection Adaboost ROC/PR (绘制方法)
- Adaboost
- 集成学习:AdaBoost
- Adaboost
- 提升Boost:GBDT & Xgboost & Adaboost
- Kaggle房价预测进阶版/bagging/boosting/AdaBoost/XGBoost
- Adaboost原理、算法以及应用
- 初识boost之boost::share_ptr用法
- 提升方法之AdaBoost、提升树(GBDT)
- haar+adaboost人脸检测
- 【机器学习笔记之四】Adaboost 算法