0
点赞
收藏
分享

微信扫一扫

机器学习实战之AdaBoost元算法(一)简单了解

转载请注明作者和出处:https://blog.csdn.net/weixin_45814668
知乎:https://www.zhihu.com/people/qiongjian0427
Git:https://github.com/qiongjian/Machine-learning/
运行环境:anaconda—jupyter notebook
Python版本: Python3.x

更多精彩内容,尽在微信公众号,欢迎您的关注:
在这里插入图片描述

目录

1 基于数据集多重抽样的分类器

将不同的分类器组合起来的结果则被称为集成方法(ensemble method) 或者元算法(meta-algorithm)。
使用集成方法时会有多种形式:可以是不同算法的集成,也可以是同一算法在不同设置下的集成,还可以是数据集不同部分分配给不同分类器之后的集成。

AdaBoost作为最流行的原算法的优缺点如下:
优点:泛化错误率低,易编码,可以应用在发部分分类器上,无参数调整。
缺点:对离群点敏感。
适用数据类型:数值型和标称型数据。

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

自然汇聚法(bootstrap aggregating),也称为bagging方法,是从原始数据集选择S次后得到S个新数据集的一种技术。

在S个数据集建好之后,将某个学习算法分别作用于每个数据集就得到了S个分类器。

选择分类器投票结果中最多的类别作为最后的分类结果。

1.2 boosting

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

boosting分类的结果基于所有分类器的加权求和结果,bagging中的分类器权重是相等的,而boosting中的分类器权重并不相等,每个权重代表的是其对应分类器上一轮迭代中的成功度。

boosting最流行的版本是AdaBoost。

1.3 AdaBoost的一般流程

(1)收集数据:可以使用任意方法。
(2)准备数据:依赖于所使用的弱分类器类型,本章使用的是单层决策树,这种分类器可以处理任何数据类型。当然也可以使用任意分类器作为弱分类器,第2章到第6章中的任一分类器都可以充当弱分类器。作为弱分类器,简单分类器的效果更好。
(3)分析数据:可以使用任意方法。
(4)训练算法:AdaBoost的大部分时间都用在训絲上,分类器将多次在同一数据集上训练弱分类器。
(5)测试算法:计算分类的错误率。
(6)使用算法:同SVM — 样,AdaBoost预测两个类别中的一个。如果想把它应用到多个类别的场合,那么就要像多类SVM中的做法一样对AdaBoost进行修改。

2 训练算法:基于错误提升分类器的性能

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

其中,错误率ε定义为:
在这里插入图片描述
alpha计算公式:
在这里插入图片描述
AdaBoost计算流程:
在这里插入图片描述
上图中左边是数据集,直方图的不同宽度代表每个样例的不同权重。经过一个分类器之后,加权的预测结果通过三角形中的alpha值进行加权。每个三角形中的输出的加权结果在圆形中求和,得到最后的结果。

计算出alpha之后,对权重向量D进行更新,以使得那些正确分类的样本的权重降低而错分样本的权重升高。

如果某个样本被正确分类,那么该样本的权重更改为:
在这里插入图片描述
如果某个样本被错误分类,那么该样本的权重更改为:
在这里插入图片描述
计算出D之后,AdaBoost又开始进入下一轮迭代。

AdaBoost算法会不断地重复训练和调整权重的过程,直到训练错误率为0或者弱分类器的数目达到用户的指定值为止。

END.

举报

相关推荐

0 条评论