Adaboost 中文名叫自适应提升算法,是一种boosting算法。

boosting算法的基本思想

对于一个复杂任务来说,单个专家的决策过于片面,需要集合多个专家的决策得到最终的决策,通俗讲就是三个臭皮匠顶个诸葛亮。

对于给定的数据集,学习到一个较弱的分类器比学习到一个强分类器容易的多,boosting就是从弱学习器出发,反复学习,得到多个弱分类器,最后将这些弱分类器组合成强分类器。

boosting算法需要解决两个问题

每一轮如何改变训练样本的权重

如何将弱分类器组合成强分类器

adaboost是这样做的

1. 提高那些被前一轮弱分类器错误分类的样本的权值,而降低那些被正确分类样本的权值.,这样下个分类器就能专注于那些不好识别的样本,针对性的建立分类器。

2. 对于若分类器的组合,adaboost采取加权多数表决的方式,即加大分类错误率较小的弱分类器的权值,使其在表决中起较大作用,减小分类错误率较高的弱分类器的权值,使其在表决中起较小作用,

这可以理解为有些专家比较权威,他的意见要多采纳,有些只是不知名的专家,可以少采纳。

adaboost其实是一个加法模型,损失函数是指数损失函数,学习算法为前向分步算法的二分类学习方法。(其他学习算法如梯度下降)

加法模型

xgboost中其实也是加法模型,应该说boosting算法都是加法模型,而且还有很多算法也是加法模型,那什么是加法模型?

顾名思义,一个模型是由多个模型相加而得

那最终问题转化为基于加法模型的损失最小化,即

通常这是一个十分复杂的优化问题,想要一步到位非常困难,如用梯度下降,所以就有了前向分步算法。

前向分步算法

前向分步算法是一种优化算法,可以解决上面加法模型的问题。

大致思路是,从前向后,每一步学习一个基分类器,使得整体损失函数更小一点,从而逐步逼近全局最小值。

算法流程

解释一点: 新的学习器fm是在上个学习器fm-1的基础上学习的,也就是说在学习fm时fm-1已经确定,所以求L(y, fm)的极小值就是求b(x;r)的极小值,即单个学习器的最小值。

实际上这和梯度下降的思路十分相似,每次减小一点,逼近一点,而且形式也一样 fm=fm-1+βb

adaboost算法流程

 

误差解释

1. 误差计算时除以了Σw,因为每轮迭代时,Σw是一个固定值,而且后面会说明其实它等于1,所以不用除这个。

2. 误差计算时,分类正确为0,其权重被忽略,分类错误为1,其权重累加,所以是I(G!=y)

分类器权重解释

权重更新解释

组合分类器解释

sign函数只能取1和-1,故adaboost为二分类。

当然可以通过修改实现多分类。

adaboost有很多种算法,但都大同小异,而且adaboost可以做回归,思路也是大同小异,具体请百度

adaboost进阶

正则化

adaboost每个学习器都是弱学习器,为什么还要正则化?其实不是正则化基学习器

fm=fm-1+αb(x,r),这是加法模型,α为基学习器的系数,可以理解为权重,

正则化是对加法模型增加一个学习率v,即fm=fm-1+vαb(x,r),这种方法适合于很多集成学习。

基分类器随机化

像随机森林一样,随机选特征,随机选样本

总结

理论上来讲,adaboost的弱学习器可以是任何模型,但用的最多的是决策树和神经网络,决策树是cart树

优点:精度高,不容易过拟合

缺点:对异常值敏感,因为异常值可能获得较大权重,最终影响整个模型

参考资料:

https://www.cnblogs.com/liuwu265/p/4693113.html?ptvd

https://zhuanlan.zhihu.com/p/59751960

https://zhuanlan.zhihu.com/p/42915999

https://blog.csdn.net/hahaha_2017/article/details/79852363

https://blog.csdn.net/guyuealian/article/details/70995333  原理-实例-代码(简明易懂)

集成学习-Adaboost的更多相关文章

  1. 吴裕雄 python 机器学习——集成学习AdaBoost算法回归模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  2. 吴裕雄 python 机器学习——集成学习AdaBoost算法分类模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  3. 机器学习算法总结(三)——集成学习(Adaboost、RandomForest)

    1.集成学习概述 集成学习算法可以说是现在最火爆的机器学习算法,参加过Kaggle比赛的同学应该都领略过集成算法的强大.集成算法本身不是一个单独的机器学习算法,而是通过将基于其他的机器学习算法构建多个 ...

  4. 集成学习AdaBoost算法——学习笔记

    集成学习 个体学习器1 个体学习器2 个体学习器3   ——> 结合模块  ——>输出(更好的) ... 个体学习器n 通常,类似求平均值,比最差的能好一些,但是会比最好的差. 集成可能提 ...

  5. 集成学习-Adaboost 进阶

    adaboost 的思想很简单,算法流程也很简单,但它背后有完整的理论支撑,也有很多扩展. 权重更新 在算法描述中,权重如是更新 其中 wm,i 是m轮样本i的权重,αm是错误率,Øm是第m个基学习器 ...

  6. 集成学习——Adaboost(手推公式)

  7. 集成学习之Adaboost算法原理小结

    在集成学习原理小结中,我们讲到了集成学习按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,另一类是个体学习器之间不存在强依赖关系.前者的代表算法就是是boostin ...

  8. 集成学习原理:Adaboost

    集成学习通过从大量的特征中挑出最优的特征,并将其转化为对应的弱分类器进行分类使用,从而达到对目标进行分类的目的. 核心思想 它是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器), ...

  9. 集成学习之Boosting —— AdaBoost原理

    集成学习大致可分为两大类:Bagging和Boosting.Bagging一般使用强学习器,其个体学习器之间不存在强依赖关系,容易并行.Boosting则使用弱分类器,其个体学习器之间存在强依赖关系, ...

随机推荐

  1. git 执行pull错误如何撤销

    比如你当前所在的空间是trunk,但是执行了git pull origin branches,这时需要回滚回去,可以用一下步骤: 1.运行git reflog命令查看你的历史变更记录,如下: 69fd ...

  2. 一款好用的JS时间日期插件layDate

    觉得这个插件很不错,使用起来也很方便,推荐使用 1.插件截图 2.插件配置 选择很多,配置也很简单,插件官网:https://www.layui.com/laydate/配置说得很明确,基本操作就是: ...

  3. ionic3 在windows环境下打包android 正式签名版APK

    生成签名文件keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore demo为 ...

  4. sql group by聚合函数

    如何让分组后count计算结果为0的记录也显示

  5. HDOJ-2039

    #include<iostream> #include<cstdio> using namespace std; int main(){ int m,flag; float x ...

  6. vue引用ionic4

    现在的Ionic4已经开始支持VUE和REACT了.个人之前开发用IONIC.现在用VUE开发还是想用IONIC.刚好 也是支持VUE了. 在vue的项目里安装ionic依赖 npm install ...

  7. Java使用RSA加密解密签名及校验

    RSA加密解密类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ...

  8. 【1】HTTP协议和Socket接口区别

    内容提要: 1.网络七层模型 2.什么是HTTP协议 3.什么是Socket接口 1.网络七层模型 第一层:物理层 为设备之间的信息提供传输提供可靠环境,那么这个环境是什么呢? 如:同轴电缆,插头,接 ...

  9. yml多环境配置

    配置独立各自的环境 注:如果需要修改环境测试,只需要修改spring: profiles: active: “环境名” spring: profiles: active: prd --- #开发环境配 ...

  10. 一位资深Java架构师的晋级心得

    架构师是什么? 是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物.一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清 ...