【机器学习】集成学习之boosting AdaBoost
Boosting
Boosting策略在上一篇中有提到过,这里再说一遍。
Boosting策略的核心思想就是对错误分类的样本投入更大的关注。采用的是加法模型和向前分步算法,向前分步算法中的每一步都会改变样本的权重。
模型是加法模型、损失函数为指数函数、学习算法为前向分步算法的二类分类学习方法
一、AdaBoost简介
Boosting, 也称为增强学习或提升法,是一种重要的集成学习技术, 能够将预测精度仅比随机猜度略高的弱学习器增强为预测精度高的强学习器,这在直接构造强学习器非常困难的情况下,为学习算法的设计提供了一种有效的新思路和新方法。其中最为成功应用的是,Yoav Freund和Robert Schapire在1995年提出的AdaBoost算法。
AdaBoost是英文"Adaptive Boosting"(自适应增强)的缩写,它的自适应在于:前一个基本分类器被错误分类的样本的权值会增大,而正确分类的样本的权值会减小,并再次用来训练下一个基本分类器。同时,在每一轮迭代中,加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数才确定最终的强分类器。
弱分类器:
什么是弱分类器,只比随机猜测好一点点的分类器叫弱分类器。就比如一个强分类器来判断这是一只猫还是一只狗,它可能会给出,这张图片有0.99的概率为狗。那么弱分类器就只能够说这张图片有0.55的概率是狗。只比随机猜测要好一点点。
弱分类器的优势是什么?弱分类器的特性就是high-bias & low variance(高偏差-低方差),其与生俱来的优点就是泛化性能好。因此,将多个算法组合起来之后,可以达到降偏差的效果,进而得到一个偏差小、方差小的泛化能力好的模型。
所以说Boosting与bagging很大不同的一点就是,boosting是通过集成模型来降低偏差,而bagging是通过集成模型来降低方差。
常用的弱分类器像决策树桩,ID3,C4.5,CART因为决策树很容易过拟合,所以说用这些树模型的时候一定要预剪枝限制深度等或者后剪枝,总之要低方差,偏差高无所谓。
Adaboost算法流程:
- 初始化强分类器,样本权重初始化为
- 构建最小化误差的基分类器(决策树桩,ID3,C4.5,CART)
- 计算错分率,计算表决系数
- 更新权重(Z为归一化因子,其实就是所有的和)
- 更新强分类器
- 重复2-5步骤,直到错分率小于一定阈值或者迭代达到一定步数。
- 得到最终的分类器,(sign符号函数,>0为1,<0为-1)
另一种符号表示的
的推导 训练误差界
最终得到的分类器是,如果,有,则,如果,有,则,那么有下式
(1)
简单说就是不想等的时候左边为1,右边>=1。想等的时候左边为0,右边>=0.
再根据权值的更新公式,变下型
有
接下来就可以开始正式的推导了。
(1)式右端项有
公式编辑器好蛋疼。直接上图吧,符号有一点不一样。
因此可以得出,Adaboost的误差界为
它的就是我这里的
权值更新也可以重新推导,不再需要去复杂的计算。缩放就可以得到下一步迭代的新的权重。
戏称为Thank God Hole
AdaBoost应到到多分类场景
- 最简单的方法就是One Vs One 或者One Vs All
- 或者也可以用softmax
- 也有针对多分类的Adaboost模型如Adaboost M1,Adaboost M2,Adaboost MH,Adaboost MR
M1,M2:https://blog.csdn.net/tyh70537/article/details/76675098
掌握上面这些推导理论基本上算是稳了。接下来讲一下adaboost的优缺点和应用场景。
Adaboost的回归算法
Adaboost R2:
其实大体的思路与分类算法一样,就是一些系数的计算更新公式变了,多分类也是这样的。
二分类的一个实例
https://blog.csdn.net/hffhjh111/article/details/72348378
优缺点和应用场景
优点
- 用于二分类或多分类的应用场景
- 在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。
- 无脑化,简单,不会overfitting,不用调分类器
- 泛化错误率低,精度高,可应用在大部分分类器上,无需调整参数
- 用于特征选择(feature selection)
缺点
- AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。
- 数据不平衡导致分类精度下降。
- 训练比较耗时,每次重新选择当前分类器最好切分点。
- 对离群点敏感
- 在Adaboost训练过程中,Adaboost会使得难于分类样本的权值呈指数增长,训练将会过于偏向这类困难的样本,导致Adaboost算法易受噪声干扰
参考:http://www.csuldw.com/2016/08/28/2016-08-28-adaboost-algorithm-theory/
【机器学习】集成学习之boosting AdaBoost相关推荐
- 机器学习--集成学习--Bagging,Boosting,Stacking
在一些数据挖掘竞赛中,后期我们需要对多个模型进行融合以提高效果时,常常会用到Bagging,Boosting,Stacking等这几个框架算法.下面就来分别详细讲述这三个框架算法.这里我们只做原理上的 ...
- 机器学习——集成学习算法(Adaboost、随机森林)
集成算法简述 什么是集成学习 如何得到多个个体学习器 集成学习常用算法 Bagging 自助采样 学习器结合 包外估计 随机森林 Adaboost Boosting Adaboost算法原理 注意 什 ...
- 机器学习 集成学习篇——python实现Bagging和AdaBOOST算法
机器学习 集成学习篇--python实现Bagging和AdaBOOST算法 摘要 Bagging算法 Adaboost算法 摘要 本文通过python实现了集成学习中的Bagging和AdaBOOS ...
- 机器学习实战-54: 集成学习分类算法(ada-boost)
集成学习分类算法 深度学习原理与实践(开源图书)-总目录,建议收藏,告别碎片阅读! 集成学习分类算法(ada-boost)属于监督学习算法.常用分类算法包括:逻辑回归(Logistic Regress ...
- 集成学习之Boosting
集成学习之Boosting 1.boosting集成原理 1.1 什么是boosting 随着学习的积累从弱到强 简而言之:每新加入一个弱学习器,整体能力就会得到提升 代表算法:Adaboost,GB ...
- 机器学习集成学习算法
目录 1 集成学习算法简介 1.1 什么是集成学习 1.2 机器学习的两个核心任务 1.3 集成学习中boosting和Bagging 1.4 小结 2 Bagging和随机森林 2.1 Baggin ...
- 机器学习 - [集成学习]Bagging算法的编程实现
机器学习 - [集成学习] Bagging算法的编程实现 李俊才 的 CSDN 博客:https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343 ...
- 深入理解机器学习——集成学习(二):提升法Boosting与Adaboost算法
分类目录:<深入理解机器学习>总目录 Boosting是一族可将弱学习器提升为强学习器的算法.这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进 ...
- 机器学习集成学习-BOOSTING与BAGGING
集成算法(Emseble Learning) 是构建多个学习器,然后通过一定策略结合把它们来完成学习任务的,常常可以获得比单一学习显著优越的学习器. 用于减少方差的bagging 用于减少偏差的boo ...
最新文章
- 分布式锁,进程锁,线程锁到底是什么
- IOS7新增120*120Icon图标
- springboot 源码_springboot框架源码分享
- dataset转换json格式
- python html格式编码
- r语言随机森林回归预测_从零实现回归随机森林
- oracle互换2条记录,ORACLE中确定表里哪些行是彼此互换的
- oracle,mysql常用基本操作 字段属性
- Log4j框架配置文件log4j.properties配置使用详解
- CSS颜色渐变的按钮样式
- 通过periodic_task.periodic_task 实现周期性任务的原理
- GATK教程 / 体细胞短变异检测 (SNV+InDel)流程概览
- 大数据与云计算技术周报(第148期)
- LightOJ1197 Help Hanzo 区间筛
- 浮动(Floats)原理与清除浮动
- python for循环加速_干货总结,24招加速你的Python代码,值得收藏
- 利用JS实现的网页赛车小游戏
- spss入门——简单的数据预处理到时间序列分析系列(二)
- 堕落之后重新开始学习
- 你知道在Java 中常被提的 SPI 到底是什么吗?
热门文章
- Vscode----热门插件超实用插件汇总(史上最全)
- 计算机网络管理员适用单位,计算机网络管理员软考理论复习题(附答案).(40页)-原创力文档...
- jdk 中英对照 百度网盘_Hadoop部署一jdk与MySQL
- 计算机有什么知识,计算机基础知识有什么
- 旁瓣对消原理_雷达天线旁瓣对消技术
- excel怎么把单元格内某个字标红,其他字不变
- cocos2dx之lua项目开发中MVC框架的简单应用
- COALESCE操作符
- zookeeper leader选举机制
- Ant远程部署到Tomcat