算法过程

算法8.1 AdaBoost

输入: 训练数据集T={X, y},X为N个包含n个特征的样本,y取值为-1或1 弱学习算法 输出: 最终分类器G(x)

  1. 将训练数据的权值分布初始化为均匀分布 wmiw_{mi}代表第m个弱分类器的第i个样本的权重。 则:

    w1i=1N,i=1,2,,Nw_{1i} = \frac{1}{N}, i=1,2,\cdots,N
  2. 根据权重wmw_m得到第m个弱分类器:

    Gm(x):X1,+1G_m(x): {\Bbb X} \rightarrow {-1, +1}
  3. 计算弱分类器Gm(x)G_m(x)加权误分类率,这个误分类率也是带权重计算的。

    em=i=1NwmiI(Gm(xi)yi)e_m = \sum_{i=1}^Nw_{mi}I(G_m(x_i) \neq y_i)
  4. 计算ama_mama_m代表第m个分类器的重要性:

    am=12log1emema_m = \frac{1}{2}\log \frac{1-e_m}{e_m}

    其中,log以e为底 误分类率越小,这个弱分类器越有发言权。

  5. 更新第m+1个弱分类器中每个样本的权重

    wm+1,i=wmiexp(amyiGm(xi))w_{m+1,i} = w_{mi}\exp (-a_my_iG_m(x_i))

    然后使wm+1,iw_{m+1,i}成为一个分布,即满足i=1Nwm+1,i=1\sum_{i=1}^Nw_{m+1,i}=1 公式8.4我觉得不对,分母不应该是ZmZ_m,而应该是Zm+1Z_{m+1},而Zm+1Z_{m+1}又依赖于wm+1,iw_{m+1,i}的结果,所以要分成两步计算。 yiGm(xi)y_iG_m(x_i)代表对样本i是否分类正确。

  6. 回到第2步,生成第m+1个弱分类器。

  7. 生成m个弱分类器后,组成一个强分类器

    f(x)=m=1MamGm(x)G(x)=sign(f(x))\begin{aligned} f(x) = \sum_{m=1}^Ma_mG_m(x) \\ G(x) = \text {sign}(f(x)) \end{aligned}

Last updated