已经有那么些这个主题,我为什么要再写一遍呢?其实是为自己写的,把自己的理解整理写出来。

一、集成算法

1.背景

发现弱学习算法通常比发现强学习算法容易的多,但是弱学习算法准确度太低,有没有什么办法把弱学习算法转变成强学习算法呢?可不可以把若各干弱学习器组合起来,组成一个强学习器呢?后来前辈们找到了一系列组合弱学习器的算法,我们把这一类算法称为“集成算法”。

2.原理

集成算法的原理简单来讲,就是集体决策强于个人决策。

3.主要分为两类

  • Bagging:通过对训练样本重新采样的方法得到不同的训练样本集,在这些新的训练样本集上分别训练学习器,最终合并每一个学习器。
  • Boosting:在Boosting算法中,学习器之间是存在先后顺序的,后一个学习器基于前一个学习器做出一定的调整,调整的方法围绕着“这么减少误差率”进行。迭代多次后,将这些学习器线性组合成一个最终的学习器。

二、Adaboost算法

思路:在分类问题中,通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合。

  • 如何改变样本权重?
  • 如何将弱分类器组合成一个强分类器?

下面我们看看adaboost算法描述,看看是如何解决上面两个问题的。
集成算法:Adaboost
看完上面的算法,你可能会有几个疑问。上面的算法中,α的公式是怎么得来的?权值是怎么根据上一次迭代的权值求得的?请看下图
集成算法:Adaboost

Adaboost算法分析

Adaboost算法的主要特点是根据前一次迭代的错误率来不断调整下一次迭代的样本权值,前一次迭代某个样本预测错误时,调大此样本的权值,预测正确时减小此样本的权值。Wm,i = Wm-1,i * exp (-α y G(x)) 。当预测错误时,-yG(x)是大于0的,当错误率e<0.5,即分类器如果准确率连一半都达不到,说明还不如瞎蒙呢,所以一般分类器的错误率是小于0.5的,那么α=0.5log(1-e/e)是大于0的。exp (-α y G(x))则大于1,说明Wm,i比Wm-1,i大。反之亦然。(没有latex写公式,太费劲了,先这样吧。。。)

相关文章: