集成方法(ensemble method) Boosting Adaboost

来源:互联网 发布:金山卫士网络测速器 编辑:程序博客网 时间:2024/05/01 21:22

使用集成方法时可有多种方式:

  • 不同算法的集成;
  • 同一算法在不同设置下的集成;
  • 数据集不同部分分配给不同分类器之后的集成;

下面主要介绍同一类型分类器的集成。
1. bagging 基于数据随机重抽样的分类器构建方法
思想:
自举汇聚法(bootstrap aggregating), 采用bootstap从原始数据集重抽样,且样本大小与原来一样大,重复S次。在S个数据集建好之后,将某个学习算法分别作用于每个数据集就得到S个分类器。对新数据进行分类时,就可应用这S个分类器进行分类,且选择分类器投票结果中最多的类别作为最后的分类结果。
随机森林就属于bagging。2001年Breiman把分类树组合成随机森林(Breiman 2001a),即在变量(列)的使用和数据(行)的使用上进行随机化,生成很多分类树,再汇总分类树的结果。随机森林在运算量没有显著提高的前提下提高了预测精度。关于随机森林可参见http://blog.csdn.net/zrjdds/article/details/50133843。
2.boosting
boosting与bagging相似,它们所使用的的多个分类器的类型都是一致的。boosting是通过集中关注被已有分类器错分的那些数据来获得新的分类器。boosting的分类结果是基于所有分类器的加权求和,bagging中的分类器权重是相等的,而boosting中的分类器权重并不相等,每个权重代表的是其对应分类器在上一轮迭代中的成功度。
boosting中最流行的是AdaBoost。AdaBoost是adaptive boost的缩写。其运行过程如下
训练数据中的每个样本,并赋予其一个权重,记为向量D。D初值往往将每个元素设为1/n,n是训练样本个数。首先在训练集上训练出一个弱分类器并计算该分类器的错误率,根据错误率重新调整每个样本的权重,降低上次分对的样本的权重,提高分错样本的权重。最后将所有分类器的分类结果采用加权平均汇总起来,每个分类器的权重是α,而α是基于该分类器的错误率计算的。样本权重和分类器权重计算如下:
错误率的定义:

ϵ=

α的计算公式如下:
α=12ln1ϵϵ

计算出α之后,可对权重向量D进行更新,以使得那些正确分类的样本的权重降低而错分样本的权重升高。D的计算方法如下。
如果某个样本被正确分类,那么该样本的权重更改为:
Dt+1i=D(t)ieαj=1i1D(t+1)j+j=inD(t)j

而如果某个样本被错分,那么该样本的权重更改为:
Dt+1i=D(t)ieαj=1i1D(t+1)j+j=inD(t)j

在计算出D之后,AdaBoost开始进入下一轮迭代。AdaBoost算法会不断地重复训练和调整权重的过程,直到训练错误率为0或者弱分类器的数目达到用户的指定值为止。

0 0