第八章 AdaBoost算法(提高分类准确率)
来源:互联网 发布:哪个软件购票方便 编辑:程序博客网 时间:2024/06/01 10:04
AdaBoost是一种流行的提升(提高分类准确率的组合分类方法)算法。它是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器。算法本身是改变数据分布实现的,它根据每次训练集之中的每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改权值的新数据送给下层分类器进行训练,然后将每次训练得到的分类器融合起来,作为最后的决策分类器。
1、基本思想
AdaBoost是adaptiveboosting(自适应boosting)的缩写,其运行过程如下:训练数据中的每个样本,并赋予一个权重。一开始,这些权重都初始化成相等值。首先在训练数据上训练出一个弱分类器并计算该分类器的错误率,然后在同一数据集上再次训练弱分类器。在分类器的第二次训练当中,将会重新调整每个样本的权重,其中第一次分对的样本的权重将会降低,而第一次分错的样本的权重将会提高,为了从所有弱分类器中得到最终的分类结果,AdaBoost为每个分类器都分配了一个权重值,这些权重值是基于每个弱分类器的错误率进行计算的。
元组的权重反映对它们分类的困难程度——权重越高,越可能错误地分类。然后使用这些权重,为下一轮的分类器产生训练样本。其基本思想是,当建立分类器时,希望它更关注上一轮错误分类的元组。某些分类器对某些“困难”元组分类可能比其他分类器好。这样,建立了一个互补的分类器系列。
AdaBoost算法会不断地重复训练和调整权重的过程,直到训练错误率为0或者弱分类器的数目达到用户的指定值为止。
AdaBoost算法的流程如下图:
图1 左边是数据集,其中直方图的不同宽度表示每个样例上的不同权重。在经过一个分类器后,加权的预测结果
会通过三角形中的权值进行加权。每个三角形中输出的加权结果在圆形中求和,从而得到最终的输出结果。
2、伪代码
给定数据集D,它包含d个类标记的元组(X1,y1),(X2,y2),…(Xd,yd),其中yi是元组Xi的类标号。开始,AdaBoost对每个训练元组赋予相等的权重1/d。为组合分类器产生k个基分类器需要执行算法k轮。在第i轮,从D中元组抽样,形成大小为d的训练集Di。使用有放回抽样——同一个元组可能被选中多次。每个元组被选中的机会由它的权重决定。从训练集Di导出分类器Mi。然后使用Di作为检验集计算Mi的误差。训练元组的权重根据它们的分类情况调整。
3、算法阐述
现在,我们考察该算法涉及的某些数学问题。
为了计算模型Mi的错误率,求Mi误分类Di中的每个元组的加权和。即:
Mi的错误率影响训练元组权重的更新。如果一个元组在第i轮正确地分类,则其权重乘以error(Mi)/(1-error(Mi))。一旦所有正确分类元组的权重被更新,就对所有元组的权重(包括误分类的元组)规范化,使得它们的和与以前一样。为了规范化权重,将它乘以旧权重之和。结果正如上面介绍的一样,误分类元组的权重增加,而正确分类元组的权重减少。
“一旦提升完成,如何使用分类器的组合预测元组X的类标号?”不像装袋将相同的表决赋予每个分类器,提升根据分类器的分类情况,对每个分类的表决权赋予一个权重。分类器的错误率越低,它的准确率就越高,因此它的表决权重就应当越高。分类器Mi的表决权重为
对于每个类c,对每个将类c指派给X的分类器的权重求和。具有最大权重和的类是“赢家”,并返回作为元组X的类预测。
- 第八章 AdaBoost算法(提高分类准确率)
- 第八章 AdaBoost算法(提高分类准确率)
- 第七章 利用AdaBoost元算法提高分类性能
- 利用AdaBoost元算法提高分类性能
- 利用AdaBoost元算法提高分类性能
- 利用AdaBoost元算法提高分类性能
- 利用AdaBoost元算法提高分类性能
- 利用AdaBoost元算法提高分类性能
- 利用AdaBoost元算法提高分类性能
- 数据挖掘算法(一)提高文本分类算法准确率和性能的10条建议
- 提高分类准确率的技术
- [完]机器学习实战 第七章 利用AdaBoost元算法提高分类性能
- 代码注释:机器学习实战第7章 利用AdaBoost元算法提高分类性能
- 读书笔记:机器学习实战【第7章:利用Adaboost元算法提高分类性能】
- chapter7 机器学习之元算法(adaboost)提高分类性能从原理到实现
- 机器学习实战代码详解(七)利用AdaBoost元算法提高分类性能
- 【机器学习实战-python3】Adaboost元算法提高分类性能
- 机器学习实战-利用AdaBoost元算法提高分类性能
- IDF实验室:牛刀小试--ASCII码而已
- 第九章 后向传播算法(分类)
- 回文自动机(回文树)
- KVC与KVO的初次使用
- 《Effective C++》学习笔记——条款31
- 第八章 AdaBoost算法(提高分类准确率)
- POJ之路4--1004Financial Management
- IDF实验室:牛刀小试--啥?
- c++的基本语言知识(一)
- Android Studio设置代码风格
- 追踪ws的怪蜀黍(DFS)
- onload js函数不执行的原因分析及解决方法
- 一个操作系统的实现01
- STL之RTTI