集成学习(bagging boosting)
bagging并行
基学习器不同,在相同的训练集上进行学习;基学习器相同,在训练集的子集上进行训练,若采样过程为有放回采样,则为bagging(bootstrap aggregating);若为无放回采样,则为pasting,即bagging允许训练实例被一个预测器多次采样。
bagging方法在训练过程中,各基分类器之间无强依赖,可以进行并行训练。为了让基分类器间相互独立,将训练集分为若干子集(若训练样本过少,可利用采样),每个基分类器分别进行单独学习,学习的内容可以相同,也可以不同, 也可以部分重叠,最终决策时,每个个体单独做出判断,再通过投票的方式做出最后的决策。
可见,Bagging是通过减小方差来达到提高性能的。投票又分为两种方法,一种为硬投票,即大多数投票,一种为软投票,如果所有分类器都能给出类别的概率,给出平均概率最高的类别作为预测,通常来说,软投票比硬投票更优。
bagging中,最著名的就是基于决策树基分类器的随机森林(Random Forest),随机森林在树的生长上引入了更多的随机性:分裂节点时不再是搜索最好的特征,而是在一个随机生成的特征子集里搜索最好的特征,这导致决策树具有更大的多样性,(再一次)用更高的偏差换取更低的方差。更极端一点,如果我们对每个特征使用随机阈值,而不是搜索得出的最佳阈值,则可以让决策树长得更随机,以更高的偏差换取更低得方差,这叫极端随机树。
boosting串行
boosting通过减小偏差来提高性能,因为前后的基学习器强相关,因此不能有效降低方差。
Adaboost
Adaboost的核心思想是提高那些被前一轮弱分类器分类错误的样本的权值,降低那些被分类正确的样本的权值,最终结果使用加权多数表决法,即加大分类错误率小的弱分类器的权重,减小那些分类错误率大的弱分类器的权值。
算法步骤:
输入:训练数据集 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 ∈ X ⊆ R n , y i ∈ Y = { − 1 , + 1 } x_i\in \mathcal X \subseteq R^n,y_i\in\mathcal Y=\{-1,+1\} xi∈X⊆Rn,yi∈Y={ −1,+1};弱学习算法;
输出:最终分类器 G ( X ) G(X) G(X)
(1).初始化训练数据得权值分布 D 1 = ( w 11 , ⋯ , w 1 i , ⋯ , w 1 N ) , w 1 i = 1 N , i = 1 , 2 , ⋯ , N D_1=(w_{11},\cdots,w_{1i},\cdots,w_{1N}),w_{1i}=\frac{1}{N},i=1,2,\cdots,N D1=(w11,⋯,w1i,⋯,w1N),w1i=N1,i=1,2,⋯,N
(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}
(b).计算 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)在加权的训练数据集上的分类误差率是被 G m ( x ) G_m(x) Gm(x)误分类样本的权值之和。
©.计算 G m ( x ) G_m(x) Gm(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,分类误差越小的基学习器在最终分类器中的比重越大。
(d).更新训练数据集的权值分布 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)