7. ensemble learning & AdaBoost
1. ensemble learning 集成学习
集成学习是通过构建并结合多个学习器来完成学习任务,如下图:

集成学习通过将多个学习学习器进行结合,常可以获得比单一学习器更优秀的泛化性能
从理论上来说,使用“弱学习器”集成足以获得好的性能,当实践中出于种种考虑,人们往往会使用比较强的学习器。
以下面为例,集成学习的结构通过投票法Voting(少数服从多数)产生:

由上面可以看出:个体学习器应该“好而不同”,即个体学习器要有一定的“准确性”,并且彼此间要有差异。
从理论上来说,假设个体学习器的误差 $\epsilon$ 相互独立,那么随着集成中个体分类器数目 $T$ 的增加,集成的错误率将呈指数级下降。但现实任务中,个体学习器是为解决同一个问题而训练出来的,它们显然不可能相互独立。
根据个体学习器的生成方式,目前的集成学习方法大致分为两大类:
1. 个体学习器间存在强依赖关系,必须串行生成的序列化方法,如 Boosting
2. 个体学习器间不存在强依赖关系,可同时生成并行化方法,如Bagging 和 Random Forest
2. Boposting & AdaBoost
Boosting: 先从初始训练集训练一个基学习器,再根据学习器的表现对训练样本分布进行调整,使得先前基类学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此反复进行,直至基学习器达到事先指定值$T$,最终将这$T$个基学习器进行加权结合。

Boosting族算法中最著名的代表就是AdaBoost。

这是AdaBoost的原理示意图:左边矩形表示数据集$D$,中间是各个个体学习器,右边三角形是对每个弱学习器赋予的权重 $\alpha$ ,最后根据每个弱学习器的加权组合来判断总体类别。要注意一下数据集从上到下三个矩形内直方图不一样,这表示每个样本的权重 $\mathcal{D}$ 也发生了变化,样本的权重一开始初始化为相等的权重,然后根据弱学习器的错误率 $\epsilon$ 来调整每个弱学习器的权重 $\alpha$以及样本权重 $\mathcal{D}$.
具体过程如下:
|
|
The error $\epsilon$ is given by and $\alpha$ is given by $\mathcal{D}_{t+1,i} = \frac{\mathcal{D}_{t,i}}{Z_t} {\times} e^{-\alpha_t f(x_i) h_t(x_i)}$ $Z_t = \sum_{i=1}^{m}\mathcal{D}_{t,i} {\times} e^{-\alpha_t f(x_i) h_t(x_i)}$ 1、弱分类器的选取弱分类器的选取并没有一个特定的标准或选取准则,一般来说只要是能够实现基本的分类功能的分类器均可以作为adaboost中的弱分类器。 2、分类误差大于0.5,终止算法分类误差大于0.5代表当前的分类器是否比随机预测要好,对于一个随机预测模型来说,其分类误差就是0.5,即一半预测对,一半预测错。若当前的弱分类器还没有随机预测的效果好,那便直接终止算法。但是当adaboost遇到这种情形时可能学习的迭代次数远远没有达到初始设置的迭代次数M,这可能会导致最终集成中只有很少的弱分类器,从而导致算法整体性能不佳。为了化解这种情况Kohavi在《Bias plus variance decomposition for zero-one loss functions》提出了用重采样法使得迭代过程重新启动。
|
参考:
周志华 机器学习
http://blog.csdn.net/sinat_17451213/article/details/51055718
http://blog.csdn.net/marvin521/article/details/9319459
http://blog.csdn.net/autocyz/article/details/51305999
7. ensemble learning & AdaBoost的更多相关文章
- 6. Ensemble learning & AdaBoost
1. ensemble learning 集成学习 集成学习是通过构建并结合多个学习器来完成学习任务,如下图: 集成学习通过将多个学习学习器进行结合,常可以获得比单一学习器更优秀的泛化性能 从理论上来 ...
- 4. 集成学习(Ensemble Learning)Adaboost
1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...
- 【软件分析与挖掘】Multiple kernel ensemble learning for software defect prediction
摘要: 利用软件中的历史缺陷数据来建立分类器,进行软件缺陷的检测. 多核学习(Multiple kernel learning):把历史缺陷数据映射到高维特征空间,使得数据能够更好地表达: 集成学习( ...
- Ensemble Learning 之 Bagging 与 Random Forest
Bagging 全称是 Boostrap Aggregation,是除 Boosting 之外另一种集成学习的方式,之前在已经介绍过关与 Ensemble Learning 的内容与评价标准,其中“多 ...
- Ensemble Learning: Bootstrap aggregating (Bagging) & Boosting & Stacked generalization (Stacking)
Booststrap aggregating (有些地方译作:引导聚集),也就是通常为大家所熟知的bagging.在维基上被定义为一种提升机器学习算法稳定性和准确性的元算法,常用于统计分类和回归中. ...
- 第七章——集成学习和随机森林(Ensemble Learning and Random Forests)
俗话说,三个臭皮匠顶个诸葛亮.类似的,如果集成一系列分类器的预测结果,也将会得到由于单个预测期的预测结果.一组预测期称为一个集合(ensemble),因此这一技术被称为集成学习(Ensemble Le ...
- 壁虎书7 Ensemble Learning and Random Forests
if you aggregate the predictions of a group of predictors,you will often get better predictions than ...
- 7. 集成学习(Ensemble Learning)Stacking
1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...
- 6. 集成学习(Ensemble Learning)算法比较
1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...
随机推荐
- html中的a标签(超链接)的使用
a标签即超链接,用于从一张页面链接到另一张页面.其最重要的属性是href属性,它指示链接的目标. 例如: <a href="http://www.baidu.com/"> ...
- php中"::"双冒号有什么作用
PHP代码 lazycms::$sysname 第一次见到这种表现方式,请问是双冒号什么意思 答:直接属类的方法或属性.也就是static 静态方法或属性的使用.域运算符,一般用于在B类对象中使用A类 ...
- Inno Setup 版本 5.5.3+ 简体中文语言包
; *** Inno Setup 版本 + 简体中文消息 *** [LangOptions] LanguageName=<7B80><4F53><> Languag ...
- [MongoDB]MongoDB的优缺点及与关系型数据库的比较
汇总: 1. [MongoDB]安装MongoDB2. [MongoDB]Mongo基本使用:3. [MongoDB]MongoDB的优缺点及与关系型数据库的比较4. [MongoDB]MongoDB ...
- 关于EF的一个简单Demo
今天使用EF的时候很奇怪的问题,添加属性后,使用程序包管理器控制台的NuGet命令更新无效,于是做了这个测试,一次性写好,自动更新,看看效果 1.首先建立一个MVC项目 2.我们选择Intern ...
- ThinkPHP的D方法和M方法的区别
M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...
- [软件推荐]VMware Workstation 12.1.1多国语言(含简体中文)+激活方法
虚拟机VMware功能强大,使用方便,可以在同一台电脑上安装多个系统(Windows.Linux.OS).虚拟机上的所有操作都不会影响到“实体机”,因此在虚拟机中可以进行很多测试操作,如果某些软件使用 ...
- jquery:closest和parents的主要区别
closest和parents的主要区别是:1,前者从当前元素开始匹配寻找,后者从父元素开始匹配寻找:2,前者逐级向上查找,直到发现匹配的元素后就停止了,后者一直向上查找直到根元素,然后把这些元素放进 ...
- Android调用默认浏览器打开指定Url
业务员有需求要将一个wap站在手机上以App的形式打开,还不要嵌套WebView,只能以浏览器打开.查了点资料,就有了下面这货. package com.gzz.whyinzi; import and ...
- EF 5 最佳实践白皮书
Performance Considerations for Entity Framework 5 By David Obando, Eric Dettinger and others Publish ...
