机器学习技法总结(五)Adaptive Boosting, AdaBoost-Stump,决策树

原创 2015年07月10日 15:16:09

上一讲主要利用不同模型计算出来的g,采用aggregation来实现更好的g。如果还没有做出来g,我们可以采用bootstrap的方法来做出一系列的“diversity”的data出来,然后训练出一系列的g,比如PLA来说,虽然模型一样,就是直线对二维平面的分割,模型都为直线,那么我们利用bootstrap来做出不同的数据,然后计算出不同的g,然后融合后就可以得到很好的效果。或者也可以通过调整PLA的初始值来训练,得到一堆g,最后融合(parameter diversity,random initial。。。)


下面主要讲一下一个更加强的机器学习的技法:Adaptive boosting。

下面以老师教小孩认识苹果的过程,将标识苹果的特征(形状(圆的),颜色(红的、绿的),。。。等等),一个同学说苹果形状是怎样,另一个同学说苹果颜色是怎样,然后还有其他同学说苹果还有其他特征,就这样一次次的给苹果增加特征,然后联合起来就能让同学们都能很好的认出苹果了(苹果的概念就很丰富了)。

先从bootsrapping开始引入adaptive boosting,利用bootstrap来生成u,然后就比较像是Re-weighting process,用来优化Re-Weight Ein_u(h)为最小。

pic3

就是小u对应着data中数据点被抽样的次数,如何得到g(t)与g(t+1)是有差异的呢?调整这个u(weight)来使得得到的g(t)在下一轮表现很不好,这样g(t+1)就与g(t) diversity了。做出u(t+1)在g(t)上的加权error大致等于掷硬币的概率0.5就好了。


在数学上只需要让犯错误的u之和与没有犯错的u之和相等就可以得到0.5,处理方法:将错误的点乘以对的比率,让正确的点乘以错的比率,如下图所示:


在数学上,通过将factor规则化,scale up incorrect , scale down correct(有点类似PLA,对错误放大,然后进行调整,就像老师教学生认识苹果一样,贾同学说了苹果是圆形的,但是他在橘子上犯错了,那就放大苹果与橘子的差别,对颜色,通过颜色分别,加强对苹果认识)如下所示:


我们通过bootstrap中不同的u得到了一系列小g,那么u的更新过程就如下图来进行。最后将小g合并得到很好的很强很丰富的G。



可以利用线性aggregation的方法来融合所有的g,得到G。所以,这个线性的权重如何衡量呢?我们可以用g的表现性能来进行决定alpha,算法设计的时候,用来衡量的话采用了ln()来做,当判断的概率为0.5时,就像是掷硬币一样,这样权重计算就为0,我们不选这样的无用的g,当犯错误的概率为0时,计算出的权重为无穷大,这样也是合理的啊。


这样从理论上分析一下,Adaboost有何好处呢?我们知道VC bound来进行,只要我们得到的小g比乱猜做的好一点,通过逐步的(AdaBoost + 演算法),我们就可以在T=O(log(N))次的逐步演进就可以得到Ein(G)=0,同时根据VC bound 我们可以看出upper bound也很小,即Eout也能保证很小,从而实现比较好的性能。


所以,我们只需要一个能够比乱猜好一点的“weak” base 学习算法A,通过adaboost就可以做到最好的G。一个非常好的用于adaboost的演算法---decision stump(决策树)。decision stump是利用单一的feature进行分割,二维平面上就是一条条垂直或水平的线,因为它只在一个维度下进行分割。所以,如果单独的decision stump就是一个比较弱的分类器,那么结合了adaboost呢?下面就给出几个例子


虽然单个decision stump是一个“weak”的分类器,就是说它的分界线是简单的直线,但是通过adaboost,就可以拟合、逼近一个非常细腻的边界。边界的拟合过程就是vote的结果,而adaboost的过程,就是通过逐步的放大错误,纠正错误,最后通过vote来实现边界的融合。从而做出非常复杂边界的过程。而且这个过程因为有VC bound的理论指导,在一定程度上能够遏制overfitting,所以Adaboost是一种非常有效的方法逐步增强的融合方法,


上面是一个比较简单的sample,那么下面的例子就是比较复杂的边界,你说用decision stump能够做出来sine波的形状吗?下面的结果就说明了这个过程。


它实际上就做出了非线性的拟合过程。AdaBoost-Stump在实际的工程应用中就是世界上首个实时人脸识别:

实际上AdaBoost-Stump具备了特征选择的能力,这方面可以联想到deep learning中的一些知识。


回头可以采用opencv利用AdaBoost来对人脸进行识别的程序学习一下,以便更好地掌握AdaBoost在具体的处理中的应用。













版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/lg1259156776/。

提升方法(boosting)详解

注:本文非笔者原创,原文转载自:http://www.sigvc.org/bbs/thread-727-1-1.html 提升方法是基于这样一种思想:对于一个复杂任务来说,将多个专家...
  • carson2005
  • carson2005
  • 2013年03月22日 22:05
  • 9105

【模式识别】Boosting

分类中通常使用将多个弱分类器组合成强分类器进行分类的方法,统称为集成分类方法(Ensemble Method)。比较简单的如在Boosting之前出现Bagging的方法,首先从从整体样本集合中抽样采...
  • xiaowei_cqu
  • xiaowei_cqu
  • 2014年05月17日 21:04
  • 19985

Adaboost(Adaptive boosting)

Boosting算法的核心思想是,构造一堆diverse的弱分类器(准确率不为0.5),然后将这些构造好的弱分类器进行融合,达到一个强分类器的效果。Adaboost算法是Boosting ensemb...
  • usingnamespace_std
  • usingnamespace_std
  • 2016年09月22日 15:25
  • 545

AdaBoost(Adaptive Boosting)算法详解

AdaBoost(Adaptive Boosting)算法详解 主要内容 AdaBoost算法详解 AdaBoost算法实例讲解 1、AdaBoost算法详解   假设有一位患者,存在某些症状。患...
  • zhihua_oba
  • zhihua_oba
  • 2017年06月01日 11:41
  • 535

机器学习技法实现(一):AdaBoost- Decision Stump (AdaBoost - 决策树的基于Matlab的实现)

经过前面对AdaBoost的总结,下面要基于Matlab实现AdaBoost-Stump进行二维平面数据点的分类的实验。 一. 实验原理 参看 http://blog.csdn.net/lg12591...
  • LG1259156776
  • LG1259156776
  • 2015年07月10日 22:08
  • 7187

机器学习实战笔记7(Adaboost)

1:简单概念描述        Adaboost是一种弱学习算法到强学习算法,这里的弱和强学习算法,指的当然都是分类器,首先我们需要简单介绍几个概念。 1:弱学习器:在二分情况下弱分类器的错误率会高于...
  • Lu597203933
  • Lu597203933
  • 2014年08月18日 21:26
  • 8617

Boosting

提升算法(Boosting)是迭代算法,它每次使用一个弱学习器弥补前一个弱学习器的“不足”,通过这样的串行增加N个弱学习器来构造一个使损失函数最小的强学习器,通过这样的迭代过程来逐步收敛到相对完善的强...
  • foolsnowman
  • foolsnowman
  • 2016年06月27日 18:04
  • 2249

Adaptive Boosting(AdaBoost)

1. Motivationbootstrap在训练集上通过有放回的采样构造出不同的训练数据,该过程可以看作在完整训练集上,为每一个样本赋予不同的权重。若该样本在本次抽样中没有被选中,则其权重为0。在采...
  • u010089444
  • u010089444
  • 2016年11月09日 15:19
  • 2628

台湾大学林轩田机器学习技法课程学习笔记1 -- Linear Support Vector Machine

关于台湾大学林轩田老师的《机器学习基石》课程,我们已经总结了16节课的笔记。这里附上基石第一节课的博客地址:台湾大学林轩田机器学习基石课程学习笔记1 – The Learning Problem本系列...
  • red_stone1
  • red_stone1
  • 2017年06月21日 17:11
  • 4023

台大机器学习技法学习笔记

台大机器学习技法学习笔记标签(空格分隔): 机器学习 台大机器学习技法学习笔记 Lecture 1 Linear hard-margin SVM Large-Margin Separating Hyp...
  • Frankchen0130
  • Frankchen0130
  • 2016年03月04日 13:06
  • 3732
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:机器学习技法总结(五)Adaptive Boosting, AdaBoost-Stump,决策树
举报原因:
原因补充:

(最多只允许输入30个字)