前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AdaBoost (Adaptive Boosting) 自适应增强 简单理解算法与matlab实现

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

作者头像
大鹅
发布2021-06-16 16:58:12
6300
发布2021-06-16 16:58:12
举报
文章被收录于专栏:大鹅专栏:大数据到机器学习

综述

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

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

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

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

算法流程

Matlab实现

代码语言:javascript
复制
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

总结

主要优点:

  1. Adaboost作为分类器时,分类精度很高
  2. 在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。
  3. 作为简单的二元分类器时,构造简单,结果可理解。
  4. 不容易发生过拟合

主要缺点:

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

参考文献

  1. http://en.wikipedia.org/wiki/AdaBoost
  2. http://www.cnblogs.com/pinard/p/6133937.html
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/02/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 综述
  • 算法流程
  • Matlab实现
  • 总结
  • 参考文献
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档