AdaBoost元算法

利用AdaBoost(adaptive boosting自适应提升)元算法提高分类性能

本节内容:组合相似的分类器来提高分类性能、应用AdaBoost算法、处理非均衡分类问题

元算法是对其他算法进行组合的一种方式。莫些人认为AdaBoost是最好的监督学习的方法,所以该方法是机器学习工具箱中最强力的工具之一。

将不同的分类器组合起来,这种组合结果则被称为集成方法(ensemble method)或者元算法(meta-algorithm)。

优点:泛化错误率低,易编码,可以应用在大部分分类器上,无参数调整。

缺点:对离群点敏感

适用数据类型:数值型和标称型数据

bagging:基于数据随机重抽样的分类器构建方法

自举汇聚法(bootstrap aggregating),也成bagging方法,是在原始数据集选择S次后得到S个新数据集的一种技术。新数据集和原始数据集的大小相等。每个数据集都是通过在原始数据集中随机选择一个样本进行替换而得到的。

在S个数据集建好之后,将莫个学习算法分别作用于每个数据集就得到了S个分类器。当我们对新数据进行分类时,就可以应用这个S个分类器进行分类。与此同时,选择分类器投票结果中最多的类别作为最后的分类结果。

boosting

是一种与bagging很类似的技术。但是在前者当中,不同的分类器是通过串行训练而获得的,每个新分类器都根据已训练出的分类器的性能来进行训练。boosting是通过集中关注被已有分类器错分的那些数据来获得新的分类器。

由于boosting分类的结果是基于所有分类器的加权求和结果的,因此boosting与bagging不太一样。

bagging中的分类器权重是相等的,而boosting中的分类器权重并不相等,每个权重代表的是其对应分类器在上一轮迭代中的成功度。

boosting方法有多个版本,本次只关注最流行的AdaBoost

AdaBoost元算法_第1张图片

AdaBoost其运行过程如下:训练数据中的每个样本,并赋予其一个权重,这些权重构成了向量D。一开始,这些权重都初始化成相等值。首先在训练数据上训练出一个弱分类器并计算该分类器的错误率,然后在同一数据集上再次训练弱分类器。在分类器的第二次训练当中,将会重新调整每个样本的权重,其中第一次分对的样本的权重将会降低,而第一次分错的样本的权重将会提高。为了从所有弱分类器中得到最终的分类结果,AdaBoost为每个分类器都分配了一个权重值alpha,这些alpha值是基于每个弱分类器的错误率进行计算的。

alpha计算公式
AdaBoost元算法_第2张图片
AdaBoost算法流程图

左边是数据集,其中直方图的不同宽度表示每个样例上的不同权重。在经过一个分类器之后,加权的预测结果会通过三角形中的alpha值进行加权。每个三角形中输出的加权结果在圆形中求和,从而得到最终的输出结果

AdaBoost元算法_第3张图片
计算出alpha值之后,对权重向量D进行更新。

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

单层决策树(decision stump,也称决策树桩)是一种简单的决策树。仅基于单个特征来做决策。这棵树只有一次分裂过程,因此它实际上就是一个树桩。


你可能感兴趣的:(AdaBoost元算法)