集成学习
集成学习是一种由多种弱学习器组合成强学习器的策略,主要分为3类:Boosting方法、Bagging方法、Stacking方法。
一、Boosting
Boosting方法基于串行策略,新的学习器由旧的学习器生成。
代表算法有:
- AdaBoost
- 提升树BT
- 梯度提升树GBDT
- XGBoost
Boosting算法要解决两个问题:
- Q1:如何改变样本数据的权值?
- Q2:如何将弱分类器组合成强分类器?
1.1 AdaBoost
对于Boosting对应的两个问题,AdaBoost的策略为:
- A1:开始时分配同样权值,根据分类误差,提升弱分类器中分类错误的样本权值(对错误的更敏感),降低正确分类样本的权值。
- A2:采用加权表决法组合成强分类器,分类错误率小的分类器有更大的权值。
注:用到两种权值,一个是对样本的,一个是对分类器的。对样本的权值分类错的更大,对弱分类器的权值分类越好(错误率越小)的权值越大。
1.1.1 公式推导
数据有N个,基学习器有M个,如第m个基学习器为 B m ( x ) B_m(x) Bm(x),最终输出为由基学习器组合而成的最终学习器B(x)。
1.初始化权重分布
D m = ( w m , 1 , w m , 2 , ⋯   , w m , N ) , w m , i = 1 N D_m=(w_{m,1},w_{m,2},\cdots ,w_{m,N}),w_{m,i}=\frac {1}{N} Dm=(wm,1,wm,2,⋯,wm,N),wm,i=N1
其中权值是分给每个样本的, D m D_m Dm表示第m个基学习器的样本权值分配。
2.每个基学习器的学习过程
2.1 使用权值分布为 D m D_m Dm的数据集,得到基学习器 B m ( x ) B_m(x) Bm(x)的分类结果
B m ( x ) = χ → { − 1 , + 1 } B_m(x)=\chi \rightarrow \{-1,+1\} Bm(x)=χ→{
−1,+1}
即将样本映射到区间[-1,+1]上。
2.2 弱分类器 B m ( x ) B_m(x) Bm(x)的误差
e m = P ( B m ≠ y i ) = ∑ i = 1 N w m , i I ( B m ≠ y i ) e_m=P(B_m\neq y_i) =\sum _{i=1}^{N}w_{m,i}I(B_m\neq y_i) em=P(Bm̸=yi)=∑i=1Nwm,iI(Bm̸=yi)
2.3 计算 B m ( x ) B_m(x) Bm(x)系数
α m = 1 2 l n 1 − e m e m \alpha _m= \frac {1}{2} ln \frac {1-e_m}{e_m} αm=21lnem1−em
由上述公式可以看出某个弱分类器的权值分配的基本原则为:分类的越准,权值越大。
2.4 更新训练集权值分布
D m + 1 = ( w m + 1 , 1 , w m + 1 , 2 , ⋯   , w m + 1 , N ) D_{m+1} =(w_{m+1,1},w_{m+1,2},\cdots ,w_{m+1,N}) Dm+1=(wm+1,1,wm+1,2,⋯,wm+1,N)
其中
w m + 1 , i = w m , i ⋅ e x p ( − α m ⋅ y i B m ( x i ) ) Z m w_{m+1,i}=\frac {w_{m,i}\cdot exp(-\alpha_m \cdot y_i B_m(x_i))}{Z_m} wm+1,i=Zmwm,i⋅exp(−α