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

初始化	extstyle 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}} ; leftvert 0.5 - epsilon_{t}
ightvert

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

2.如果leftvert 0.5 - epsilon_{t}
ightvert leq eta,这里 eta 是一个预先选择的阀值,停止训练。

alpha_{t}=frac{1}{2}	extrm{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 
e h_{t}(x_{i})) - 1 )) }{ Denom },

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

输出最终的分类器

H(x) = 	extrm{sign}left( sum_{t=1}^{T} alpha_{t}h_{t}(x)
ight)

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

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

原文地址:https://www.cnblogs.com/xiaokangzi/p/3577537.html