前言

我们将介绍将弱分类器组合成强分类器的算法,Adaboost算法,以及该算法有效的证明。

对于这种提升方法,我们有

  • 每次迭代加大误分类点的权重,这样下次生成的弱分类器能够更可能将该误分类点分类正确
  • 每次迭代生成弱分类器的权重,对于误分类率低的弱分类器,我们在最终结果中给予更高的权重

1. 算法

  • 输入:数据集 T={(x1,y1),(x2,y2),...,(xN,yN)}T=\{(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)\}T={(x1​,y1​),(x2​,y2​),...,(xN​,yN​)},其中,xi∈Rn,yi∈{−1,+1}x_i\in\mathbb{R}^n, y_i\in\{-1, +1\}xi​∈Rn,yi​∈{−1,+1};弱分类器学习方法
  • 输出:强分类器 G(x)G(x)G(x)

(1) 初始数据权重 w1={w1,1,w1,2,...,w1,N}w_{1}=\{w_{1, 1}, w_{1, 2}, ..., w_{1, N}\}w1​={w1,1​,w1,2​,...,w1,N​},这里 w1,i=1Nw_{1, i}=\frac{1}{N}w1,i​=N1​;
(2)对于 m=1,2,...,Mm=1, 2, ..., Mm=1,2,...,M,第 mmm 次数据权重为 wm={wm,1,wm,2,...,wm,N}w_m=\{w_{m, 1}, w_{m, 2}, ..., w_{m, N}\}wm​={wm,1​,wm,2​,...,wm,N​},则

  1. 误分类率 em=∑i=1Nwm,iI(yi≠Gm(xi))e_m=\sum_{i=1}^Nw_{m, i}I(y_i\not=G_m(x_i))em​=∑i=1N​wm,i​I(yi​​=Gm​(xi​))
  2. 根据弱学习算法(比如最小化误分类率),确定弱分类器 Gm(x)G_m(x)Gm​(x)
  3. 计算正确分类几率 αm=12log1−emem\alpha_m=\frac{1}{2}log\frac{1-e_m}{e_m}αm​=21​logem​1−em​​
  4. 更新第 m+1m+1m+1 次数据权重 wm+1,i=wm,ie−αmyiGm(xi)Zmw_{m+1, i}=\frac{w_{m, i}e^{-\alpha_my_iG_m(x_i)}}{Z_m}wm+1,i​=Zm​wm,i​e−αm​yi​Gm​(xi​)​ 其中,Zm=∑i=1Nwm,ie−αmyiGm(xi)Z_m=\sum_{i=1}^Nw_{m, i}e^{-\alpha_my_iG_m(x_i)}Zm​=∑i=1N​wm,i​e−αm​yi​Gm​(xi​)

(3)弱分类器的线性组合为
f(x)=∑m=1MαmGm(x)f(x)=\sum_{m=1}^M\alpha_mG_m(x)f(x)=m=1∑M​αm​Gm​(x) 则强学习器为 G(x)=sign(f(x))G(x)=sign(f(x))G(x)=sign(f(x))

2. 算法有效的数学证明

通过对一系列弱分类器进行线性组合,我们可以得到强分类器,这是很神奇的。

下面,我们就对这个结果从数学上进行证明,说明弱分类器的组合可以很好的拟合数据,成为强分类器。

2.1 训练误差有上界

训练误差为 1N∑i=1NI(yi≠G(xi))\frac{1}{N}\sum_{i=1}^NI(y_i\not=G(x_i))N1​∑i=1N​I(yi​​=G(xi​))。我们说明这个训练误差有上界。

首先,我们有
1N∑i=1NI(yi≠G(xi))=1N∑i=1NI(yi≠sign(f(xi)))=1N∑i=1NI(−yif(xi)≥0)≤1N∑i=1Ne−yif(xi)\begin{array}{lll} &&\frac{1}{N}\sum_{i=1}^NI(y_i\not=G(x_i))\\ &=&\frac{1}{N}\sum_{i=1}^NI(y_i\not=sign(f(x_i)))\\ &=&\frac{1}{N}\sum_{i=1}^NI(-y_if(x_i)\ge0)\\ &\le&\frac{1}{N}\sum_{i=1}^Ne^{-y_if(x_i)} \end{array} ​==≤​N1​∑i=1N​I(yi​​=G(xi​))N1​∑i=1N​I(yi​​=sign(f(xi​)))N1​∑i=1N​I(−yi​f(xi​)≥0)N1​∑i=1N​e−yi​f(xi​)​

其次,我们证明 1N∑i=1Ne−yif(xi)=Πm=1MZm\frac{1}{N}\sum_{i=1}^Ne^{-y_if(x_i)}=\Pi_{m=1}^MZ_mN1​∑i=1N​e−yi​f(xi​)=Πm=1M​Zm​。具体的,我们有
1N∑i=1Ne−yif(xi)=1N∑i=1Ne−∑m=1MαmyiGm(xi)=1N∑i=1NΠm=1Me−αmyiGm(xi)=∑i=1N1NΠm=1Me−αmyiGm(xi)=∑i=1Nw1,iΠm=1Me−αmyiGm(xi)=∑i=1Nw1,ie−α1yiG1(xi)Πm=2Me−αmyiGm(xi)=∑i=1NZ1w2,iΠm=2Me−αmyiGm(xi)=Z1∑i=1Nw2,iΠm=2Me−αmyiGm(xi)=...=Z1Z2...ZM−1∑i=1NwM,ie−αMyiGM(xi)=Z1Z2...ZM−1ZM=Πm=1MZm\begin{array}{lll} &&\frac{1}{N}\sum_{i=1}^Ne^{-y_if(x_i)}\\ &=&\frac{1}{N}\sum_{i=1}^Ne^{-\sum_{m=1}^M\alpha_my_iG_m(x_i)}\\ &=&\frac{1}{N}\sum_{i=1}^N\Pi_{m=1}^Me^{-\alpha_my_iG_m(x_i)}\\ &=&\sum_{i=1}^N\frac{1}{N}\Pi_{m=1}^Me^{-\alpha_my_iG_m(x_i)}\\ &=&\sum_{i=1}^Nw_{1, i}\Pi_{m=1}^Me^{-\alpha_my_iG_m(x_i)}\\ &=&\sum_{i=1}^Nw_{1, i}e^{-\alpha_1y_iG_1(x_i)}\Pi_{m=2}^Me^{-\alpha_my_iG_m(x_i)}\\ &=&\sum_{i=1}^NZ_1w_{2, i}\Pi_{m=2}^Me^{-\alpha_my_iG_m(x_i)}\\ &=&Z_1\sum_{i=1}^Nw_{2, i}\Pi_{m=2}^Me^{-\alpha_my_iG_m(x_i)}\\ &=&...\\ &=&Z_1Z_2...Z_{M-1}\sum_{i=1}^Nw_{M,i}e^{-\alpha_My_iG_M(x_i)}\\ &=&Z_1Z_2...Z_{M-1}Z_M\\ &=&\Pi_{m=1}^MZ_m \end{array} ​===========​N1​∑i=1N​e−yi​f(xi​)N1​∑i=1N​e−∑m=1M​αm​yi​Gm​(xi​)N1​∑i=1N​Πm=1M​e−αm​yi​Gm​(xi​)∑i=1N​N1​Πm=1M​e−αm​yi​Gm​(xi​)∑i=1N​w1,i​Πm=1M​e−αm​yi​Gm​(xi​)∑i=1N​w1,i​e−α1​yi​G1​(xi​)Πm=2M​e−αm​yi​Gm​(xi​)∑i=1N​Z1​w2,i​Πm=2M​e−αm​yi​Gm​(xi​)Z1​∑i=1N​w2,i​Πm=2M​e−αm​yi​Gm​(xi​)...Z1​Z2​...ZM−1​∑i=1N​wM,i​e−αM​yi​GM​(xi​)Z1​Z2​...ZM−1​ZM​Πm=1M​Zm​​

最后,我们得到,训练误差有上界,即
1N∑i=1NI(yi≠G(xi))≤Πm=1MZm\frac{1}{N}\sum_{i=1}^NI(y_i\not=G(x_i))\le\Pi_{m=1}^MZ_mN1​i=1∑N​I(yi​​=G(xi​))≤Πm=1M​Zm​

2.2 重写训练误差上界

训练误差的上界 Πm=1MZm\Pi_{m=1}^MZ_mΠm=1M​Zm​ 看起来并不直观,因此,我们需要重新写出一个上界。

考虑到 yiy_iyi​ 与 Gm(xi)G_m(x_i)Gm​(xi​) 的值域为 {−1,+1}\{-1, +1\}{−1,+1},且如果 yiGm(xi)=−1y_iG_m(x_i)=-1yi​Gm​(xi​)=−1,则分类器 Gm(xi)G_m(x_i)Gm​(xi​) 分类错误;如果yiGm(xi)=1y_iG_m(x_i)=1yi​Gm​(xi​)=1,则分类器 Gm(xi)G_m(x_i)Gm​(xi​) 分类正确。

对于 ZmZ_mZm​,我们有
Zm=∑i=1Nwm,ie−αmyiGm(xi)=∑i=1Nwm,ie−αmI(yi=Gm(xi))+∑i=1Nwm,ieαmI(yi≠Gm(xi))=e−αm∑i=1Nwm,iI(yi=Gm(xi))+eαm∑i=1Nwm,iI(yi≠Gm(xi))=e−αm(1−em)+eαmem=e−12log1−emem(1−em)+e12log1−ememem=2em(1−em)\begin{array}{lll} Z_m&=&\sum_{i=1}^Nw_{m, i}e^{-\alpha_my_iG_m(x_i)}\\ &=&\sum_{i=1}^Nw_{m, i}e^{-\alpha_m}I(y_i=G_m(x_i))+\sum_{i=1}^Nw_{m, i}e^{\alpha_m}I(y_i\not=G_m(x_i))\\ &=&e^{-\alpha_m}\sum_{i=1}^Nw_{m, i}I(y_i=G_m(x_i))+e^{\alpha_m}\sum_{i=1}^Nw_{m, i}I(y_i\not=G_m(x_i))\\ &=&e^{-\alpha_m}(1-e_m)+e^{\alpha_m}e_m\\ &=&e^{-\frac{1}{2}log\frac{1-e_m}{e_m}}(1-e_m)+e^{\frac{1}{2}log\frac{1-e_m}{e_m}}e_m\\ &=& 2\sqrt{e_m(1-e_m)} \end{array} Zm​​======​∑i=1N​wm,i​e−αm​yi​Gm​(xi​)∑i=1N​wm,i​e−αm​I(yi​=Gm​(xi​))+∑i=1N​wm,i​eαm​I(yi​​=Gm​(xi​))e−αm​∑i=1N​wm,i​I(yi​=Gm​(xi​))+eαm​∑i=1N​wm,i​I(yi​​=Gm​(xi​))e−αm​(1−em​)+eαm​em​e−21​logem​1−em​​(1−em​)+e21​logem​1−em​​em​2em​(1−em​)​​

对于表达式 2em(1−em)2\sqrt{e_m(1-e_m)}2em​(1−em​)​,我们有 2em(1−em)≤12\sqrt{e_m(1-e_m)}\le 12em​(1−em​)​≤1,且等号严格在 em=12e_m=\frac{1}{2}em​=21​ 处取得。实际上,对于每次迭代后的弱分类器,它的分类效果应该略强于随机猜测的效果,也就是错误分类率 em<12e_m<\frac{1}{2}em​<21​。因此,2em(1−em)<12\sqrt{e_m(1-e_m)}<12em​(1−em​)​<1,也就意味着 Zm<1Z_m<1Zm​<1。

在 MMM 次迭代中,我们令 Zˉ=max⁡{Z1,Z2,...,ZM}\bar Z=\max\{Z_1, Z_2, ..., Z_M\}Zˉ=max{Z1​,Z2​,...,ZM​},此时,我们依然有 Zˉ<1\bar Z<1Zˉ<1。因此,Πm=1MZm≤ZˉM\Pi_{m=1}^MZ_m\le\bar Z^MΠm=1M​Zm​≤ZˉM

显然,上界 ZˉM\bar Z^MZˉM,也就是训练误差上界是以指数速度下降的。这样,随着迭代次数的增加,我们总是可以得到一个训练误差满足条件的强分类器。

《推荐系统笔记(三)》Adaboost算法 —— 弱分类器组合成强分类器的方法相关推荐

  1. 2018-3-22论文一种新型的智能算法--狼群算法(笔记三)算法的步骤+收敛性分析

    首先整体的系统: 来源:[图文]狼群智能算法简述_百度文库 https://wenku.baidu.com/view/e4f45d6c04a1b0717fd5ddaf.html 算法的步骤: 公式:上 ...

  2. FNN算法推荐系统:通过FNN算法进行特征组合的商品推荐

    案例知识点 推荐系统任务描述:通过用户的历史行为(比如浏览记录.购买记录等等)准确的预测出用户未来的行为:好的推荐系统不仅如此,而且能够拓展用户的视野,帮助他们发现可能感兴趣的却不容易发现的item: ...

  3. 学习笔记(三) 线性回归算法(Linear Regression)

    一.算法简介 代码下载:https://download.csdn.net/download/xdg2008/14017829 1.1 什么是回归分析 回归分析是一种预测性的建模技术,它研究的是因变量 ...

  4. 推荐系统笔记(其它应用算法)

    思维导图:

  5. 【Spring Data JPA自学笔记三】Spring Data JPA的基础和高级查询方法

    文章目录 调用接口的基础方法查询 Repository CrudRepository PagingAndSortingRepository JPARepository JpaSpecification ...

  6. Adaboost 算法的原理与推导

    Adaboost 算法的原理与推导 0 引言 一直想写Adaboost来着,但迟迟未能动笔.其算法思想虽然简单:听取多人意见,最后综合决策,但一般书上对其算法的流程描述实在是过于晦涩.昨日11月1日下 ...

  7. Adaboost 算法的原理与推导(转载)

    0 引言 一直想写Adaboost来着,但迟迟未能动笔.其算法思想虽然简单:听取多人意见,最后综合决策,但一般书上对其算法的流程描述实在是过于晦涩.昨日11月1日下午,在我组织的机器学习班 第8次课上 ...

  8. Adaboost 算法的原理与推导(JUly)

    Adaboost 算法的原理与推导 0 引言 一直想写Adaboost来着,但迟迟未能动笔.其算法思想虽然简单:听取多人意见,最后综合决策,但一般书上对其算法的流程描述实在是过于晦涩.昨日11月1日下 ...

  9. adaboost算法java_Adaboost 算法实例解析

    Adaboost 算法实例解析 1 Adaboost的原理 1.1 Adaboost基本介绍 AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由 ...

最新文章

  1. EF code First数据迁移学习笔记
  2. LeetCode 78 子集 中等难度
  3. sdut 3363 驴友计划
  4. Redis 基本操作一
  5. 区块链在阿里巴巴天猫中的应用
  6. 策略模式示例代码_策略设计模式示例
  7. Java中的NIO非阻塞编程
  8. Cookie字符串转Map集合方法
  9. mysql无法连接10061_Day062 连接数据库异常问题记录
  10. ClearCase的一些基本概念
  11. html音乐歌词同步,html歌词同步代码
  12. 安卓软件开发面试题!五年Android开发者小米、阿里面经,小白也能看明白
  13. axure 折线图部件_Axure教程:折线图
  14. 小白入门指南|zookeeper快速入门
  15. 激活win10专业版
  16. 相关搜索 --- 搜索中的推荐
  17. 聚焦时代起点 智启云上未来——IMPACT2018紫光云峰会在津举办
  18. JAVA 用户登录图形验证码
  19. 大数据时代,我们需要“被遗忘权”(转)
  20. 【TouchDesigner】Feedback的应用NO.3

热门文章

  1. 一键刷入twrp工具_OPPORealme X 刷入原生lineage16-AOSP纯净系统完美ROOT 刷机必备
  2. 渗透实例:The Game Of Bob_1.0.1
  3. Numpy高级操作大全!!!
  4. 数学式子中arg min,arg max的含义
  5. MTCNN——基于级联模型的人脸关键点检测网络
  6. Idea导出可运行Jar包
  7. C#将Access数据库导出为JSON
  8. Python:[-1]、[:-1]、[::-1]、[n::-1] 原理大详解(超全超仔细!)
  9. 分析“HTTP500内部服务器错误”解决方法
  10. Windows7下caffe-ssd-microsoft下编译