机器学习——AdaBoost

Boosting算法

AdaBoost是典型的Boosting算法,属于Boosting家族的一员。在说AdaBoost之前,先说说Boosting提升算法。Boosting算法是将“弱学习算法“提升为“强学习算法”的过程,主要思想是“三个臭皮匠顶个诸葛亮”。一般来说,找到弱学习算法要相对容易一些,然后通过反复学习得到一系列弱分类器,组合这些弱分类器得到一个强分类器。Boosting算法要涉及到两个部分,加法模型和前向分步算法。加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如下:
在这里插入图片描述
其中,h(x;am) 就是一个个的弱分类器,am是弱分类器学习到的最优参数,βm就是弱学习在强分类器中所占比重,P是所有am和βm的组合。这些弱分类器线性相加组成强分类器。
前向分步就是说在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。也就是可以写成这样的形式:
在这里插入图片描述
由于采用的损失函数不同,Boosting算法也因此有了不同的类型,AdaBoost就是损失函数为指数损失的Boosting算法。

Adaboost算法特性:

1、每次迭代改变的是样本的分布,而不是重复采样。
2、样本分布的改变取决于样本是否被正确分类。
分类正确的样本权值低;分类错误的样本权值高(通常是边界附近的样本)。
3、最终的结果是弱分类器的加权组合,权值表示该弱分类器的性能。

算法流程

  1. 输入训练数据集T={(x1,y1),(x2,y2),(xN,yN)};
    其中,xi∈X⊆Rn;yi∈Y=−1,1;迭代次数M。
  2. 初始化训练样本的权值分布:在这里插入图片描述
  3. 对于m=1,2,…,M,使用具有权值分布Dm的训练数据集进行学习,得到弱分类器Gm(x)。
    计算Gm(x)在训练数据集上的分类误差率在这里插入图片描述
    计算Gm(x)在强分类器中所占的权重在这里插入图片描述
    更新训练数据集的权值分布(这里,zm是归一化因子,为了使样本的概率分布和为1):
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  4. 得到最终分类器:
    sign函数用于求数值的正负。数值大于0,为1。小于0,为-1.等于0,为0。
    在这里插入图片描述

公式推导

假设已经经过m−1轮迭代,得到Fm−1(x),根据前向分步,我们可以得到:
在这里插入图片描述
AdaBoost是采用指数损失,由此可以得到损失函数:
在这里插入图片描述
Fm-1(xi)已知,化简得到:
在这里插入图片描述

继续化简Loss:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Adaboost算法的特性

一、训练的错误率上界,随着迭代次数的增加,会以指数速率下降;
二、adaboost算法即使训练次数很多,也不会出现过拟合的问题。
证明过程如下:
在这里插入图片描述
AdaBoost的优点和缺点

优点:
1、Adaboost提供一种框架,在框架内可以使用各种方法构建子分类器。可以使用简单的弱分类器,不用对特征进行筛选。
2、Adaboost算法不需要弱分类器的先验知识,最后得到的强分类器的分类精度依赖于所有弱分类器。无论是应用于人造数据还是真实数据,Adaboost都能显著的提高学习精度。
3、Adaboost算法不需要预先知道弱分类器的错误率上限,且最后得到的强分类器的分类精度依赖于所有弱分类器的分类精度,可以深挖分类器的能力。Adaboost可以根据弱分类器的反馈,自适应地调整假定的错误率,执行的效率高。
4、Adaboost对同一个训练样本集训练不同的弱分类器,按照一定的方法把这些弱分类器集合起来,构造一个分类能力很强的强分类器,即“三个臭皮匠赛过一个诸葛亮”。

缺点:

在Adaboost训练过程中,Adaboost会使得难于分类样本的权值呈指数增长,训练将会过于偏向这类困难的样本,导致Adaboost算法易受噪声干扰。此外,Adaboost依赖于弱分类器,而弱分类器的训练时间往往很长。

发布了71 篇原创文章 · 获赞 4 · 访问量 1065

猜你喜欢

转载自blog.csdn.net/qq_44957388/article/details/103538563
今日推荐