机器学习总结(lecture 14)算法:提升算法AdaBoost

lecture 14:提升算法AdaBoost

集成学习Adapt Boost

目录

1集成学习

这里写图片描述
集成学习(ensemble learning)通过组合多个基分类器(base classifier)来完成学习任务,颇有点“三个臭皮匠顶个诸葛亮”的意味。基分类器一般采用的是弱可学习(weakly learnable)分类器,通过集成学习,组合成一个强可学习(strongly learnable)分类器。所谓弱可学习,是指学习的正确率仅略优于随机猜测的多项式学习算法;强可学习指正确率较高的多项式学习算法。集成学习的泛化能力一般比单一的基分类器要好。集成学习的泛化能力一般比单一的基分类器要好,这是因为大部分基分类器的分类错误的概率远低于单一基分类器的。

1.1方差、偏差

这里写图片描述

也就是说,误差可以分解为3个部分:bias、variance、noise。bias度量了算法本身的拟合能力,刻画模型的准确性;variance度量了数据扰动所造成的影响,刻画模型的稳定性。为了取得较好的泛化能力,则需要充分拟合数据(bias小),并受数据扰动的影响小(variance小)。但是,bias与variance往往是不可兼得的:

  • 当训练不足时,拟合能力不够强,数据扰动不足以产生较大的影响,此时bias主导了泛化错误率;
  • 随着训练加深时,拟合能力随之加强,数据扰动渐渐被学习到,variance主导了泛化错误率。

1.2Bagging与Boosting

集成学习需要解决两个问题:

  • 如何调整输入训练数据的概率分布及权值;
  • 如何训练与组合基分类器。

从上述问题的角度出发,集成学习分为两类流派:Bagging与Boosting。

(1)Bagging(Bootstrap Aggregating)对训练数据擦用自助采样(boostrap sampling),即有放回地采样数据;每一次的采样数据集训练出一个基分类器,经过MM次采样得到MM个基分类器,然后根据最大表决(majority vote)原则组合基分类器的分类结果。
这里写图片描述
(2)Boosting的思路则是采用重赋权(re-weighting)法迭代地训练基分类器,即对每一轮的训练数据样本赋予一个权重,并且每一轮样本的权值分布依赖上一轮的分类结果;基分类器之间采用序列式的线性加权方式进行组合。
这里写图片描述

  • 从“偏差-方差分解”的角度看,Bagging关注于降低variance,而Boosting则是降低bias; Boosting的基分类器是强相关的,并不能显著降低variance。
  • Bagging与Boosting有分属于自己流派的两大杀器:Random Forests(RF)和Gradient Boosting Decision Tree(GBDT)。本文所要讲的AdaBoost属于Boosting流派。

2提升方法AdaBoost算法

提升(boosting)方法通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能。
这里写图片描述
这里写图片描述

3AdaBoost算法

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
在算法第4步,学习过程有可能停止,导致学习不充分而泛化能力较差。因此,可采用“重采样”(re-sampling)避免训练过程过早停止;即抛弃当前不满足条件的基分类器,基于重新采样的数据训练分类器,从而获得学习“重启动”机会。

  • AdaBoost能够自适应(addaptive)地调整样本的权值分布,将分错的样本的权重设高、分对的样本的权重设低;所以被称为“Adaptive Boosting”。
  • sklearn的AdaBoostClassifier实现了AdaBoost,默认的基分类器是能fit()带权值样本的DecisionTreeClassifier。

1,adaboost不易过拟合的神话。
2,adaboost人脸检测器好用的本质原因,
3,真的要求每个弱分类器准确率不低于50%

4AdaBoost在sklearn例子

from sklearn.model_selection import cross_val_score  
from sklearn.datasets import load_iris  
from sklearn.ensemble import AdaBoostClassifier  

iris = load_iris() #还是那个数据集  

clf = AdaBoostClassifier(n_estimators=100) #迭代100次  
scores = cross_val_score(clf, iris.data, iris.target) #分类器的精确度  

print(scores)
print(scores.mean())

[ 0.98039216 0.94117647 0.95833333]
0.959967320261

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值