《机器学习》-周志华 第八章:集成学习 读书笔记

文章目录

      • 1.Boosting
        • 1.1最有名的算法AdaBoost
        • 1.2 Boosting注意
      • 2.Bagging和随机森林
        • 2.1Bagging
            • 自助采样法(bootstrap)
            • oob(out of bag)
        • 2.2随机森林(Random Forest,RF)
      • 3.学习器结合策略
        • 3.1学习器结合的好处
        • 3.2 结合的策略
      • 4.多样性
        • 多样性的增强

  • 集成算法目的:根据某个算法策略组和多个基础模型,从而提高模型的泛化能力
  • 集成学习可以只包含同种类型的个体学习器,如全是决策树、神经网络,称为“同质”(homogeneous);也可以包含不同类型的个体学习器,如同时包含决策树、神经网络,称为异质的(heterogeneous)
  • 集成学习对学习器的要求:
    • 个体学习器不能太坏
    • 学习器间有多样性(有差异)
  • 目前集成主要有两个方法:
    • Boosting:个体学习器间有序列的生成,后学习的模型修正上一个模型的bias
    • bagging/随机森林(Random forest):个体学习器间没有关系,可以同时生成

1.Boosting

  • 对分类问题,从弱学习算法出发,学习得到一系列弱分类器(基本分类器)。这一系列弱分类器有序列的生成,后一个学习的模型修正上一个模型的bias。通过组和这些弱分类器,构成一个强分类器。
  • 弱分类器在学习时通常会改变训练数据的权值分布,即训练数据的概率分布。每轮训练中,提高被前一轮弱分类器错误分类的样本的权值,降低被正确分类的样本的权值
  • 分类准确率高的个体学习器,组和时权重更大

1.1最有名的算法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 X \subseteq R^n,y_i \in Y=\{-1,+1\} xiXRn,yiY={ 1,+1};及弱学习算法
输出:最终分类器G(x)

  • (1) 初始化训练数据的权值分布, D 1 = ( w 11 , ⋯   , w 1 i , ⋯   , w 1 N ) , w 1 i = 1 N D_1 = (w_{11},\cdots,w_{1i},\cdots,w_{1N}),w_{1_i}=\frac{1}{N} D1=(w11,,w1i,,w1N),w1i=N1

  • (2) 反复学习分类器,共要学习M个弱分类器,对于第m次学习, 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):X \rightarrow \{+1,-1\} Gm(x):X{ +1,1}
    • (b) 计算 G m ( x ) G_m(x) Gm(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_{m_i}I(G_m(x_i) \neq y_i) em=P(Gm(xi)̸=yi)=i=1NwmiI(Gm(xi)̸=yi)
    • © 计算 G m ( x ) G_m(x) Gm(x)的系数(分类误差率 e m < 0.5 e_m<0.5 em<0.5越小, α m > 0 \alpha_m>0 αm>0越大,在最终分类器中作用越大)
      α m = 1 2 l o g 1 − e m e m \alpha_m=\frac{1}{2}log\frac{1-e_m}{e_m} αm=21logem1em
    • (d) 更新训练数据集的权值分布(当样本 ( x i , y i ) (x_i,y_i) (xi,yi)在上一个分类器中误分类时( y i G m ( x i ) < 0 y_iG_m(x_i)<0 yiGm(xi)<0), w m + 1 w_{m+1} wm+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}) 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 ) ) , i = 1 , 2 , ⋯   , N w_{m+1,i} = \frac{w_{mi}}{Z_m}exp(-\alpha_my_iG_m(x_i)),i=1,2,\cdots,N wm+1,i=Zmwmiexp(αmyiGm(xi)),i=1,2,,N

    Z m = ∑ i = 1 N w m i e x p ( − α m y i G m ( x i ) ) Z_m = \sum_{i=1}^Nw_{mi}exp(-\alpha_my_iG_m(x_i)) Zm=i=1Nwmiexp(αmyiGm(xi))
    其中 Z m Z_m Zm是一个规范化因子,使 D m + 1 D_{m+1} Dm+1称为一个概率分布,即 ∑ w m i = 1 \sum wmi = 1 wmi=1

  • (3) 构建基本分类器的线性组和
    f ( x ) = ∑ m = 1 M α m G m ( x ) f(x) = \sum_{m=1}^M\alpha_m G_m(x) f(x)=m=1MαmGm(x)
    。得到最终的分类器
    G ( x ) = s i g n ( f ( x ) ) = s i g n ( ∑ m = 1 M α m G m ( x ) ) G(x) = sign(f(x))=sign(\sum_{m=1}^M\alpha_mG_m(x)) G(x)=sign(f(x))=sign(m=1MαmGm(x))

1.2 Boosting注意

  • 对于无法接受带权样本的基本分类器,可以通过“重采样法”处理。即每轮学习中,通过样本分布重新采样,得到新的样本集进行训练。
  • Boosting在每轮都要检查当前生成的基分类器是否比随机猜测好(错误率是否小于0.5)。如果不满足,基学习器被抛弃,学习停止。这时已训练好的基分类器数目可能没有达到设置的学习轮数T;可以采用“重采样法”,重新采样训练基学习器,使学习过程得以持续。
  • Boosting主要关注于降低前一轮训练的偏差

2.Bagging和随机森林

个体学习器间没有关系,可以同时生成

2.1Bagging

  • 使用自助采样法(bootstrap),每个分类器训练时,随机从原数据集中抽取相同数量的数据进行训练。这样采样子集间相互有交叠,但训练数据不至于太少。(对比,将数据集划分为几个不同子集,分别拿来训练不同的分类器,每个训练数据都很少)
  • 可以同一种分类器可以使用多次,或使用完全不同的分类器。
  • 对于分类任务,Bagging通常使用简单投票法;对回归任务,使用简单平均法。
  • Bagging主要关注降低方差
自助采样法(bootstrap)
  • 从训练集中采集固定个数的样本,每采集一个,将样本放回。之前被采集过的样本在放回后有可能继续被采集到。
  • 对于bagging算法,一般会采集和训练样本数相同数目的样本。这样得到的采样集和训练集样本的个数相同,但样本内容不同。
  • 如果对有m个样本训练集做T次的随机采样,由于随机性,T个采样集各不相同。
    假设有m个样本,共采样m次。那么一个样本始终没有被采样到的概率是 p = ( 1 − 1 m ) m p=(1-\frac{1}{m})^m p=(1m1)m,如果 m → ∞ m \rightarrow \infty m p = 1 e = 0.367 p=\frac{1}{e} = 0.367 p=e1=0.367
oob(out of bag)
  • Bootstrap一直没有采样到的数据,约有36.7%。
  • 可以作为验证集对泛化性能做“包外估计”。即计算oob在每个个体学习器上预测的误差率的平均值。
  • 当基学习器是决策树时,可以用来辅助剪枝
  • 当基学习器是神经网络时,可以辅助早期停止以减少过拟合。

2.2随机森林(Random Forest,RF)

  • 在以决策树为基学习器构建Bagging集成的基础上,在决策树训练中引入了随机属性选择。
  • 传统决策树选择当前节点属性集合中的最优属性;而随机森林先从该节点的属性集合中随机选择一部分特征,数量为 n s u b n_{sub} nsub,再从这个子集中选择一个最优特征做决策树的分裂点。其中 n s u b n_{sub} nsub是需要调整的参数,一般推荐 k = log ⁡ 2 d k=\log_2d k=log2d
  • 属性的扰动使最终集成的泛化性能可以通过个体学习器间差异度的增大进一步提升

算法:

  • 对于输入样本集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x m , y m ) } D = \{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\} D={ (x1,y1),(x2,y2),,(xm,ym)},弱分类器迭代次数为T。输出强分类器 f ( x ) f(x) f(x)
    • 对训练集进行t次采样,共采集m次,得到包含m个样本的采样集 D m D_m Dm
    • 用采样集 D m D_m Dm训练第m个决策树模型 G m ( x ) G_m(x) Gm(x),在训练决策树模型节点的时候,在节点上的所有特征中选择一部分样本特征,在这些随机选择的部分样本特征中选择一个最优的特征做决策树左右划分

3.学习器结合策略

3.1学习器结合的好处

  • 学习任务的假设空间很大,如果只用单一学习器,可能因为误选导致泛化性能不佳,多个分类器结合可以减少风险
  • 学习算法有可能陷入局部极小,泛化性能不好,而多次运行可能降低陷入局部极小的风险
  • 若学习任务的真实假设不在当前算法考虑的假设空间中,通过学习多个学习器,可以扩大假设空间。

3.2 结合的策略

  • 平均法(averaging)
    • 简单平均
    • 加权平均

如果任务中样本不充分或存在噪声,学习的权重不靠谱;对于规模大的集成,学习的权重过多容易过拟合。

  • 投票法(voting)
    • 绝对多数投票
    • 相对多数投票
    • 加权投票

如果基学习器的类型不同,概率值不能直接进行比较;可以将概率输出转化为类标记输出再投票

  • 学习法(stacking)
    通过另一个学习器来结合。把个体学习器称为初级学习器,用于结合的学习器称为次级学习器。stacking先从初始数据集训练出初级学习器,然后把初级学习器的输出当作样例输入特征,把初始样本的标记当作样例标记,产生一个新的数据集,用于训练次级学习器。
    算法:
    输入:训练数据集 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)},T个初级学习算法,1个次级学习算法
    • 循环训练好T个初级学习器
    • 用初级学习器未使用的样本产生次级学习器的训练样本
      • 对于每个样本 x i x_i xi
        • 用T个初级学习器,生成T个输出, ( z i 1 , z i 2 , ⋯   , z i T ) (z_{i1},z_{i2},\cdots,z_{iT}) (zi1,zi2,,ziT),用初始样本的标记作样例标记,即 ( ( z i 1 , z i 2 , ⋯   , z i T ) , y i ) ((z_{i1},z_{i2},\cdots,z_{iT}),y_i) ((zi1,zi2,,ziT),yi),生成新的数据集。
    • 用新的数据集训练次级学习器

4.多样性

个体学习器准确性越高、多样性越好,则集成越好

多样性的增强

在学习过程中引入随机性

  • 数据样本扰动
    从给定数据集中产生不同的子集(基于采样法,例如自助采样),训练不同的个体学习器。
  • 输入属性扰动
    从训练样本的一组属性描述中,选取不同的子属性组训练个体学习器。对包含大量冗余属性的数据,能产生多样性大的个体,还会因为属性数减少大幅节省时间开销。若数据只包含少量属性,或冗余属性很少,不宜用输入扰动法。
  • 输出表示扰动法
    对输出表示进行操纵以增强多样性。可对训练样本的类标记稍作变动;或将分类输出转化为回归输出后构建个体学习器;或将原任务拆解为多个可同时求解的子任务。
  • 算法参数扰动
    通过随机设置不同的参数,产生差别较大的个体学习器。

你可能感兴趣的:(《机器学习》-周志华,机器学习-周志华)