机器学习系列-AdaBoost

集成学习

在一般经验中,如果把好坏不等的东西掺到一起,那么通常结果会是比最坏的要好一些,比最好的要坏一些。这就是集成学习的出发点。如果把多个学习器结合起来,是否能获得比最好的单一学习器更好的性能呢?

集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务。集成学习一般先产生一组“个体学习器”(individual learner),再用某种策略将它们结合起来。个体学习器通常由一个现有的学习算法从训练数据产生。如果这些“学习器”是同一种“学习器”,我们说这样的集成是同质的;如果包含的是不同的“学习器”,则这种集成是异质的。同质集成中的个体学习器被称为“基础学习器”,异质集成中的个体学习器被称为“组件学习器”。

集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能,这对“弱学习器”(weak learner)尤为明显,因此集成学习的很多理论研究都是针对弱学习器进行的,而基学习器有时也被直接称为弱学习器。(弱学习器常指泛化性能略优于随机猜测的学习器;例如在二分类问题上精度略高于50%的分类器。)

根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类,即个体学习器间存在强依赖关系、必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系、可同时生成的并行化方法;前者的代表是Boosting,后者的代表是“随机森林”(Random Forest)。

AdaBoost

Boosting是一族可将弱学习器提升为强学习器的算法。这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值\(T\),最终将这\(T\)个基学习器进行加权结合。Boosting族算法最著名的代表是AdaBoost。下面我们以分类任务来介绍AdaBoost算法。

设训练集\(D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\}\)是包含\(n\)个训练样本的集合。基分类器(就是基学习器,因为是分类任务,下面统称基分类器)的错误率\(\epsilon_i\)定义为:

\[\epsilon_i=\frac{1}{n}[\sum_{j=1}^{n}w_jI(c_i(x_j)\neq y_j)]\]

初始时,\(w_1=\frac{1}{n}\)。

其中\(I(c_i(x_j)\neq y_j)\)是一个指示函数,如果输入为真,返回1;否则返回0。基分类器\(c_i\)的重要性由如下参数给出:

\[\alpha_i=\frac{1}{2}ln{\frac{1-\epsilon_i}{\epsilon_i}}\]

如果错误率接近0,则\(\alpha_i\)具有一个很大的正值,而当错误率接近1时,\(\alpha_i\)有一个很大的负值。参数\(\alpha_i\)也被用来更新训练样本的权值。为了说明这点,假定\(w_{i}^{(j)}\)在第\(j\)轮提升迭代中赋给样本\((x_i,y_i)\)的权值。AdaBoost的权值更新机制如下式给出:

\[ w_{i}^{j+1}=\frac{w_{i}^{j}}{Z_j}*\left\{
\begin{aligned}
e^{-\alpha_j}, c_j(x_i)=y_i\e^{\alpha_j}, c_j(x_i)\neq y_i
\end{aligned}
\right.
\]

其中,\(Z_j\)是一个正规因子,用来确保万\(\sum_{i}w_{i}^{(j+1)}=1\)。上面的公式给出的权值更新公式增加那些被错误分类样本的权值,并减少那些已经被正确分类的样木的权值。

AdaBoost算法将每一个分类器\(c_j\)的预测值根据\(\alpha_j\)进行加权,而不是使用多数表决的方案。这种机制有助于AdaBoost惩罚那些准确率很差的模型,如那些在较早的提升轮产生的模型。另外,如果任何中间轮产生高于50%的误差,则权值将被恢复为开始的一致值\(w_i=\frac{1}{n}\),并重新进行抽样。直至迭代\(T\)轮后结束。

AdaBoost的优缺点

AdaBoost的优点

  1. 很好的利用了弱分类器进行级联。
  2. 可以将不同的分类算法作为弱分类器。
  3. AdaBoost具有很高的精度。
  4. 相对于bagging算法和Random Forest算法,AdaBoost充分考虑的每个分类器的权重。

    AdaBoost的缺点

  5. AdaBoost迭代次数也就是弱分类器数目不容易设定。
  6. 数据不平衡导致分类精度下降。
  7. 训练比较耗时。
时间: 2024-10-15 11:14:15

机器学习系列-AdaBoost的相关文章

机器学习系列(6)_从白富美相亲看特征预处理与选择(下)

作者:viewmode=contents">龙心尘 &&寒小阳 时间:2016年1月. 出处: http://blog.csdn.net/longxinchen_ml/article/details/50493845. http://blog.csdn.net/han_xiaoyang/article/details/50503115 声明:版权全部,转载请联系作者并注明出处 1. 剧情一:挑螃蟹的秘密 李雷与韩梅梅的关系发展得不错.趁国庆休假一起来天津玩. 今天,李雷十分

机器学习系列(7)_机器学习路线图(附资料)

作者: 龙心尘 && 寒小阳 时间:2016年2月. 出处:http://blog.csdn.net/longxinchen_ml/article/details/50749614 http://blog.csdn.net/han_xiaoyang/article/details/50759472 声明:版权所有,转载请联系作者并注明出处 1. 引言 也许你和这个叫『机器学习』的家伙一点也不熟,但是你举起iphone手机拍照的时候,早已习惯它帮你框出人脸:也自然而然点开今日头条推给你的新闻

机器学习系列(9)_机器学习算法一览(附Python和R代码)

本文资源翻译@酒酒Angie:伊利诺伊大学香槟分校统计学同学,大四在读,即将开始计算机的研究生学习.希望认识更多喜欢大数据和机器学习的朋友,互相交流学习. 内容校正调整:寒小阳 && 龙心尘 时间:2016年4月 出处:http://blog.csdn.net/han_xiaoyang/article/details/51191386 http://blog.csdn.net/longxinchen_ml/article/details/51192086 声明:版权所有,转载请联系作者并注

简单易学的机器学习算法——AdaBoost

一.集成方法(Ensemble Method) 集成方法主要包括Bagging和Boosting两种方法,随机森林算法是基于Bagging思想的机器学习算法,在Bagging方法中,主要通过对训练数据集进行随机采样,以重新组合成不同的数据集,利用弱学习算法对不同的新数据集进行学习,得到一系列的预测结果,对这些预测结果做平均或者投票做出最终的预测.AdaBoost算法和GBDT(Gradient Boost Decision Tree,梯度提升决策树)算法是基于Boosting思想的机器学习算法.

机器学习系列1-学习资料和学习路线

该系列是学习机器学习的系列博客,主要用于记录和分享学习机器学习(和深度学习)过程中的各种知识和问题,希望能够将自己学习到的知识.方法论转化为文字,分享给更多有志于从事机器学习相关工作或学习的同学. 学习资源 目前网上关于机器学习的资源已经非常丰富,现在分享笔者学习过程中接触到的学习资源: 书籍: <机器学习>-周志华 链接:http://pan.baidu.com/s/1bo7j7SN 密码:47wi<Deep Learning>-花书 链接:http://pan.baidu.co

机器学习之adaboost

Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器). Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器).其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值.将修改过权值的新数据集送给下层分类器进行训练,最后将每

Spark2.0机器学习系列之8: 聚类分析(K-Means,Bisecting K-Means,LDA,高斯混合模型)

在写这篇文章之前,先说一些题外话. 许多机器学习算法(如后面将要提到的LDA)涉及的数学知识太多,前前后后一大堆,理解起来不是那么容易. 面对复杂的机器学习模型,尤其是涉及大量数学知识的模型,我们往往要花费大量的时间和精力去推导数学算法(公式),如果过分沉湎于此会忽略了很多背后也许更重要的东西,正所谓只见树木,不见森林,而这是缺乏远见,是迷茫的. 我们需要深入理解模型背后的逻辑和所蕴含的或简或繁的思想.某些思想甚至可能是很美的思想,很伟大的思想.这些理解,使得面对复杂的问题时候,面对陌生问题时,

&lt;转&gt;机器学习系列(9)_机器学习算法一览(附Python和R代码)

转自http://blog.csdn.net/han_xiaoyang/article/details/51191386 – 谷歌的无人车和机器人得到了很多关注,但我们真正的未来却在于能够使电脑变得更聪明,更人性化的技术,机器学习. – 埃里克 施密特(谷歌首席执行官) 当计算从大型计算机转移至个人电脑再转移到云的今天,我们可能正处于人类历史上最关键的时期.之所以关键,并不是因为已经取得的成就,而是未来几年里我们即将要获得的进步和成就. 对我来说,如今最令我激动的就是计算技术和工具的普及,从而带

[Todo]机器学习系列

就看这个系列的吧: http://blog.csdn.net/yaoqiang2011/article/category/5877239/3 另外本机上的 /Users/baidu/Documents/Data/Interview/机器学习-数据挖掘/机器学习实战(中文版+英文版+源代码) 机器学习实战.pdf