1 AdaBoost的推导

首先,直接给出AdaBoost算法的核心思想是:在原数据集上经过取样,来生成不同的弱分类器,最终再把这些弱分类器聚合起来。

关键问题有如下几个:

(1)取样怎样用数学方式表达出来;

(2)每次取样依据什么准则;

(3)最后怎么聚合这些弱分类器。

首先我们看第一个问题,如何表示取样?答案使用原数据集上的加权error。

假设我们对数据集D做的取样如下:

那么我们在新数据集上的01error可以等效为在原数据集上的加权error:

即我们取样相当于确定一组权重μ,对这个加权的error作最小化就能得到一个弱分类器g。

特别的,对于svm和逻辑回归,如果我们已知权重μ,我们可以用下面的方式解:

然后是第二个问题,依据什么原则来取样?或者说,怎样选择权重μ。

答案是多样性。即保证生成的每个弱分类器的差别越大,最后的聚合出来的强分类器就会越好。

如何来保证这一点呢?假设我的第t次取样生成了gt,第t+1次取样生成了g(t+1),取样的规则分别是μt和μt+1。即:

那么,要保证gt+1和gt有很大不同,有一个办法,就是使gt用在gt+1的数据集上时,效果很差。效果很差就是错误率是0.5,跟扔硬币一样:

即:

所以,更新这个权重的方法是,对于t轮上分类错误的点,它的u应该更新为乘以总的分类正确率,对于分类正确的点,它的u应该更新为乘以总的分类错误率,注意这里的分类错误率是加权后的分类错误率(或者说在采样后的分类错误率):

这里我们使用另一种与上面等效的方法:

它有一定的物理意义:由于上一轮错误率总是小于0.5,因此方块t是大于1的。因此对于上一次分类正确的权重,除以方块t,减小了权重;对于上一次分类错误的权重,乘以方块t,放大了权重。

类似于水果课堂中老师教学生的例子。

第三个问题,得到了这些弱分类器,如何把他们聚合起来?AdaBoost使用的是Linear Blending的方式,其中的权重应该与方块t成正比,即这个弱分类器表现越好,权重应该越大:

另外,初始的u我们定为均匀的。

这样,AdaBoost算法如下:

2 AdaBoost的理论保证

最新文章

  1. GPS部标平台的架构设计(二) 可扩展性设计
  2. HDU5781 ATM Mechine(DP 期望)
  3. java BigInteger使用
  4. 在python 中is和= = 的区别
  5. 通讯簿(apple)
  6. POJ 2226
  7. c语言类型转换注意事项
  8. NFC(6)NFC编程的几个重要类,NFC硬件启动android应用原理
  9. 字符串(后缀数组):HAOI2016 找相同子串
  10. ASP.NET - 记住滚动条的位置
  11. 隐藏快捷方式扩展名(.lnk)
  12. 华为指标OceanStore
  13. Go中局部全局变量的区分
  14. 转载: ssh连接上华为云Linux服务器,一会就自动断开
  15. servlet操作本地文件汇总: 判断文件是否存在;文件重命名;文件复制; 获取文件属性信息,转成Json对象; 获取指定类型的文件; 查找替换.txt中的文本
  16. S5PV210的根文件系统制作
  17. LeetCode OJ 15. 3Sum
  18. 原生和web交互jsbridge交互总结
  19. Python发送短信提醒
  20. 解决excel日期变成数字的问题

热门文章

  1. 深入学习Spring框架(三)- AOP面向切面
  2. Spring Boot日志使用
  3. 【译】.NET Core 3.0 发布自包含单体可执行程序
  4. Scala 函数式编程(一) 什么是函数式编程?
  5. error: 'commit' is not possible because you have unmerged files.
  6. g++ -std=c++11 -g -o test emit_log_direct.cpp
  7. canvas动画:气泡上升效果
  8. python虚拟环境管理 Pipenv 使用说明
  9. [leetcode] 96 Unique Binary Search Trees (Medium)
  10. 小白开学Asp.Net Core《二》