分类算法-AdaBoot 算法

AdaBoost 是英文"Adaptive Boosting"(自适应增强)的缩写,是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器 ( 弱分类器 ),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。AdaBoost 是 Adaptive Boosting(自适应)的缩写,它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率,或者达到预先设定的最大迭代次数。

0x00弱分类器和分类器

当一个分类器的正确率不那么高的时候,称之为弱分类器,或者说该分类器的学习方法为若学习方法。与之对应的,存在强分类器和强学习方法。强学习方法的正确率很高。

常见的机器学习算法都可以建立弱分类器,不过最经常使用的弱分类器是单层决策树。单层决策树又称为决策树桩(Decision Stump),即层数为1的决策树。

下面距离得算法使用单层决策树作为弱分类器。每一个训练数据都有一一个权值系数,注意不是弱
分类器的系数。建立最佳单层决策树的依据就是:每个训练数据在单层决策树中的分类结果乘以自己的权值系数后相加的“和”最小,即分类误差最小化。

0x01AdaBoost迭代算法步骤

具体说来,整个AdaBoost迭代算法分为以下3步。

①初始化训练数据的权值分布。如果有N个样本,则每一一个训练样本最开始时都被赋予相同的权重: 1/N。

②训练弱分类器。具体训练过程中,如果某个样本点已经被准确分类,那么在构造下-个训练集中,它的权重就被降低;相反,如果某个样本点没有被准确分类,那么它的权重就得到提高。然后,权重更新过的样本集被用于训练下一一个分类器,整个训练过程如此迭代进行下去。

③将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。

其运行过程为:训练数据中的每个样本,并赋予一开始相等的权重, 这些权重构成了向量D.首先在训练数据上训练一个弱分类器并计算分类器的错误率,然后在同一数据集上再次训练弱分类器。在第二次训练分类器中,会再次重新调整每个样本的权重,其中第- -次分类错误的权重会提高,而第一次分类样本的权重会降低。AdaBoost根据每个弱分类器的错误率进行计算,为每个分类器都配了一一个权重a.

E8CB7DF1B641324E813E29BE4E86302F.jpg

计算出D后,AdaBoost又开始进行下一轮迭代,AdaBoost算法会不断地重复训练和调正权重,知道训练错误率为0,或者说弱分类器地数目达到用户地指定值
分类问题-k-近邻算法 朴素贝叶斯 支持向量机 AdaBoot算法 决策树 多层感知机

上图中,左边是数据集,其中直方图得不同宽度表示每个案例上得不同权重,在经过一个分类器之后,会通过图形中得a(阿尔法)值进行加权,经过加权后再进行求和,从而得到输出结果,

本作品采用《CC 协议》,转载必须注明作者和本文链接
文章!!首发于我的博客Stray_Camel(^U^)ノ~YO
讨论数量: 1

作者,我想请问一下,python 里面有训练弱分类器的库吗???我对python不太熟悉

4年前 评论
娃哈哈店长 (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!