集成算法(AdaBoost基本原理)

版权声明:本文为博主原创文章,转载请带上我的博客链接:

1. 引言

提升算法大多都是基于这样的一个思想;对于一个复杂的任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独判断的好。实际上就是 三个臭皮匠,顶个诸葛亮的道理。
AdaBoost算法是提升算法中具有代表性的一种,它通过改变样本的权重,学习多个分类器,并将这些分类器线性组合,提高分类器的性能。

2. 算法

输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) . . . ( x 3 , y 3 ) } T=\{(x_1,y_1),(x_2,y_2)...(x_3,y_3)\} ,其中 x 1 ϵ X ϵ R n x_1\epsilon X\epsilon R_n , y i ϵ Y = { 1 , + 1 } y_i\epsilon Y=\{-1,+1\} ,弱学习方法;
输出:最终分类器 G ( x ) G(x)
(1)初始化训练数据的权值分布 D 1 = ( w l l , . . . , w l i , . . . , w l N ) , w l i = 1 n , i = 1 , 2 , . . . , N D_1=(w_{ll}, ... ,w_li,...,w_{lN}),w_{li}= \frac{1}{n},i=1,2,...,N
(2)对 m = 1 , 2 , . . . , M m=1,2,...,M
(a)使用具有权值分布 D m D_m 的训练数据集学习,得到基分类器 G m ( x ) : x { 1 , + 1 } G_m(x):x \overrightarrow{}\{-1,+1\}
(b)计算 G m ( x ) G_m(x) 在训练集数据上的分类误差率 e m = P ( G m ( x i ) y i ) = i = 1 n w m i I ( G m ( x i ) y i ) e_m=P(G_m(x_i)\neq y_i)=\sum_{i=1}^n w_{mi}I(G_m(x_i)\neq y_i)\quad
©计算 G m ( x ) G_m(x) 的系数 a m = 1 2 l o g ( 1 e m ) e m , a_m = \frac 12log\frac{(1-e_m)}{e_m}, 这里的对数是自然对数
(d)更新训练数据集权值分布 D m + 1 = ( w m + l , l , . . . , w m + l , i . . . , w m + l , N ) D_{m+1}=(w_{m+l,l},...,w_{m+l,i}...,w_{m+l,N})
w m + l , i = w m i Z m e x p ( a m y i G m ( x i ) ) , i = 1 , 2... N w_{m+l,i}=\frac {w_mi}{Z_m}exp(-a_m y_iG_m(x_i)),i=1,2...N 这里 Z m Z_m 是规范化因子
Z m = i = 1 N w m i e x p ( a m y i G m ( x i ) ) Z_m=\sum_{i=1}^Nw_{mi}exp(-a_m y_iG_m(x_i))
他使 D m + 1 D_{m+1} 成为一个概率分布
(3)构建基本分类器线性组合
f ( x ) = m = 1 M a m G m ( x ) f(x) = \sum_{m=1}^{M}a_mG_m(x)
得到最终分类器 G ( x ) = s i g n ( f ( x ) ) = s i g n ( m = 1 M a m G m ( x ) ) G(x)=sign(f(x))=sign( \sum_{m=1}^{M} a_mG_m(x))

3. 算法描述

步骤(1):假设训练数据集具有均匀的权值分布,即每个训练样本在基本分类器的学习中的作用相同,这一假设保证第一步能够在原始数据上学习基本分类器 G 1 ( x ) G_1(x) .
步骤(2):AdaBoost反复学习基本分类器,在每一轮 m = 1 , 2 , 3.. , M m=1,2,3..,M 顺次的执行下列操作:
(a)使用当前分布 D m D_m 加权的训练数据集,学习基本分类器 G m ( x ) G_m(x)
(b)计算基本分类器 G m ( x ) G_m(x) 在加权训练数据集上的分类误差率: e m = P ( G m ( x i ) y i ) = G m ( x i ) y i w m i e_m=P(G_m(x_i)\neq y_i)=\sum_{G_m(x_i)\neq y_i} w_{mi}
这里, w m i w_{mi} 表示第m轮中第i个实例的权值, i = 1 N w m i = 1 \sum_{i=1} ^ {N}w_{mi}=1 .这表明, G m ( x ) G_m(x) 在加权的训练数据集上的分类误差率是被 G m ( x ) G_m(x) 误分类样本的权值之和,由此可以看出数据权值分布 D m D_m 与基本分类器 G ( x ) G_(x) 的分类误差率的关系。
©计算基本分类器 G m ( x ) G_m(x) 的系数 a m a_m . a m a_m 表示 G m ( x ) G_m(x) 在最终分类器中的重要性。
(d)更新训练数据的权值分布为下一轮做准备
步骤(3):线性组合 f ( x ) f(x) 实现M个基本分类器的加权表决。系数 a m a_m 表示了基本分类器 G m ( x ) G_m(x) 的重要性,这里,所有的 a m a_m 之和并不唯一。 f ( x ) f(x) 的符号决定实例x的类, f ( x ) f(x) 的绝对值表示分类的确信度。利用基本分类器的线性组合构建最终分类器是AdaBoost的另一特点。

4. 小结

Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。

参考文献:统计学习-李航


猜你喜欢

转载自blog.csdn.net/H_hei/article/details/84294994