《推荐系统笔记(三)》Adaboost算法 —— 弱分类器组合成强分类器的方法
前言
我们将介绍将弱分类器组合成强分类器的算法,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},则
- 误分类率 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=1Nwm,iI(yi=Gm(xi))
- 根据弱学习算法(比如最小化误分类率),确定弱分类器 Gm(x)G_m(x)Gm(x)
- 计算正确分类几率 αm=12log1−emem\alpha_m=\frac{1}{2}log\frac{1-e_m}{e_m}αm=21logem1−em
- 更新第 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=Zmwm,ie−αmyiGm(xi) 其中,Zm=∑i=1Nwm,ie−αmyiGm(xi)Z_m=\sum_{i=1}^Nw_{m, i}e^{-\alpha_my_iG_m(x_i)}Zm=∑i=1Nwm,ie−αmyiGm(xi)
(3)弱分类器的线性组合为
f(x)=∑m=1MαmGm(x)f(x)=\sum_{m=1}^M\alpha_mG_m(x)f(x)=m=1∑MαmGm(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=1NI(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=1NI(yi=G(xi))N1∑i=1NI(yi=sign(f(xi)))N1∑i=1NI(−yif(xi)≥0)N1∑i=1Ne−yif(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=1Ne−yif(xi)=Πm=1MZm。具体的,我们有
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=1Ne−yif(xi)N1∑i=1Ne−∑m=1MαmyiGm(xi)N1∑i=1NΠm=1Me−αmyiGm(xi)∑i=1NN1Π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
最后,我们得到,训练误差有上界,即
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_mN1i=1∑NI(yi=G(xi))≤Πm=1MZm
2.2 重写训练误差上界
训练误差的上界 Πm=1MZm\Pi_{m=1}^MZ_mΠm=1MZm 看起来并不直观,因此,我们需要重新写出一个上界。
考虑到 yiy_iyi 与 Gm(xi)G_m(x_i)Gm(xi) 的值域为 {−1,+1}\{-1, +1\}{−1,+1},且如果 yiGm(xi)=−1y_iG_m(x_i)=-1yiGm(xi)=−1,则分类器 Gm(xi)G_m(x_i)Gm(xi) 分类错误;如果yiGm(xi)=1y_iG_m(x_i)=1yiGm(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=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αmeme−21logem1−em(1−em)+e21logem1−emem2em(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=1MZm≤ZˉM
显然,上界 ZˉM\bar Z^MZˉM,也就是训练误差上界是以指数速度下降的。这样,随着迭代次数的增加,我们总是可以得到一个训练误差满足条件的强分类器。
《推荐系统笔记(三)》Adaboost算法 —— 弱分类器组合成强分类器的方法相关推荐
- 2018-3-22论文一种新型的智能算法--狼群算法(笔记三)算法的步骤+收敛性分析
首先整体的系统: 来源:[图文]狼群智能算法简述_百度文库 https://wenku.baidu.com/view/e4f45d6c04a1b0717fd5ddaf.html 算法的步骤: 公式:上 ...
- FNN算法推荐系统:通过FNN算法进行特征组合的商品推荐
案例知识点 推荐系统任务描述:通过用户的历史行为(比如浏览记录.购买记录等等)准确的预测出用户未来的行为:好的推荐系统不仅如此,而且能够拓展用户的视野,帮助他们发现可能感兴趣的却不容易发现的item: ...
- 学习笔记(三) 线性回归算法(Linear Regression)
一.算法简介 代码下载:https://download.csdn.net/download/xdg2008/14017829 1.1 什么是回归分析 回归分析是一种预测性的建模技术,它研究的是因变量 ...
- 推荐系统笔记(其它应用算法)
思维导图:
- 【Spring Data JPA自学笔记三】Spring Data JPA的基础和高级查询方法
文章目录 调用接口的基础方法查询 Repository CrudRepository PagingAndSortingRepository JPARepository JpaSpecification ...
- Adaboost 算法的原理与推导
Adaboost 算法的原理与推导 0 引言 一直想写Adaboost来着,但迟迟未能动笔.其算法思想虽然简单:听取多人意见,最后综合决策,但一般书上对其算法的流程描述实在是过于晦涩.昨日11月1日下 ...
- Adaboost 算法的原理与推导(转载)
0 引言 一直想写Adaboost来着,但迟迟未能动笔.其算法思想虽然简单:听取多人意见,最后综合决策,但一般书上对其算法的流程描述实在是过于晦涩.昨日11月1日下午,在我组织的机器学习班 第8次课上 ...
- Adaboost 算法的原理与推导(JUly)
Adaboost 算法的原理与推导 0 引言 一直想写Adaboost来着,但迟迟未能动笔.其算法思想虽然简单:听取多人意见,最后综合决策,但一般书上对其算法的流程描述实在是过于晦涩.昨日11月1日下 ...
- adaboost算法java_Adaboost 算法实例解析
Adaboost 算法实例解析 1 Adaboost的原理 1.1 Adaboost基本介绍 AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由 ...
最新文章
- EF code First数据迁移学习笔记
- LeetCode 78 子集 中等难度
- sdut 3363 驴友计划
- Redis 基本操作一
- 区块链在阿里巴巴天猫中的应用
- 策略模式示例代码_策略设计模式示例
- Java中的NIO非阻塞编程
- Cookie字符串转Map集合方法
- mysql无法连接10061_Day062 连接数据库异常问题记录
- ClearCase的一些基本概念
- html音乐歌词同步,html歌词同步代码
- 安卓软件开发面试题!五年Android开发者小米、阿里面经,小白也能看明白
- axure 折线图部件_Axure教程:折线图
- 小白入门指南|zookeeper快速入门
- 激活win10专业版
- 相关搜索 --- 搜索中的推荐
- 聚焦时代起点 智启云上未来——IMPACT2018紫光云峰会在津举办
- JAVA 用户登录图形验证码
- 大数据时代,我们需要“被遗忘权”(转)
- 【TouchDesigner】Feedback的应用NO.3
热门文章
- 一键刷入twrp工具_OPPORealme X 刷入原生lineage16-AOSP纯净系统完美ROOT 刷机必备
- 渗透实例:The Game Of Bob_1.0.1
- Numpy高级操作大全!!!
- 数学式子中arg min,arg max的含义
- MTCNN——基于级联模型的人脸关键点检测网络
- Idea导出可运行Jar包
- C#将Access数据库导出为JSON
- Python:[-1]、[:-1]、[::-1]、[n::-1] 原理大详解(超全超仔细!)
- 分析“HTTP500内部服务器错误”解决方法
- Windows7下caffe-ssd-microsoft下编译