Adaboost算法

来源:互联网 发布:facebook 聊天软件 编辑:程序博客网 时间:2024/06/17 02:49

Adaboost---”Adaptive Boosting”(自适应增强)是一种弱学习到强学习的算法,强弱指的是分类器。弱学习器—在二分情况下弱分类器的错误率会低于50%。其实任意的分类器都可以作为弱分类器,比如kNN,决策树、朴素贝叶斯,Logistic回归和SVM。而在Adaboosting中最流行的弱分类器是单层决策树。强学习器—识别准确率很高并能在多项式时间内完成的学习算法。

集成方法:就是将不同的分类器组合在一起,这种组合的结果就是集成方法元算法。它可以是不同算法的集成,也可以是同一算法在不同设置下的集成,还可以是数据集的不同部分分配给不同分类器后的集成。通常的集成方法有bagging和boosting。Adaboosting是boosting的代表算法。boosting集成了多个分类器,不同的分类器类型都是一致的。但是这些分类器是通过串行训练得到的(即每个新的分类器是通过原来已训练出的分类器训练得到的,所以后面的分类器性能会越来越好。)Boosting的分类结果是基于所有分类器加权求和得到的。

 

Adaboosting自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。

 

AdaBoost的一般流程

(1) 收集数据

(2) 准备数据:依赖于所使用的弱分类器类型,本章使用的是单层决策树,这种分类器可以处理任何数据类型。当然也可以使用任意分类器作为弱分类器。作为弱分类器,简单分类器的效果更好。

(3) 分析数据:任意方法

(4) 训练算法:Adaboost的大部分时间都用在训练上,分类器将多次在同一数据集上训练弱分类器

(5) 测试算法:计算分类的错误率

(6) 使用算法:同SVM一样,AdaBoost预测两个类别中的一个。如果想把它应用到多个类别的场合,那么就要像多类SVM中的做法一样对Adaboost进行修改。

完整AdaBoost算法的实现

伪代码:

对每次迭代:

  利用buildStump()函数找到最佳的单层决策树

  利用最佳单层决策树加入到单层决策树数组

  计算alpha

  计算新的权重向量D

  更新累计类别估计值

  如果错误率等于0.0,则退出循环


1、准备数据


2、训练数据


3、分析数据

4、测试算法



5、计算错误率


代码中有详细的注释,资源下载地址:

http://download.csdn.net/download/qq_34385827/9956698

祝大家顺利。

原创粉丝点击