三、Boosting方法
- Boosting方法是使用同一组数据集进行反复的学习,得到一系列简单模型,然后组合这些模型构成一个预测性能十分强大的学习模型。
- Boosting方法是通过不断减小偏差的形式,而Bagging是通过降低方差的方法。
- 大部分Boosting方法是通过改变训练数据集的概率分布(训练数据不同样本的权值),针对不同概率分布的数据调用弱分算法学习一系列的弱分类器
- Boosting解决两个问题:(1)每一轮学习如何改变数据的概率分布;(2)如何将各个弱分类器组合起来。
3.1 Adaboost算法
原理
解决上述两个问题的方式:
- 针对1,提高被前一轮分类器错误分类的样本的权重,降低被正确分类的样本的权重,在上一轮分类器中没得到正确分类的样本,由于权重的增大在后一轮的训练中"备受关注"
- 针对2,各个弱分类器的组合通过采取加权多数表决的方式,加大分类错误率低的弱分类器的权重,减小分类错误率较大的弱分类器的权重。
推导
假设给定一个二分类的训练数据集:
T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) T = {(x_1,y_1), (x_2,y_2), … ,(x_N,y_N)} T=(x1,y1),(x2,y2),…,(xN,yN)
其中每一个样本点由特征和类别组成。特征 x i ∈ X ⊆ R n x_i \in \mathcal{X} \subseteq R^n xi∈X⊆Rn,类别 y i ∈ Y = { − 1 , + 1 } y_i \in \mathcal{Y} = \{-1,+1\} yi∈Y={
−1,+1}, X \mathcal{X} X是特征空间, Y \mathcal{Y} Y是类别集合,输出最终分类器 G ( x ) G(x) G(x)
Adaboost算法:
(1) 初始化训练数据的分布
D 1 = ( w 11 , … , w 1 i , … , w 1 N ) , w 1 i = 1 N , i = 1 , 2 , … , N D_1 = (w_{11},…,w_{1i},…,w_{1N}),w_{1i} = \frac{1}{N},i=1,2,…,N D1=(w11,…,w1i,…,w1N),w1i=N1,i=1,2,…,N
说明:首先假设训练数据得权值分布是均匀分布
(2) 对于 m = 1 , 2 … , M m=1,2…,M m=1,2…,M
- 使用具有权值分布 D m D_m Dm的训练数据集进行学习,得到基本分类器: G m ( x ) : X → { − 1 , + 1 } G_m(x): \mathcal{X} \rightarrow \{-1,+1\} Gm(x):X→{ −1,+1}
- 计算 G m ( x ) G_m(x) Gm(x)在训练集上的分类错误率
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 ) e_m = \sum_{i=1}^NP(G_m(x_i) \neq y_i) = \sum_{i=1}^Nw_{mi}I(G_m(x_i) \neq y_i) em=∑i=1NP(Gm(xi)=yi)=∑i=1NwmiI(Gm(xi)=yi) - 计算 G m ( x ) G_m(x) Gm(x)的系数 α m = 1 2 l o g 1 − e m e m \alpha _m = \frac{1}{2}log\frac{1-e_m}{e_m} αm=21logem1−em 【log返回自然对数】
- 更新训练集的权重分布:
D m + 1 = ( w m + 1 , 1 , … , w m + 1 , i , … w m + 1 , N ) w m + 1 , i = w m i Z m e x p ( − α m y i G m ( x i ) ) , i = 1 , 2 , … , N D_{m+1} = (w_{m+1,1},…,w_{m+1,i},…w_{m+1,N}) \\ w_{m+1,i} = \frac{w_{mi}}{Z_m}exp(-\alpha_my_iG_m(x_i)),i=1,2,…,N Dm+1=(wm+1,1,…,wm+1,i,…wm+1,N)wm+1,i=Zmwmiexp(−αmyiGm(xi)),i=1,2,…,N
Z m Z_m Z