您的位置:首页 > 编程语言 > MATLAB

AdaBoost (Adaptive Boosting) 自适应增强 简单理解算法与matlab实现

2018-02-03 20:19 507 查看

综述

AdaBoost学习算法用于提高简单学习算法的分类性能。它通过组合一组弱分类函数(具有较高分类错误的弱分类器)来形成更强的分类器。最后的强分类器采用弱分类器加阈值的加权组合的形式。

AdaBoost方法的自适应在于:前一个分类器分错的样本会被用来训练下一个分类器。AdaBoost方法对于噪声数据和异常数据很敏感,但在一些问题中,AdaBoost方法相对于大多数其它学习算法而言,不会很容易出现过拟合现象。AdaBoost方法中使用的分类器可能很弱(比如出现很大错误率),但只要它的分类效果比随机好一点(比如两类问题分类错误率略小于0.5),就能够改善最终得到的模型。而错误率高于随机分类器的弱分类器也是有用的,因为在最终得到的多个分类器的线性组合中,可以给它们赋予负系数,同样也能提升分类效果。

与Boosting的区别:Boosting 是一种将弱分类器转化为强分类器的方法统称,而AdaBoost是其中的一种,采用了exponential loss function(其实就是用指数的权重),根据不同的loss function还可以有其他算法,比如L2Boosting, logitboost等。

实现思路: AdaBoost方法是一种迭代算法,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率。每一个训练样本都被赋予一个权重,表明它被某个分类器选入训练集的概率。如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它被选中的概率就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。

算法流程

假设输入为xi,i=1..Nxi,i=1..N

弱分类器为hjhj

(x⃗ i,yi)中yi∈(−1,1)(x→i,yi)中yi∈(−1,1)

初始化权重ww

for t=1..T (T为弱分类器h个数)

进行权重归一化:wi=wi∑Nj=1wjwi=wi∑j=1Nwj使得∑i=1Nwi=1∑i=1Nwi=1

计算每个弱分类器的错误率ee,并选择错误率ee最小的弱分类器hkhk,其中错误率计算公式为ek=∑i=1Nwi(1−hk(x⃗ i)yi2)其中0≤ek≤1ek=∑i=1Nwi(1−hk(x→i)yi2)其中0≤ek≤1

计算该弱分类器的权限at=ln(1−ekek)at=ln(1−ekek)

更新权重wi=wiexp(−atyihk(x⃗ i))wi=wiexp(−atyihk(x→i))

end for

最后强分类器为H(x⃗ )=sign(∑t=1Tatht(x⃗ ))H(x→)=sign(∑t=1Tatht(x→))

Matlab实现

w = [1 1 1 1 1 1 1 1];
Y = [-1 1 1 1 -1 -1 1 -1];
h(1,:) = [-1, -1, 1, 1, 1, 1, 1, -1];
h(2,:) = [-1, 1, 1, -1, 1, 1, -1, -1];
h(3,:) = [1, 1, 1, 1, 1, 1, 1, 1];
e = [];
a = [];
for i = 1:2
disp('--iteration--');
sumW = sum(w);
w = w ./ sumW;
for j = 1:size(h,1)
e(j) = sum(w.*(1 - h(j,:).*Y) / 2);
end
e
minE = min(e);
minI = find(e == minE);
if (size(minI,2) > 1)
minI = minI(1);
end
minE
minI
a(i) = log((1 - minE)/minE)/2
w = w .* exp(-a(i) * h(minI,:).*Y)
h(minI,:) = [];
e(minI) = [];
end

h(1,:) = [-1, -1, 1, 1, 1, 1, 1, -1];
h(2,:) = [-1, 1, 1, -1, 1, 1, -1, -1];
%h1 means h1 above, h2 means h2 above
H = [];
for i = 1:8
H(i) = sign(h(1,i) * a(1) +  h(2,i) * a(2));
end
H


总结

主要优点:

Adaboost作为分类器时,分类精度很高

在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。

作为简单的二元分类器时,构造简单,结果可理解。

不容易发生过拟合

主要缺点:

对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。

参考文献

http://en.wikipedia.org/wiki/AdaBoost

http://www.cnblogs.com/pinard/p/6133937.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: