Adaboost的意义
Adaboost是广义上的提升方法(boosting method)的一个特例。广泛应用于人脸识别等领域。
它的基本思想是,“三个臭皮匠赛过诸葛亮”,即用多个弱分类器的线性加权,来得到一个强的分类器。弱分类器到底有多“弱”呢?在某些情境下,xi>v就是一个弱分类器,它只对输入特征的某一个维度做判断,真是够弱了。
首先,弱分类器是一个一个的学习的,而且,根据这些弱分类器的表现,配以不同的权重,表现好的弱分类器,权重就大一点,表现不好的弱分类器,权重就小一点。
其次,在每一次学习时,每个弱分类器其实处理的都是不一样的数据,what?因为在学习时,我们会给不同的样本配以不同的权重,若这个样本对于当前的弱分类器来说比较重要,权重就大一些,反之权重就小一些。
现在我们大概知道了,Adaboost就是通过不断调整样本权重,来学习不同的弱分类器,然后将这些弱分类器,按照它们各自的表现配以不同的权重,线性加权得到最终的分类器。看来,“权重”这个概念在Adaboost方法中显得非常重要。
具体的来说,在学习第一个弱分类器时,各样本的权重都是一样的,且加和为1。在我们学习到第一个弱分类器f1之后,计算f1的分类误差,注意,这里的分类误差是基于样本权重来计算的,然后我们根据这个分类误差,确定第一个弱分类器的权重。最后,我们需要根据当前弱分类器的分类结果,对样本权重进行调整。被正确分类的,权重调低,被错误分类的,权重调高。然后继续学习下一个弱分类器。
我们打一个比方,一群学生不服管教,校长从警官学校请来一批教员,依次给学生上课,每个教员都有自己的拿手绝活。第一个教员上完课之后,一部分学生变乖的,另一部分学生仍然不听话。于是第一个教员把不听话的学生列了一个名单,交给第二个教员,让他对这些“问题学生”格外关注,第二个教员教完后,首先,这些“问题学生”之中,有一部分变乖了,还有一部分仍然不听话,其次,之前的乖学生,也有一部分不服第二个教员,于是第二个教员把他所遇到的不听话的学生,又列了一个名单,交给了第三个教员。第三个教员拿到的名单,包含了两部分“问题学生”,一部分是仅不服第二个教员的,他们的名字用普通字体标识,另外一部分是前两个教员都不服的,他们的名字加粗显示。于是第三个教员就心中有数了,他给学生上课的时候,重点关注那些“问题学生”,尤其是对前两个教员都不服的“问题学生”。依次进行下去。最后,学期结束校长验收,当这批教员同时出现时,绝大多数学生都变成了听话的学生。
以上是Adaboost的通俗解释。我们看Adaboost算法细则时,经常会感到疑惑,为什么这个权重这样调整?为什么这个参数这样设置?看似巧妙,实际上背后有深刻的理论支撑。这个理论就是,可加性模型。可加性模型听起来高大上,但它的一个例子很亲民,就是决策树。
可加性模型可以这样表示 Fm = f1+f2+...+fm。其中fi表示一些弱分类器,我们把这些弱分类器线性组合起来,就能构成一个强分类器。但是,同时求解这些弱分类器,比较困难,因此我们通常采用前向分步算法。具体是,先求F1 = f1,在一定的损失函数下,确定f1,然后,求F2 = f1+f2,在一定的损失函数下,确定f2,依次类推。可以看出,我们每次都是在前一次学习的基础上,再学习下一个弱分类器。这里的f2,可以针对f1分错的样例进行纠错和补充,这一点是非常重要的,对比决策树,如果我们在父节点对样本的分类不够纯粹,可以在子节点进行修复和纠错,这一点上来看,决策树和可加性模型是同一个思路。事实上,可加性模型中,就有一种以决策树作为弱分类器的模型,称为提升树(boosting tree)。
对于可加性模型,我们再举一个回归树的例子。仍然假设Fm = f1+f2+...+fm,此时,我们用f2去拟合f1和y之间的残差,从而得到对y更准确的估计。这里仍然遵循了上面的思路,用后面的弱学习器对前面的弱学习器进行补充和纠错。
再回到Adaboost,如果我们把模型选作可加性模型,损失函数选作指数损失,算法选择前向分步算法,那么得到的就是Adaboost模型。
Adaboost的意义的更多相关文章
- 关于Adaboost——样本抽样的权值的实际意义
看这篇文章的前提:已经看了PRML中的Adaboost的算法流程 看懂下面的内容必须牢牢记住:Adaboost使用的误差函数是指数误差 文章主要目的:理解样本抽样的权值是为什么那样变化的. 得出的结论 ...
- scikit-learn Adaboost类库使用小结
在集成学习之Adaboost算法原理小结中,我们对Adaboost的算法原理做了一个总结.这里我们就从实用的角度对scikit-learn中Adaboost类库的使用做一个小结,重点对调参的注意事项做 ...
- PRML读书会第十四章 Combining Models(committees,Boosting,AdaBoost,决策树,条件混合模型)
主讲人 网神 (新浪微博: @豆角茄子麻酱凉面) 网神(66707180) 18:57:18 大家好,今天我们讲一下第14章combining models,这一章是联合模型,通过将多个模型以某种形式 ...
- 基于MATLAB的adaboost级联形式的人脸检测实现
很早之前就做过一些关于人脸检测和目标检测的课题,一直都没有好好总结出来,趁着这个机会,写个总结,希望所写的内容能给研究同类问题的博友一些见解和启发!!博客里面涉及的公式太繁琐了,直接截图了. 转载请注 ...
- 基于单决策树的AdaBoost
①起源:Boosting算法 Boosting算法的目的是每次基于全部数据集,通过使用同一种分类器不同的抽取参数方法(如决策树,每次都可以抽取不同的特征维度来剖分数据集) 训练一些不同弱分类器(单次分 ...
- 几种Boost算法的比较(Discrete AdaBoost, Real AdaBoost, LogitBoost, Gentle Adaboost)
关于boost算法 boost算法是基于PAC学习理论(probably approximately correct)而建立的一套集成学习算法(ensemble learning).其根本思想在于通过 ...
- adaboost算法
三 Adaboost 算法 AdaBoost 是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器.(很多博客里说的三个臭皮匠 ...
- 机器学习技法-AdaBoost元算法
课程地址:https://class.coursera.org/ntumltwo-002/lecture 重要!重要!重要~ 一.Adaptive Boosting 的动机 通过组合多个弱分类器(hy ...
- aggregation(2):adaptive Boosting (AdaBoost)
给你这些水果图片,告诉你哪些是苹果.那么现在,让你总结一下哪些是苹果? 1)苹果都是圆的.我们发现,有些苹果不是圆的.有些水果是圆的但不是苹果, 2)其中到这些违反"苹果都是圆的" ...
随机推荐
- ubuntu下双网卡桥接
1. 安装 brctl工具 sudo apt-get install bridge-utils 2. 添加桥 # brctl addbr br0 #创建桥接 br0 # brctl addif br0 ...
- Linux终端下 dstat 监控工具
dstat 是一个可以取代vmstat,iostat,netstat和ifstat这些命令的多功能产品.dstat克服了这些命令的局限并增加了一些另外的功能,增加了监控项,也变得更灵活了.dstat可 ...
- iterm2 快捷键大全
Mac 原来自带的终端工具 Terminal 不好用是出了名的,虽然最近几个版本苹果稍微做了些优化,功能上,可用性方面增强不少,无奈有个更好用的 Iterm2 摆在那,基本上也就没有多少出场机会了 I ...
- word在页眉中插入页码
编辑页眉时,插入-页码-当前位置-普通数字
- Pycharm 出现Unresolved reference '' 错误的解决方法
在用Pycharm做Pygame游戏小实战的时候碰到一个很无语的问题 如下 什么鬼?????? 我明明有写settings模块啊 而且还是放在同一个目录下 然后Pycharm给我来了一个错误 而且在 ...
- 关于eclipse安装springide的记录
近些天,又开始学习springmvc,使用eclipse进行开发,由于很多快捷键时候需要安装springide插件才能出来,我遇到配置DispatcherServlet,结果alt+/出不来Dispa ...
- Spring 框架系列之 JDBC 整合实例
微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.Spring框架整合 DAO 模板 JDBC:org.springframework.jdb ...
- 关于使用srping @RequestParam 容易出错的地方
大家都知道,在spring中的@RequestParam主要用户传递参数用的,具体的解释就是将请求参数去数据映射到功能处理方法的参数上.其中包括三个参数: value:参数名字,即入参的请求参数名字, ...
- python 小练习之删除文件夹下的所有文件,包括子文件夹中的文件
先屡一下思路 一步步怎么实现 1 要求是要删除所有文件(只是删除文件 而不是文件夹),所以 我们肯定要遍历这个文件目录 (for in遍历) 2 每遍历一个元素时(文件),我们要判断该元素的属性是 ...
- APICloud ajpush(极光推送) 6009
APICloud 其它的都按照APICloud的使用说明操作即可,但有一点需要提醒像我一样才接触的朋友:极光推送需打包测试,不能直接自定义Loader.否则,你会发现在绑定别名的方法时会一直返回&qu ...