AdaBoost学习-算法步骤

Boosting称为提升,是集成学习(Ensemble Learning)中的一种重要方法, 集成学习中一类是以随机森林(RF)为代表的各学习器并行生成Bagging,一种是以AdaBoost为代表的各学习器串行生成Boosting

AdaBoost"Adaptive Boosting"的缩写,是Yoav FreundRobert Schapire1995年提出的,其意为自适应提升。其自适应表现在前一个学习器预测错误的样本的权值会增大,下一个学习器是在已经发生变化的训练样本空间上得到的。每次迭代都会得到一个新的学习器,当达到某个预设的条件(如基分类器的个数等),迭代停止,所有学习器的预测结果通过线性组合为最终的预测结果。

闲话少叙,直接上算法。

一. 训练数据集

二分类数据集:

T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} T={(x1,y1),(x2,y2),,(xN,yN)}
每个样本点的输入特征 x i ∈ R n x_i \in \Bbb{R}^n xiRn,标签值 y i ∈ { − 1 , + 1 } , i = 1 , 2 , ⋯   , N y_i \in \{-1,+1\}, \quad i =1,2,\cdots,N yi{1,+1}i=1,2,,N
即每个样本点的输入特征是 n n n 维的,训练集一共有 N N N 个样本点。


二. 算法步骤

已知:
训练数据集 T T T

弱分类器 { G 1 ( x ) , G 2 ( x ) , ⋯   , G M ( x ) } \{G_1(x),G_2(x),\cdots,G_M(x)\} {G1(x),G2(x),,GM(x)}

注意:这里所说的弱分类器是已知的意思是仅仅知道分类器的类型,如DTSVM等。

  1. 初始化训练数据集中样本点的权值:
    D 1 = ( w 11 , w 12 , ⋯   , w 1 N ) , w 1 i = 1 N , i = 1 , 2 , ⋯   , N D_1=(w_{11},w_{12}, \cdots,w_{1N}) , \quad w_{1i} = \frac{1}{N}, \qquad i=1,2,\cdots,N D1=(w11,w12,,w1N),w1i=N1,i=1,2,,N
    每个样本点的权重均初始化为 1 N \frac{1}{N} N1

  2. 对于 m = 1 , 2 , ⋯   , M m=1,2,\cdots,M m=1,2,,M

    a. 使用权值为 D m D_m Dm 的数据集训练,得到基分类器:
    G m ( x ) : X → { − 1 , 1 } G_m(x) : \mathcal X \rightarrow \{-1, 1\} Gm(x):X{1,1}
    注:虽然说是使用权值为 D m D_m Dm 的数据集训练得到该基分类器,但实际上此处使用的训练数据与权值 D m D_m Dm 没有任何关系,之所以强调权值 D m D_m Dm 是为了在下一步计算误差中需要用到。

    b. 计算 G m ( x ) G_m(x) Gm(x) 在权重为 D m D_m Dm 的数据集上的分类误差:
    e m = ∑ i = 1 N P ( G m ( x i ) ≠ y i ) = ∑ i = 1 N w m i I ( G m ( x i ) ≠ y i ) = ∑ G m ( x i ) ≠ y i w m i e_m=\sum_{i=1}^{N}P(G_m(x_i) \neq y_i)=\sum_{i=1}^{N}w_{mi}I(G_m(x_i) \neq y_i)= \sum_{G_m(x_i) \neq y_i}w_{mi} em=i=1NP(Gm(xi)=yi)=i=1NwmiI(Gm(xi)=yi)=Gm(xi)=yiwmi
    注:此处计算的分类误差实际上是误分类样本的权重之和,并非一般意义上的分类误差。正因为这样,才能把样本权重的概念引入到算法中。

    c. 计算当前分类器 G m ( x ) G_m(x) Gm(x) 的权重系数:
    α m = 1 2 l o g 1 − e m e m = 1 2 l o g ( 1 e m − 1 ) \alpha_m=\frac{1}{2}log\frac{1-e_m}{e_m}=\frac{1}{2}log(\frac{1}{e_m}-1) αm=21logem1em=21log(em11)
    注: α m \alpha_m αm e m e_m em 负相关,即误分类率越高的分类器权重越低;且当 e m > 0.5 e_m>0.5 em>0.5 时, α m < 0 \alpha_m<0 αm<0,可以考虑将此分类器舍去。

    d. 更新训练数据的权值分布 D m + 1 D_{m+1} Dm+1 :
    D m + 1 = ( w m + 1 , 1 , ⋯   , w m + 1 , i , ⋯   , w m + 1 , N ) D_{m+1}=(w_{m+1,1}, \cdots, w_{m+1,i}, \cdots, w_{m+1, N}) \\[2ex] Dm+1=(wm+1,1,,wm+1,i,,wm+1,N)
    w m + 1 , i = w m i Z m e x p ( − α m y i G m ( x i ) ) = { w m i Z m e − α m , G m ( x i ) = y i w m i Z m e α m , G m ( x i ) ≠ y i \begin{aligned} w_{m+1, i} & = \frac{w_{mi}}{Z_m}exp(-\alpha_m y_i G_m(x_i)) \\[2ex] & = \begin{cases} \frac{w_{mi}}{Z_m}e^{-\alpha_m}, & \text{\qquad$G_m(x_i)=y_i$} \\[2ex] \frac{w_{mi}}{Z_m}e^{\alpha_m}, & \text{\qquad$G_m(x_i) \neq y_i$} \end{cases} \end{aligned} wm+1,i=Zmwmiexp(αmyiGm(xi))=Zmwmieαm,Zmwmieαm,Gm(xi)=yiGm(xi)=yi
    Z m = ∑ i = 1 N w m i e x p ( − α m y i G m ( x i ) ) Z_m=\sum_{i=1}^{N}w_{mi}exp(-\alpha_m y_i G_m(x_i)) Zm=i=1Nwmiexp(αmyiGm(xi))
    注: Z m Z_m Zm是规范化因子,它使 D m + 1 D_{m+1} Dm+1 成为一个概率分布;值得注意的是,此处 D m + 1 D_{m+1} Dm+1 的更新公式是针对二分类且标签是 { − 1 , 1 } \{-1, 1\} {1,1} 的,如果不是二分类或者标签不是 { − 1 , 1 } \{-1, 1\} {1,1} 时,该更新公式不适用;可以看出,误分类样本的权值被放大,而样本本身并没有发生改变,这也是AdaBoost的一个特点。

  3. 构建最终分类器:
    f ( x ) = ∑ m = 1 M α m G m ( x ) G ( x ) = s i g n ( f ( x ) ) = s i g n ( ∑ m = 1 M α m G m ( x ) ) s i g n ( x ) = { 1 , x > 0 − 1 , x ≤ 0 f(x)=\sum_{m=1}^{M}\alpha_m G_m(x) \\[2ex] G(x)=sign(f(x))=sign \left (\sum_{m=1}^M\alpha_mG_m(x) \right) \\[2ex] sign(x) = \begin{cases} 1, & \text{\qquad $x>0$} \\[2ex] -1, & \text{\qquad $x\leq0$} \end{cases} f(x)=m=1MαmGm(x)G(x)=sign(f(x))=sign(m=1MαmGm(x))sign(x)=1,1,x>0x0
    注: f ( x ) f(x) f(x) 表示各分类器输出结果的线性组合,使用 s i g n ( f ( x ) ) sign(f(x)) sign(f(x)) 函数表示线性组合的结果是输出 1 1 1 的分类器占优势还是输出 − 1 -1 1 的分类器占优势;注意此处的 α m \alpha_m αm 是分类器 G m ( x ) G_m(x) Gm(x) 的重要性的衡量指标,并不满足 ∑ m = 1 M α m = 1 \sum_{m=1}^{M}\alpha_m=1 m=1Mαm=1 ;此处的公式还是仅适用于二分类且标签为 { − 1 , 1 } \{-1, 1\} {1,1},其余情况并不适用。

参考:《统计学习算法》 李航

你可能感兴趣的:(机器学习,机器学习,adaboost算法)