Boosting(一)
文章目录
- 前言
- 一、AdaBoost算法
- 1.Boosting的基本思路
- 2.AdaBoost算法的思路
- 二、AdaBoost算法的具体流程
- 1.算法的具体流程
- 总结
- 参考资料
前言
Boosting是一种常用的机器学习方法,应用广泛且有效。在分类问题中,它通过改变训练样本的权重学习多个分类器,并将这些分类器进行线性组合,提高分类的性能。常见的Boosting算法有AdaBoosting算法,本节就主要介绍AdaBoosting算法。
一、AdaBoost算法
1.Boosting的基本思路
Boosting基于这样一种思想:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断要比其中任何一个专家单独的判断好。实际上,就是“三个臭皮匠顶个诸葛亮”的道理
下面先给出弱可学习算法和强可学习算法的概念。
- 弱可学习算法:对于一个概念(一个类),如果存在一个学习算法能够学习它,学习的正确率仅比随机猜测略好,那么称这个概念是弱可学习的。
- 强可学习算法:如果存在一个学习算法能够学习它,并且正确率很高,那么就称这个概念是强可学习的。
这样以来,在学习中,如果已经发现了“弱学习算法”,那么能否将它提升(boost)为“强学习算法”。关于Boosting的研究有很多,最具代表性的是AdaBoost算法。
2.AdaBoost算法的思路
对于分类问题,给定一个训练样本集,求弱分类器要比强分类器容易得多。Boosting从弱学习算法出发,反复学习,得到一系列弱分类器(又称为基本分类器),然后组合这些弱分类器,构成一个强分类器。大多数的Boosting算法都是改变训练数据的概率分布(训练数据的权值分布),针对不同的训练数据分布调用弱学习算法学习一系列弱分类器。
这样,对于Boosting来说,存在两个问题:
- 在每一轮如何改变训练数据的权值分布或概率分布?
- 如何将弱分类器组合成一个强分类器?
Adaboosting的做法如下:
- 针对问题1,它提高那些被前一轮若分类器错误分类样本的权值,而降低那些被正确分类样本的权值。
- 针对问题2,它采用加权多数表决的方法。具体地,加大分类误差率小的若分类器的权值,使其在表决中起较大的作用;减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。
二、AdaBoost算法的具体流程
1.算法的具体流程
输入:一个二类分类的训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} T={(x1,y1),(x2,y2),⋯,(xN,yN)}, y i = { − 1 , + 1 } y_i=\{-1,+1\} yi={−1,+1};弱学习算法。
输出:最终分类器 G ( x ) G(x) G(x)。
- 初始化训练数据的权值分布
D 1 = ( w 11 , ⋯ , w 1 i , ⋯ , w 1 N ) , w 1 i = 1 N , i = 1 , 2 , ⋯ , N D_1=(w_{11},\cdots,w_{1i},\cdots,w_{1N}),w_{1i}=\frac{1}{N},i=1,2,\cdots,N D1=(w11,⋯,w1i,⋯,w1N),w1i=N1,i=1,2,⋯,N - 对 m = 1 , 2 , ⋯ , M m=1,2,\cdots,M m=1,2,⋯,M( m m m为弱分类器的个数)
a. 使用具有权值分布 D m D_m Dm的训练数据集学习,得到基本分类器:
G m ( x ) : χ → { − 1 , + 1 } G_m(x):\chi \rightarrow\{-1,+1\} Gm(x):χ→{−1,+1}
b.计算 G m ( x ) G_m(x) Gm(x)在训练数据集上的分类误差率:
e m = ∑ i = 1 N w m i I ( G m ( x i ) ≠ y i ) e_m=\sum_{i=1}^{N}w_{mi}I(G_m(x_i)\ne y_i) em=i=1∑NwmiI(Gm(xi)=yi)
c.计算 G m ( x ) G_m(x) Gm(x)的系数:
α m = 1 2 ln 1 − e m e m \alpha_m=\frac{1}{2}\ln\frac{1-e_m}{e_m} αm=21lnem1−em
d.更新训练数据集的权值分布:
D m + 1 = ( w m + 1 , 1 , ⋯ , w m + 1 , i , ⋯ , w m + 1 , N ) D_{m+1}=(w_{m+1,1},\cdots,w_{m+1,i},\cdots,w_{m+1,N}) Dm+1=(wm+1,1,⋯,wm+1,i,⋯,wm+1,N)
w m + 1 , i = w m i Z m e − α m y i G m ( x i ) , i = 1 , 2 , ⋯ , N w_{m+1,i}=\frac{w_{mi}}{Z_m}e^{-\alpha_my_iG_m(x_i)},i=1,2,\cdots,N wm+1,i=Zmwmie−αmyiGm(xi),i=1,2,⋯,N
上式也可以写为:
w m + 1 , i = { w m i Z m e − α m G m ( x i ) = y i w m i Z m e α m G m ( x i ) ≠ y i w_{m+1,i} = \begin{cases} \frac{w_{mi}}{Z_m}e^{-\alpha_m} &G_m(x_i)=y_i \\ \frac{w_{mi}}{Z_m}e^{\alpha_m}&G_m(x_i)\neq y_i \end{cases} wm+1,i={Zmwmie−αmZmwmieαmGm(xi)=yiGm(xi)=yi
这里, Z m Z_m Zm是规范化因子,且
Z m = ∑ i = 1 N w m i e − α m y i G m ( x i ) Z_m=\sum_{i=1}^{N}w_{mi}e^{-\alpha_my_iG_m(x_i)} Zm=i=1∑Nwmie−αmyiGm(xi)
它使 D M + 1 D_{M+1} DM+1成为一个概率分布。 - 构建基本分类器的线性组合
f ( x ) = ∑ m = 1 M α m G m ( x ) f(x)=\sum_{m=1}^{M}\alpha_mG_m(x) f(x)=m=1∑MαmGm(x)
得到最终分类器:
G ( x ) = s i g n ( f ( x ) ) G(x)=sign(f(x)) G(x)=sign(f(x))
总结
本节我们介绍了Boosting算法的思想,并介绍了Boosting算法中最具有代表性的算法AdaBoost,下一节我们介绍提升树,提升树是以分类树或回归树为基本分类器的Boosting。提升树被认为是机器学习中性能最好的方法之一。
参考资料
机器学习方法.李航.
Boosting(一)相关推荐
- 人工智能AI Boosting HMC Memory Chip
人工智能AI Boosting HMC Memory Chip Innosilicon的AI Boosting HMC存储芯片适用于高速,高带宽和高性能存储领域,例如AI边缘,数据中心,自动化等. H ...
- 有关GBDT(Gradient Boosting Decison Tree,梯度提升树)
集成学习有两大家族,Bagging家族与Boosting家族:相同家族的算法,思想有类似之处,例如Bagging家族主要并行思想,典型代表:随机森林:Boosting家族主要是串行思想,主要代表有Ad ...
- 04 集成学习 - Boosting - AdaBoost算法构建
03 集成学习 - Boosting - AdaBoost算法原理 十.AdaBoost算法构建 上一章最后说明了每个基模型的权值α是如何求得的,于是我就可以对模型进行更新操作了. 构建过程一 1.假 ...
- 流行于机器学习竞赛的Boosting,这篇文章讲的非常全了
作者 | AISHWARYA SINGH 译者 | 武明利,责编 | Carol 出品 | AI科技大本营(ID:rgznai100) 你能说出至少两种机器学习中的 Boosting 吗? Boost ...
- 数据挖掘终篇!一文学习模型融合!从加权融合到stacking, boosting
Datawhale 作者:田杨军 ,Datawhale优秀学习者 摘要:对于数据挖掘项目,本文将学习如何进行模型融合?常见的模型融合的方法有哪些?针对不同的问题类型,应该选择哪种方法呢? 模型融合:通 ...
- 集成学习之Boosting
集成学习之Boosting 1.boosting集成原理 1.1 什么是boosting 随着学习的积累从弱到强 简而言之:每新加入一个弱学习器,整体能力就会得到提升 代表算法:Adaboost,GB ...
- 机器学习中Bagging和Boosting的区别
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 Bagging和Boosting都是将已有的分类或回归算法通过一定 ...
- 集成学习Bagging和Boosting算法总结
一.集成学习综述 1.集成方法或元算法是对其他算法进行组合的一种方式,下面的博客中主要关注的是AdaBoost元算法.将不同的分类器组合起来,而这种组合结果被称为集成方法/元算法.使用集成算法时会有很 ...
- R语言使用caret包构建gbdt模型(随机梯度提升树、Stochastic Gradient Boosting )构建回归模型、通过method参数指定算法名称
R语言使用caret包构建gbdt模型(随机梯度提升树.Stochastic Gradient Boosting )构建回归模型.通过method参数指定算法名称 目录
- Boosting、Adaboost、AdaBoost模型的优缺点、提升树、梯度提升树GBDT
Boosting.Adaboost.AdaBoost模型的优缺点.提升树.梯度提升树GBDT 目录 Boosting.Adaboost.AdaBoost模型的优缺点.提升树.梯度提升树GBDT Boo ...
最新文章
- mysql下载地址与安装
- AI领域的人才短缺,原因是什么?该如何解决?
- java通过url读取远程数据并保持到本地
- bzoj2002Bounce 弹飞绵羊
- 征战蓝桥 —— 2018年第九届 —— C/C++B组第1题——第几天
- 你知道JVM内存的那些事吗?
- [密码学基础][每个信息安全博士生应该知道的52件事]52.先进的应用概念 系统的大致安全需求
- matlab数组平方的计算自定义函数_从零开始的matlab学习笔记——(38)简单数论计算函数:取整,gcd,lcm,质数,全排列...
- ESP32 TIMER
- VISIO科学图形包-亲测VISIO2013可用,应该适用其他高级版本
- uni-app实现问卷调查试卷
- pyqt5 设置按钮圆角
- 跳棋编程c语言代码,跳棋游戏C语言程序设计(数据结构课程设计).doc
- 基于TBtools做基因家族分析教程 (全)
- 用MindMaster绘制思维导图
- 2017华为算法大赛总结
- node文件系统 常用文件处理方法
- 【STM32F4系列】【HAL库】【自制库】WS2812控制(软件部分)
- 1~100以内的所有素数
- Django数据库连接池(mysql)
热门文章
- C语言中的strcat()函数
- Unknown column 'JOIN.id' in 'order clause'和 Unknown column 'XXXX.id' in 'order clause'的解决办法
- 关于留言簿的补充说明
- 交换机开发(一)—— 交换机的工作原理
- 南京工业大学计算机考研难吗,南京工业大学(专业学位)计算机技术考研难吗
- android studio 中小米系列手机布局问题
- C++ VS2019 缓存区溢出和读取数据无效的警告
- Python-random函数用法
- 多维分析,为什么企业开始大规模应用商业智能(BI)
- 弘辽科技:学会正确竞品分析,与同行竞争对手抢流量