内容纲要

欢迎转载,作者:Ling,注明出处:机器学习:原理简明教程08-AdaBoost

 

提升方法AdaBoost算法:提升方法的思路是综合多个分类器,得到更准确的分类结果。

AdaBoost算法的基本思想1

  • 多轮训练,多个分类器
  • 每轮训练增加错误分类样本的权值,降低正确分类样本的权值
  • 降低错误率高的分类器的权值,增加正确率高的分类器的权值

 

AdaBoost算法的基本思想2:N轮迭代,每轮都得到一个新的G(分类器),α(分类器权重),W(每个样本权重)

  • 迭代N个维度,根据W计算误差值,得到一个最佳分类器G(bestStump, error, classEst = buildStump(dataArr, classLabels, D))
  • 根据误差更新α (alpha = float(0.5 * log((1.0 - error) / max(error, 1e-16))))
  • 根据α以及分类器分类结果更新D(expon = multiply(-1 * alpha * mat(classLabels).T, classEst),D = multiply(D, exp(expon)),D = D / D.sum())
  • 直到没有误分或者达到迭代上限
  • 最后利用α,G组合出一个线性分类器

 

AdaBoost算法

ml_adaboost_001

ml_adaboost_002

ml_adaboost_003

AdaBoost例子

ml_adaboost_004

ml_adaboost_005

ml_adaboost_006

AdaBoost算法的训练误差分析(了解即可)

ml_adaboost_007

ml_adaboost_008

AdaBoost算法的解释

    AdaBoost算法还有另一个解释,即可以认为AdaBoost算法是模型为加法模型、损失函数为指数函数、学习算法为前向分步算法时的二类分类学习方法。    

    为什么还要学习前向分步算法呢?直接给我AdaBoost的代码不就好了吗?因为只有理解了前向分步算法,才能理解AdaBoost为什么能跟决策树组合起来。

前向分步算法

  ml_adaboost_009

ml_adaboost_010

前向分步算法与AdaBoost

ml_adaboost_011

 

ml_adaboost_012

注:

1)指数中的加法可以拿出来做乘法

2)8.22注意下标,等于的时候乘积为1,不等乘积为-1,同时最后一步是两边都+了一个-exxxxx

 

提升树

    提升树是以分类树或回归树为基本分类器的提升方法。提升树被认为是统计学习中性能最好的方法之一。

 

提升树模型

ml_adaboost_013

提升树算法(可以只看二分类提升树)

ml_adaboost_014

ml_adaboost_015

ml_adaboost_016

提升回归树实例:

ml_adaboost_017

ml_adaboost_018

ml_adaboost_019

 

梯度提升 (了解)

ml_adaboost_020

ml_adaboost_021

AdaBoost适用场景

  • 用于二分类或多分类的应用场景
  • 用于做分类任务的baseline:无脑化,简单,不会overfitting,不用调分类器
  • 用于特征选择(feature selection)
  • Boosting框架用于对badcase的修正:只需要增加新的分类器,不需要变动原有分类器

补充:Bagging,随机森林和Boosting(AdaBoost):

  • Boosting是一族可以将若学习器提升为强学习器的算法,代表算法为AdaBoost。该算法的工作机制:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器。如此反复进行,直至学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。
  • Bagging是并行式集成学习代表方法。基于“自助采样法”(bootstrap sampling)。自助采样法机制:给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下一次采样时该样本还会被采到。这样,经过m次样本采集,我们得到包含m个样本的采样集。采样集中,有的样本出现过很多次,有的没有出现过。Bagging机制:我们采样出T个含m个样本的采样集。然后基于每个采样集训练出一个学习器,再将学习器进行结合。对分类任务使用投票法,对回归任务采用平均值法。
  • 随机森林RF:以决策树为基学习器构建Bagging集成,进一步在决策树的训练过程中引入随机属性选择。传统决策树在选择划分属性的时候是在当前节点所有的属性集合中选出一个左右属性进行划分;而在RF中,对基决策树的每个节点,先从该节点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。这里的参数k控制了随机性的引入程度。如果k=d(全部属性集),则基决策树的构建=传统决策树构建。如果k=1,基决策树每个节点随机选择一个属性进行划分。一般推荐k=log2d。
  • Bagging VS 随机森林:Bagging中基学习器的“多样性”通过样本扰动(对初始训练集采样)而获得;随机森林中基学习器的“多样性”不仅来自于样本扰动,而且还可以通过随机属性扰动来获得。这使得随机森立的泛化性能可通过个体学习器之间差异程度的增加而进一步提升。随机森林的使其性能很差,但随着学习器的增加,性能很快就会变好,且强于Bagging。