AdaBoost算法简介

adaboost算法是boosting算法的一种。boosting算法主要思想是用大量的简单的预测方法,得到一个比较准确的预测方法。譬如人脸检测中就是用的这种方法。

 

adaboost伪代码:

输入:

   训练集:(x_{1},y_{1}),\ldots,(x_{m},y_{m})其中x_{i} \in X,\, y_{i} \in Y = \{-1, +1\}

   训练的轮数T。

For i=1,\ldots,m

初始化\textstyle D_{1}(i) = \frac{1}{m},      //设置每组训练集的权重。开始都为1/m.

 

Fort = 1,\ldots,T

1.对于弱分类器H,找到误判率最小的分类器  \epsilon_{t}\,\!是误判率。

h_{t} = \underset{h_{t} \in \mathcal{H}}{\operatorname{argmax}} \; \left\vert 0.5 - \epsilon_{t}\right\vert

其中  \epsilon_{t} = \sum_{i=1}^{m} D_{t}(i)I(y_i \ne h_{t}(x_{i})) .

2.如果\left\vert 0.5 - \epsilon_{t}\right\vert \leq \beta,这里 \beta 是一个预先选择的阀值,停止训练。

\alpha_{t}=\frac{1}{2}\textrm{ln}\frac{1-\epsilon_{t}}{\epsilon_{t}}

 

3.Fori = 1,\ldots,m

  更新D_{t+1}(i) = \frac{ D_t(i) \exp(\alpha_t (2 I(y_i \ne h_{t}(x_{i})) - 1 )) }{ Denom },

其中分母Denom是标准化因子,保证D_{t+1}是一个概率分布

 

输出最终的分类器

H(x) = \textrm{sign}\left( \sum_{t=1}^{T} \alpha_{t}h_{t}(x)\right)

这个算法可以用到很多地方,不过需要选择大量的分类器。

 

由于本人技术不是很好,欢迎来辩

posted @ 2014-03-02 23:26  独立寒风  阅读(885)  评论(0编辑  收藏  举报