人工智能–AdaBoost算法

人工智能之AdaBoost算法

前言:人工智能机器学习有关算法内容,请参见公众号“科技优化生活”之前相关文章。人工智能之机器学习主要有三大类:1)分类;2)回归;3)聚类。今天我们重点探讨一下AdaBoost算法。^_^

集成方法(Ensemble Method)主要包括Bagging和Boosting两种方法,随机森林算法【请参加人工智能(25)】是基于Bagging思想的机器学习算法。而Boosting为增强学习,是一种重要的集成学习技术,能够将预测精度低的弱学习器增强为预测精度高的强学习器,为学习算法设计提供了一种有效的新思路新方法。其中最为成功应用的是,YoavFreund和Robert Schapire根据在线分配算法在1995年提出的AdaBoost算法

AdaBoost概念:

Adaboost(AdaptiveBoosting)是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。

Adaboost是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。使用Adaboost分类器可以排除一些不必要的训练数据特征,并放在关键的训练数据上面。

AdaBoost原理:

Adaboost算法是经过调整的Boosting算法,其能够对弱学习得到的弱分类器的错误进行适应性调整。Adaboost算法中迭代了T次的主循环,每一次循环根据当前的权重分布对样本x定一个分布P,然后对这个分布下的样本使用弱学习算法得到一个弱分类器。实际上。每一次迭代,都要对权重进行更新。更新的规则是:减小弱分类器分类效果较好的数据的概率,增大弱分类器分类效果较差的数据的概率。最终的分类器是个弱分类器的加权平均

AdaBoost本质:

Adaboost的自适应在于:前一个基本分类器被错误分类的样本的权值会增大,而正确分类的样本的权值会减小,并再次用来训练下一个基本分类器。同时,在每一轮迭代中,加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数才确定最终的强分类器。

AdaBoost步骤:

1)初始化训练数据的权值分布D1。假设有N个训练样本数据,则每一个训练样本最开始时,都被赋予相同的权值:W1=1/N。

2)训练弱分类器hi。如果某个训练样本点,被弱分类器hi准确地分类,那么在构造下一个训练集中,它对应的权值要减小;相反,如果某个训练样本点被错误分类,那么它的权值就应该增大。权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。

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

具体算法流程如下:

1D1(i)=1/N%Initialize the weight distribution

2 form=1,⋯,M:

3learn base classifierGm(x);

4ifem>0.5then break;

5updateαmandDm+1;

6 end for

AdaBoost优点:

boosting算法存在两个问题:1)如何调整训练集,使得在训练集上训练的弱分类器得以进行;2)如何将训练得到的各个弱分类器联合起来形成强分类器。

针对boosting算法存在的两个问题,adaBoost算法进行了调整:

1)使用加权后选取的训练数据代替随机选取的训练样本,这样将训练的焦点集中在比较难分的训练数据样本上;

2)将弱分类器联合起来,使用加权投票机制代替平均投票机制。让分类效果好的弱分类器具有较大的权重,而分类效果差的分类器具有较小的权重。

与Boosting算法不同的是,adaBoost算法不需要预先知道弱学习算法学习正确率的下限即弱分类器的误差,且最后得到的强分类器的分类精度依赖于所有弱分类器的分类精度,这样可以深入挖掘弱分类器算法的能力

另外,Boosting算法泛化错误率低,容易实现,精度很高,可以应用在大部分分类器上,无参数调整,不需要做特征筛选,且不用担心过度拟合。

AdaBoost缺点:

1)Boosting算法对离散数据点敏感;

2)当错误率超过50%时,模型不再收敛。

AdaBoost应用场景:

对AdaBoost算法的研究以及应用大多集中于分类问题,同时也出现了一些在回归问题上的应用。AdaBoost主要解决了:两类问题、多类单标签问题人脸识别、多类多标签问题、大类单标签问题、特征选择回归问题。它用全部的训练样本进行学习。

结语:

AdaBoost算法是经过调整的Boosting算法,也是Boosting算法中最流行的一种算法。其能够对弱学习得到的弱分类器的错误进行适应性调整。实质就是一个简单的弱分类算法提升过程,这个过程通过不断的训练,可以提高对数据的分类能力。AdaBoost算法在人工智能之机器学习、人脸识别、两类问题、多类单标签问题、多类多标签问题、大类单标签问题、特征选择回归问题等领域有着广泛应用。

------以往文章推荐------

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180423G1QXHM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励