算法8.1 AdaBoost

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

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

  2. 根据权重wmw_m得到第m个弱分类器:
    Gm(x):X1,+1 G_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=12log1emem a_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}

results matching ""

    No results matching ""