AdaBoost
🔖

AdaBoost

AdaBoost的设计

notion image
1️⃣
学习误差率e
在加权的样本分布上计算分类误差率。
em(x)=i=1NwmiI(Gm(xi)yi)=Gm(xi)yiwmie_m(x)=\sum_{i=1}^Nw_{mi}I(G_m(x_i)\neq y_i)=\sum_{G_m(x_i)\neq y_i}w_{mi}
2️⃣
弱学习器权重系数α\alpha
根据分类误差率e调整弱分类器的系数:增大分类误差率小的弱分类器的权值,减小分类误差率较大的弱分类器的权值。
αm=12log1emem\alpha_m=\frac{1}{2}\log\frac{1-e_m}{e_m}
3️⃣
样本权重D
根据学习器的系数α\alpha和前一轮是否被正确分类来调整这一轮的样本权重:提高那些被前一轮弱分类器错误分类的样本的权值,降低那些被正确分类的样本的权值。
wm+1,i=wmiZmexp(αmyiGm(xi)),i=1,2,,Nw_{m+1,i}=\frac{w_{mi}}{Z_m}\exp(-\alpha_m y_i G_m(x_i)),i=1,2,\cdots,N
4️⃣
 结合策略
AdaBoost采取加权组合的方法,分类误差率小的弱分类器起的决定作用较大。
f(x)=m=1MαmGm(x)f(x)=\sum_{m=1}^M \alpha_m G_m(x)
 

AdaBoost二分类算法

输入:二分类的训练数据集T={(x1,y1),(x2,y2),,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2),\ldots,(x_N,y_N)\},其中实例xiXRnx_i\in \mathcal{X}\subseteq\mathbf{R}^n,标记yiY={1,+1}y_i\in\mathcal{Y}=\{-1,+1\};弱学习算法;
输出:最终分类器G(x)G(x)
  1. 初始化训练数据的权值分布
    1. D1=(w11,,w1i,,w1N),w1i=1N,i=1,2,,ND_1=\left(w_{11},\cdots,w_{1i},\cdots,w_{1N}\right),w_{1i}=\frac{1}{N},i=1,2,\cdots,N
      第一步训练数据集具有均匀的权值分布,保证第一步能够在原始数据上学习基本分类器G1(x)G_1(x)
  1. m=1,2,Mm=1,2\cdots,M
    1. 使用具有权值分布DmD_m的训练数据集学习,得到基本分类器
      1. Gm(x):X{1,+1}G_m(x):\mathcal{X}\rightarrow\{-1,+1\}
    2. 计算Gm(x)G_m(x)在加权训练数据上的分类误差率
      1. em(x)=i=1NwmiI(Gm(xi)yi)=Gm(xi)yiwmie_m(x)=\sum_{i=1}^Nw_{mi}I(G_m(x_i)\neq y_i)=\sum_{G_m(x_i)\neq y_i}w_{mi}
    3. 计算Gm(x)G_m(x)的系数
      1. αm=12log1emem\alpha_m=\frac{1}{2}\log\frac{1-e_m}{e_m}
        em0.5e_m\leq 0.5时,αm0\alpha_m\geq 0,且αm\alpha_m随着eme_m的减小而增大,所以分类误差率越小的基本分类器在最终分类器中的作用越大。
    4. 更新训练数据集的权值分布
      1. Dm+1=(wm+1,1,wm+1,2,,wm+1,N)wm+1,i=wmiZmexp(αmyiGm(xi)),i=1,2,,NZm=i=1Nwmiexp(αmyiGm(xi))D_{m+1}=(w_{m+1,1},w_{m+1,2},\cdots,w_{m+1,N})\\w_{m+1,i}=\frac{w_{mi}}{Z_m}\exp(-\alpha_m y_i G_m(x_i)),i=1,2,\cdots,N\\Z_m=\sum_{i=1}^N w_{mi}\exp(-\alpha_m y_i G_m(x_i))
        当错误分类即yiGm(xi)y_i\neq G_m(x_i)时,权值被扩大,反之,权值被缩小。因此误分类样本在下一轮学习中起更大的作用。
  1. 构建基本分类器的线性组合
    1. G(x)=m=1MαmGm(x)G(x)=\sum_{m=1}^M \alpha_m G_m(x)
      得到最终分类器
      f(x)=sign(G(x))=sign(m=1MαmGm(x))\begin{aligned}f(x)&=sign(G(x))\\&=sign\left(\sum_{m=1}^M \alpha_m G_m(x)\right)\end{aligned}
      αm\alpha_m表示了基本分类器Gm(x)G_m(x)的重要性,这里αm\alpha_m之和并不为1。G(x)G(x)的符号决定实例x的类,G(x)G(x)的绝对值表示分类的确信度。
 

前向分步加法模型

加法模型
f(x)=m=1Mβmb(x;γm)f(x)=\sum_{m=1}^M\beta_m b(x;\gamma_m)
其中b(x;γm)b(x;\gamma_m)为基函数,γm\gamma_m为基函数的参数,βm\beta_m为基函数的系数。
给定训练数据及损失函数的条件下,学习加法模型即极小化损失函数
minβm,γmi=1NL(yi,m=1Mβmb(x;γm))\min_{\beta_m,\gamma_m} \sum_{i=1}^N L\left(y_i,\sum_{m=1}^M\beta_m b(x;\gamma_m)\right)
通常这是一个复杂的优化过程,可采用前向分布算法求解。
前向分布算法的思想:从前往后,每一步只学习一个基函数及其系数,逐步逼近优化目标函数。
即每一步只需优化如下损失函数
minβ,γi=1NL(yi,βb(x;γ))\min_{\beta,\gamma} \sum_{i=1}^N L\left(y_i,\beta b(x;\gamma)\right)
前向分布算法流程
输入:训练数据集T={(x1,y1),(x2,y2),,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2),\ldots,(x_N,y_N)\};损失函数L(y,f(x))L(y,f(x));基函数集{b(x;γ)}\{b(x;\gamma)\}
输出:加法模型f(x)f(x)
  1. 初始化f0(x)=0f_0(x)=0
  1. m=1,2,Mm=1,2\cdots,M
    1. 极小化损失函数
      1. (βm,γm)=argminβ,γi=1NL(yi,fm1(xi)+βb(x;γ))(\beta_m,\gamma_m)=\arg\min_{\beta,\gamma} \sum_{i=1}^N L\left(y_i,f_{m-1}(x_i)+\beta b(x;\gamma)\right)
    2. 更新
      1. fm(x)=fm1(xi)+βmb(x;γm)f_m(x)=f_{m-1}(x_i)+\beta_m b(x;\gamma_m)
  1. 得到加法模型
    1. f(x)=fM(x)=m=1Mβmb(x;γm)f(x)=f_M(x)=\sum_{m=1}^M\beta_m b(x;\gamma_m)
🌼
AdaBoost算法的另一种解释
AdaBoost算法是模型为加法模型f(x)=m=1MαmGm(x)f(x)=\sum_{m=1}^M\alpha_mG_m(x)、损失函数为指数损失函数L(y,f(x))=exp[yf(x)]L(y,f(x))=\exp[-yf(x)]、学习算法为前向分步算法时的二分类算法。
 

AdaBoost算法的推导

第m轮极小化指数损失函数即
(αm,Gm(x))=argminα,Gi=1Nexp[yi(fm1(xi)+αG(xi))]=argminα,Gi=1Nwˉmiexp[yiαG(xi)]\begin{aligned}(\alpha^*_m,G^*_m(x))&=\arg\min_{\alpha,G}\sum_{i=1}^N\exp[-y_i(f_{m-1}(x_i)+\alpha G(x_i))]\\&=\arg\min_{\alpha,G}\sum_{i=1}^N\={w}_{mi}\exp[-y_i\alpha G(x_i)]\end{aligned}
其中wˉmi=exp[yifm1(xi)]\={w}_{mi}=\exp[-y_if_{m-1}(x_i)]
为了使wˉmi\={w}_{mi}称为一个权重系数,我们对其归一化处理wmi=wˉmiiwˉmiw_{mi}=\frac{\={w}_{mi}}{\sum_i\={w}_{mi}},不影响优化目标
(αm,Gm(x))=argminα,Gi=1Nwmiexp[yiαG(xi)]\begin{aligned}(\alpha^*_m,G^*_m(x))=\arg\min_{\alpha,G}\sum_{i=1}^Nw_{mi}\exp[-y_i\alpha G(x_i)]\end{aligned}
按照预测正确和预测错误对样本进行划分
i=1Nwmiexp[yiαG(xi)]=yi=Gm(xi)wmieα+yiGm(xi)wmieα=(eαeα)i=1NwmiI(yiGm(xi))+eαi=1Nwmi=(eαeα)em+eα\begin{aligned}\sum_{i=1}^N{w}_{mi}\exp[-y_i\alpha G(x_i)]&=\sum_{y_i=G_m(x_i)}{w}_{mi}e^{-\alpha}+\sum_{y_i\neq G_m(x_i)}{w}_{mi}e^{\alpha}\\&=(e^\alpha-e^{-\alpha})\sum_{i=1}^N{w}_{mi}I(y_i\neq G_m(x_i))+e^{-\alpha}\sum_{i=1}^N{w}_{mi}\\&=(e^\alpha-e^{-\alpha})e_m+e^{-\alpha}\end{aligned}
其中em=i=1NwmiI(yiGm(xi))e_m=\sum_{i=1}^{N}{w}_{mi}I(y_i\neq G_m(x_i)),即加权数据下的分类误差率。
  1. 先求解Gm(x)G^*_m(x)
    1. Gm(x)=argminGi=1NwmiI(yiG(xi))G^*_m(x)=\arg\min_{G}\sum_{i=1}^N{w}_{mi}I(y_i\neq G(x_i))
      Gm(x)G_m^*(x)为在wmi{w}_{mi}加权的数据集下分类误差率eme_m最小的分类器。
  1. 再解αm\alpha^*_m:
    1. α\alpha求导,并令导数为0,求得
      αm=12log1emem\alpha^*_m=\frac{1}{2}\log\frac{1-e_m}{e_m}
  1. 再观察样本权值的更新:
    1. fm(x)=fm1(x)+αmGm(x)f_m(x)=f_{m-1}(x)+\alpha_m G_m(x)以及wˉmi=exp[yifm1(xi)]\={w}_{mi}=\exp[-y_if_{m-1}(x_i)]可得
      wˉm+1,i=wˉmiexp[yiαmGm(x)]\={w}_{m+1,i}=\={w}_{mi}\exp[-y_i\alpha_mG_m(x)]
      对权重进行归一化处理,则得到AdaBoost算法中样本权重的更新法则
      wm+1,i=wmiZmexp(αmyiGm(xi)),i=1,2,,NZm=i=1Nwmiexp(αmyiGm(xi))w_{m+1,i}=\frac{w_{mi}}{Z_m}\exp(-\alpha_m y_i G_m(x_i)),i=1,2,\cdots,N\\Z_m=\sum_{i=1}^N w_{mi}\exp(-\alpha_m y_i G_m(x_i))
 
 

AdaBoost多分类算法SAMME

  • 多分类场景下的标签
    • 在K分类任务下的标签y是一个K维向量y=(y1,y2,,yK)T\boldsymbol{y}=(y_1,y_2,\cdots,y_K)^T
      yk={1, if c=k1K1, if cky_k= \begin{cases}1, & \text { if } c=k \\ -\frac{1}{K-1}, & \text { if } c \neq k\end{cases}
      相当于是把one-hot编码中所有的0全部替换为了1K1-\frac{1}{K-1},这样能保证y1+y2++yK=0y_1+y_2+\cdots+y_K=0
      同样,对于多分类的学习器G(m)(x)\boldsymbol{G}^{(m)}(x),其输出也为K维向量(g1(x),g2(x),,gK(x))T(g_1(x),g_2(x),\cdots,g_K(x))^T,预测为k类,则gk(x)=1glk(x)=1K1g_k(x)=1,g_{l\neq k}(x)=-\frac{1}{K-1}
  • 多分类场景下的指数损失函数
    • L(y,f)=exp(1K(y1f1+y2f2++yKfK))=exp(1KyTf)L(\boldsymbol{y}, \boldsymbol{f})=\exp \left(-\frac{1}{K}\left(y_1 f_1+y_2 f_2+\cdots+y_K f_K\right)\right)=\exp \left(-\frac{1}{K} \boldsymbol{y}^T \boldsymbol{f}\right)
      其中 fkf_k 表示模型第 k 个维度对应的输出结果,同时由于每个样本的预测结果有 K 维度,因此在计算损失的时候一般需要除以 K 。
  • 前向分步算法
      1. 初始化f(0)(x)=0\boldsymbol{f}^{(0)}(x)=0
      1. 每一轮的优化目标
        1. (α(m),G(m))=argminα,Gi=1NL(yi,f(m1)(xi)+αG(xi))\left(\alpha^{(m)}, \boldsymbol{G}^{(m)}\right)=\underset{\alpha, \boldsymbol{G}}{\arg \min } \sum_{i=1}^N L\left(\boldsymbol{y}_i, \boldsymbol{f}^{(m-1)}\left(x_i\right)+\alpha\boldsymbol{G}\left(x_i\right)\right)
      1. 迭代更新
        1. f(m)(x)=f(m1)(x)+α(m)G(m)(x)\boldsymbol{f}^{(m)}(x)=\boldsymbol{f}^{(m-1)}(x)+\alpha^{(m)} \boldsymbol{G}^{(m)}(x)
      1. 最终集成模型
        1. f(x)=m=1Mα(m)G(m)(x)\boldsymbol{f}(x)=\sum_{m=1}^M \alpha^{(m)} \boldsymbol{G}^{(m)}(x)
  • αm\alpha_m更新公式
    • αm=(K1)2K(log1emem+log(K1))\alpha_m=\frac{(K-1)^2}{K}\left(\log\frac{1-e_m}{e_m}+\log(K-1)\right)
      其中(K1)2K\frac{(K-1)^2}{K}是常数,归一化后不影响最终的优化结果。
  • 样本权重更新公式
    • wi(m+1)=wi(m)exp(αmI(ciGi(m)))Zm{w}_i^{(m+1)}=\frac{{w}_i^{(m)} \exp \left(\alpha_m I(c_i\neq G_i^{(m)})\right)}{Z_m}
      I(ciGi(m))I(c_i\neq G_i^{(m)})表示真实标签和预测标签是否不同,若不同则为1,相同则为0.
 

AdaBoost多分类SAMME算法推导

第m轮极小化的损失函数即
(α(m),G(m))=argminα,Gi=1nexp(1KyiT(f(m1)(xi)+αG(xi)))=argminα,Gi=1nwˉi(m)exp(αKyiTG(xi))=argminα,Gi=1nwi(m)exp(αKyiTG(xi))\begin{aligned}\left(\alpha^{(m)},\boldsymbol{G}^{(m)}\right)&=\underset{\alpha, \boldsymbol{G}}{\arg \min } \sum_{i=1}^n \exp \left(-\frac{1}{K} \boldsymbol{y}_i^T\left(\boldsymbol{f}^{(m-1)}\left(x_i\right)+\alpha\boldsymbol{G}\left(x_i\right)\right)\right)\\&=\underset{\alpha, \boldsymbol{G}}{\arg \min } \sum_{i=1}^n \={w}_i^{(m)} \exp \left(-\frac{\alpha}{K} \boldsymbol{y}_i^T \boldsymbol{G}\left(x_i\right)\right)\\&=\underset{\alpha, \boldsymbol{G}}{\arg \min } \sum_{i=1}^n {w}_i^{(m)} \exp \left(-\frac{\alpha}{K} \boldsymbol{y}_i^T \boldsymbol{G}\left(x_i\right)\right)\end{aligned}
其中wˉi(m)=exp(1KyiTf(m1)(xi))\={w}_i^{(m)}=\exp \left(-\frac{1}{K} \boldsymbol{y}_i^T \boldsymbol{f}^{(m-1)}\left(x_i\right)\right),对其进行归一化得到wi(m)w_i^{(m)}
按照预测正确和预测错误对样本进行划分:记样本i真实的标签为cic_i,第m轮弱学习器预测的标签为Gi(m)G^{(m)}_i,则有
yiTG(xi)={1+(k1)(1K1)2=KK1,ci=Gi(m)2K1+(K2)(1K1)2=K(K1)2,ciGi(m)\boldsymbol{y}_i^T \boldsymbol{G}\left(x_i\right)=\begin{cases}1+(k-1)(-\frac{1}{K-1})^2=\frac{K}{K-1},&\quad c_i=G^{(m)}_i\\-\frac{2}{K-1}+(K-2)(-\frac{1}{K-1})^2=-\frac{K}{(K-1)^2},&\quad c_i\neq G^{(m)}_i\end{cases}
那么待优化的目标函数改写为
argminα,Gi=1nwi(m)exp(αKyiTG(xi))=argminα,G[ci=Gi(m)wi(m)eαK1+ciGi(m)wi(m)eα(K1)2]=argminα,G[eαK1+(eα(K1)2eαK1)i=1Nwi(m)I(ciGi(m))]=argminα,G[eαK1+(eα(K1)2eαK1)em]\begin{aligned}&\underset{\alpha, \boldsymbol{G}}{\arg \min } \sum_{i=1}^n {w}_i^{(m)} \exp \left(-\frac{\alpha}{K} \boldsymbol{y}_i^T \boldsymbol{G}\left(x_i\right)\right)\\=&\underset{\alpha, \boldsymbol{G}}{\arg \min }\left[\sum_{c_i=G^{(m)}_i} w_i^{(m)} e^{-\frac{\alpha}{K-1}}+\sum_{c_i \neq G^{(m)}_i} w_i^{(m)} e^{\frac{\alpha}{(K-1)^2}}\right] \\ =&\underset{\alpha, \boldsymbol{G}}{\arg \min }\left[e^{-\frac{\alpha}{K-1}} +\left(e^{\frac{\alpha}{(K-1)^2}}-e^{-\frac{\alpha}{K-1}}\right) \sum_{i=1}^N w_i^{(m)} I\left(c_i \neq G^{(m)}_i\right)\right]\\=&\underset{\alpha, \boldsymbol{G}}{\arg \min }\left[e^{-\frac{\alpha}{K-1}} +\left(e^{\frac{\alpha}{(K-1)^2}}-e^{-\frac{\alpha}{K-1}}\right) e_m\right]\end{aligned}
其中em=i=1Nwi(m)I(ciGi(m))e_m=\sum_{i=1}^N w_i^{(m)} I\left(c_i \neq G^{(m)}_i\right),为加权数据下的分类误差率。
 
  1. 先求解G(m)(x)\boldsymbol{G}^{(m)}(x)
    1. G(m)(x)=argmini=1Nwi(m)I(ciGi(m))\boldsymbol{G}^{(m)}(x)=\arg \min \sum_{i=1}^N w_i^{(m)} I\left(c_i \neq G^{(m)}_i\right)
      G(m)(x)\boldsymbol{G}^{(m)}(x)为加权数据下分类误差率最小的分类器;
  1. 再解αm\alpha_m:
    1. α\alpha求导,并令导数为0,求得
      αm=(K1)2K(log1emem+log(K1))\alpha_m=\frac{(K-1)^2}{K}\left(\log\frac{1-e_m}{e_m}+\log(K-1)\right)
      其中(K1)2K\frac{(K-1)^2}{K}是常数,故并不影响最终的优化结果。
  1. 再观察样本权值的更新:
    1. fm(x)=fm1(x)+αmGm(x)\boldsymbol{f}_m(x)=\boldsymbol{f}_{m-1}(x)+\alpha_m \boldsymbol{G}_m(x)以及wˉi(m)=exp(1KyiTf(m1)(xi))\={w}_i^{(m)}=\exp \left(-\frac{1}{K} \boldsymbol{y}_i^T \boldsymbol{f}^{(m-1)}\left(x_i\right)\right)可得
      wi(m+1)=wi(m)Zmexp(αmKyiTG(m)(xi)){w}_i^{(m+1)}=\frac{{w}_i^{(m)}}{Z_m}\exp \left(-\frac{\alpha_m}{K} \boldsymbol{y}_i^T \boldsymbol{G}^{(m)}\left(x_i\right)\right)
      ci=Gi(m)c_i= G^{(m)}_i时,wi(m+1)=wi(m)Zmexp(αmK1){w}_i^{(m+1)}=\frac{{w}_i^{(m)}}{Z_m}\exp\left(-\frac{\alpha_m}{K-1}\right)
      ciGi(m)c_i\neq G^{(m)}_i时,wi(m+1)=wi(m)Zmexp(Kαm(K1)2)exp(αmK1){w}_i^{(m+1)}=\frac{{w}_i^{(m)}}{Z_m}\exp\left(\frac{K\alpha_m}{(K-1)^2}\right)\exp\left(-\frac{\alpha_m}{K-1}\right)
      故可改写为wi(m+1)=wi(m)Zmexp(Kαm(K1)2I(ciGi(m))){w}_i^{(m+1)}=\frac{{w}_i^{(m)}}{Z_m}\exp\left(\frac{K\alpha_m}{(K-1)^2} I(c_i\neq G_i^{(m)})\right)
      若不考虑αm\alpha_m更新公式中的常数系数(K1)2K\frac{(K-1)^2}{K},则样本权重更新公式为
      wi(m+1)=wi(m)exp(αmI(ciGi(m)))Zm{w}_i^{(m+1)}=\frac{{w}_i^{(m)} \exp \left(\alpha_m I(c_i\neq G_i^{(m)})\right)}{Z_m}
 
 

AdaBoost回归算法

AdaBoost的回归问题有很多变种,以AdaBoost R2算法为例。
  1. 初始化样本权重
    1. D1=(w11,,w1i,,w1N),w1i=1N,i=1,2,,ND_1=\left(w_{11},\cdots,w_{1i},\cdots,w_{1N}\right),w_{1i}=\frac{1}{N},i=1,2,\cdots,N
  1. 对于m=1,2,,Mm=1,2,\cdots,M
    1. 使用具有权重DmD_m的样本集来训练数据,得到弱学习器Gm(x)G_m(x)
    2. 计算训练集上的最大误差
      1. Em=maxyiGm(xi)i=1,2NE_m=\max \left|y_i-G_m\left(x_i\right)\right| i=1,2 \ldots N
    3. 计算每个样本的相对误差:
        • 若损失为绝对损失,则样本的相对误差为emi=yiGm(xi)Eme_{m i}=\frac{\left|y_i-G_m\left(x_i\right)\right|}{E_m}
         
        • 若损失为平方损失,则样本的相对误差为emi=(yiGm(xi))2Em2e_{m i}=\frac{\left(y_i-G_m\left(x_i\right)\right)^2}{E_m^2}
        • 若损失为指数损失,则样本的相对误差为emi=1exp(yiGm(xi)Em)e_{m i}=1-\exp \left(\frac{-\left|y_i-G_m\left(x_i\right)\right|}{E_m}\right)
    4. 计算弱学习器的回归误差率:
      1. em=i=1Nwmiemie_m=\sum_{i=1}^N w_{m i} e_{m i}
    5. 计算弱学习器的系数
      1. αm=em1em\alpha_m=\frac{e_m}{1-e_m}
    6. 更新下一轮的样本权重
      1. wm+1,i=wmiZmαm1emiZm=i=1Nwmiαm1emiw_{m+1, i}=\frac{w_{m i}}{Z_m} \alpha_m^{1-e_{m i}}\\Z_m=\sum_{i=1}^N w_{m i} \alpha_m^{1-e_{m i}}
  1. 构建最终强学习器
    1. 采用的是对加权的弱学习器取权重中位数对应的弱学习器作为强学习器的方法
      f(x)=Gm(x)f(x)=G_{m^*}(x)
      其中,Gm(x)G_{m^*}(x)是所有ln1αm,m=1,2,M\ln \frac{1}{\alpha_m}, m=1,2, \ldots M的中位数对应序号mm^*的弱学习器。
 
 

AdaBoost的训练误差和泛化性能

AdaBoost能在学习过程中不断减少训练误差,即不断减少在训练数据上的分类误差率。
定理一:AdaBoost算法最终分类器的训练误差界为
1Ni=1NI(G(xi)yi)1Niexp(yif(xi))=mZm\frac{1}{N}\sum_{i=1}^NI(G(x_i)\neq y_i)\leq\frac{1}{N}\sum_i\exp(-y_if(x_i))=\prod_mZ_m
这一定理说明,可以在每一轮选取适当的GmG_m使得ZmZ_m最小,从而使训练误差下降最快。
定理二:二类分类问题AdaBoost的训练误差界
m=1MZm=m=1M[2em(1em)]exp(2m=1Mγm2),γm=12em\prod_{m=1}^M Z_m=\prod_{m=1}^M[2\sqrt {e_m(1-e_m)}]\leq \exp\left(-2\sum_{m=1}^M\gamma_m^2\right),\gamma_m=\frac{1}{2}-e_m
推论:如果存在γ>0\gamma>0,对所有m有γmγ\gamma_m\geq \gamma,则
1Ni=1NI(G(xi)exp(2Mγ2)\frac{1}{N}\sum_{i=1}^NI(G(x_i)\leq \exp(-2M\gamma^2)
这表明在此条件下AdaBoost的训练误差是以指数速率下降的。
注意:AdaBoost算法不需要知道下界,它具有适应性,即它能适应弱分类器各自的训练误差率。
  • AdaBoost算法随着弱学习器数目的增加,泛化能力增强。
notion image
 
 

AdaBoost算法的正则化

为了防止Adaboost过拟合,我们通常也会加入正则化项,这个正则化项我们通常称为步长ν\nu
没有正则化的弱学习器的迭代
fm(x)=fm1(x)+αmGm(x)f_m(x)=f_{m-1}(x)+\alpha_m G_m(x)
加入正则化(学习率)的弱学习器的迭代
fm(x)=fm1(x)+ναmGm(x)f_m(x)=f_{m-1}(x)+\nu\alpha_m G_m(x)
学习率的取值范围为0<ν10<\nu \leq 1
较小的ν\nu意味着需要更多的弱学习器的迭代次数,而迭代次数增加可以提高模型的泛化能力。
常用步长和迭代最大次数一起来决定算法的拟合效果。
 
 

AdaBoost的学习器类型

理论上任何学习器都可以用于AdaBoost。
但使用最广泛的AdaBoost弱学习器是单层决策树,也称为决策树桩,当然这个层数也是参数,最好通过交叉验证得到。AdaBoost分类用了CART分类树,而AdaBoost回归用了CART回归树。
其它如SVM、逻辑回归、神经网络等也可以作为弱学习器。
 
 

AdaBoost算法的优缺点

优点:
  1. Adaboost作为分类器时,分类精度很高;
  1. 在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活;
  1. 作为简单的二分类器时,构造简单,结果可理解;
  1. 不容易发生过拟合。
缺点:
  • 对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。
AdaBoost算法不容易出现过拟合问题,但不是绝对的,模型可能会处于过拟合的情况:
  • 弱学习器的复杂度很大,因此选择较小复杂度模型可以避免过拟合问题,如选择决策树桩。adaboost + 决策树 = 提升树模型。
  • 训练数据含有较大的噪声,随着迭代次数的增加,可能出现过拟合情况。
 
 
 
 
 
参考链接: