ML之集成学习

1. 机器学习中的集成学习

顾名思义,集成学习(ensemble learning)指的是将多个学习器进行有效地结合,组建一个“学习器委员会”,其中每个学习器担任委员会成员并行使投票表决权,使得委员会最后的决定更科学,即其泛化性能要能优于其中任何一个学习器。

1.1 概述

1.1.1 个体与集成

个体学习器1
结合模块
个体学习器2
个体学习器3
输出

在上图的集成模型中,若个体学习器都属于同一类别,例如都是决策树或都是神经网络,则称该集成为同质的(homogeneous);若个体学习器包含多种类型的学习算法,例如既有决策树又有神经网络,则称该集成为异质的(heterogenous)。

  • 同质集成:个体学习器称为“基学习器”(base learner),对应的学习算法为“基学习算法”(base learning algorithm)。

  • 异质集成:个体学习器称为“组件学习器”(component learner)或直称为“个体学习器”。

集成学习的两个重要概念:准确性和多样性(diversity)。准确性指的是个体学习器不能太差,要有一定的准确度;多样性则是个体学习器之间的输出要具有差异性。通过下面的这三个例子可以很容易看出这一点,准确度较高,差异度也较高,可以较好地提升集成性能。

1.1.2 Boosting

Boosting是一族可将弱学习器提升为强学习器的方法。工作机制:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。


1.2 Bagging与Random Forest

相比之下,Bagging与随机森林算法就简洁了许多,上面已经提到产生“好而不同”的个体学习器是集成学习研究的核心,即在保证基学习器准确性的同时增加基学习器之间的多样性。而这两种算法的基本思(tao)想(lu)都是通过“自助采样”的方法来增加多样性。

1.2.1 Bagging

Bagging是一种并行式的集成学习方法,即基学习器的训练之间没有前后顺序可以同时进行,Bagging使用“有放回”采样的方式选取训练集,对于包含m个样本的训练集,进行m次有放回的随机采样操作,从而得到m个样本的采样集,这样训练集中有接近36.8%的样本没有被采到。按照相同的方式重复进行,我们就可以采集到T个包含m个样本的数据集,从而训练出T个基学习器,最终对这T个基学习器的输出进行结合。
lim ⁡ m → ∞ ( 1 − 1 m ) m → 1 e ≈ 0.368 \displaystyle\lim_{m \rightarrow \infty}(1- {1\over m})^m \rightarrow {1\over e} \approx 0.368 mlim(1m1)me10.368
可以看出Bagging主要通过样本的扰动来增加基学习器之间的多样性,因此Bagging的基学习器应为那些对训练集十分敏感的不稳定学习算法,例如:神经网络与决策树等。从偏差-方差分解来看,Bagging算法主要关注于降低方差,即通过多次重复训练提高稳定性。不同于AdaBoost的是,Bagging可以十分简单地移植到多分类、回归等问题。总的说起来则是:AdaBoost关注于降低偏差,而Bagging关注于降低方差

1.2.2 随机森林

RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树训练过程中引入了随机属性选择。

具体来说,传统决策树在选择划分属性时是在当前节点的属性集合(假定有d个属性)中选择一个最优属性;而在RF中,对基决策树的每个节点,先从该节点的属性中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。


1.3 结合策略

1.3.1 平均法(回归问题)

对于数值型输出,最常用的结合策略是平均法(averaging)

  • 简单平均法

H ( x ) = 1 T ∑ i = 1 T h i ( x ) H(x) = {1\over T} \displaystyle\sum_{i=1}^Th_i(x) H(x)=T1i=1Thi(x)

  • 加权平均法

H ( x ) = ∑ i = 1 T w i h i ( x ) H(x) = \displaystyle\sum_{i=1}^T w_ih_i(x) H(x)=i=1Twihi(x)
其中 w i w_i wi是个体学习器 h i h_i hi的权重,通常要求 w i ≥ 0 w_i\geq0 wi0, ∑ i = 1 T w i = 1 \displaystyle\sum_{i=1}^T w_i = 1 i=1Twi=1

一般而言,在个体学习器性能相差较大时宜使用加权平均法,而在个体学习器性能相近时宜使用简单平均法。

1.3.2 投票法(分类问题)

1.3.3 学习法

当训练数据很多时,一种更为强大的结合策略是使用“学习法”,即通过另一个学习器来进行结合。典型代表:Stacking。

把个体学习器称为初级学习器,用于结合的学习器称为次级学习器或者y元学习器meta-learner。

基本思想:Stacking先从初始数据集训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器。在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。

1.4多样性(diversity)

1.4.1 误差-分歧分解
1.4.2 多样性度量
1.4.3 多样性增强

1.5 Boosting模型

1.5.1 数学准备

  • 1.泰勒公式

    • 定义:泰勒公式是一个用函数在某点的信息描述其附近取值的公式。局部有效性
      基本形式:
      f ( x ) = ∑ n = 0 ∞ f ( n ) ( x 0 ) n ! ( x − x 0 ) n f(x)=\sum_{n=0}^\infty {f^{(n)}(x_0) \over n!}(x-x_0)^n f(x)=n=0n!f(n)(x0)(xx0)n
  • 一阶泰勒展开: f ( x ) ≈ f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) f(x) \approx f(x_0)+f '(x_0)(x-x_0) f(x)f(x0)+f(x0)(xx0)

  • 二阶泰勒展开: f ( x ) ≈ f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + f ′ ′ ( x 0 ) ( x − x 0 ) 2 2 f(x) \approx f(x_0)+f '(x_0)(x-x_0) + f''(x_0) {(x-x_0)^2 \over 2} f(x)f(x0)+f(x0)(xx0)+f(x0)2(xx0)2

  • 迭代形式:假设 x t = x t − 1 + Δ x x^t=x^{t-1}+\Delta x xt=xt1+Δx,将 f ( x t ) f(x^t) f(xt) x t − 1 x^{t-1} xt1处进行泰勒展开

f ( x t ) = f ( x t − 1 + Δ x ) ≈ f ( x t − 1 ) + f ′ ( x t − 1 ) Δ x + f ′ ′ ( x t − 1 ) Δ x 2 2 f(x^t) = f(x^{t-1}+\Delta x) \approx f(x^{t-1})+f '(x^{t-1})\Delta x + f''(x^{t-1}) {\Delta x^2 \over 2} f(xt)=f(xt1+Δx)f(xt1)+f(xt1)Δx+f(xt1)2Δx2

  • 2.梯度下降

在机器学习任务中,需要最小化损失函数 L ( θ ) L(\theta) L(θ),其中 θ \theta θ是要求解的模型参数。梯度下降法常用来求解这种无约束最优化问题,是一种迭代方法:选取初值 θ 0 \theta^0 θ0
,不断迭代,更新 θ \theta θ的值,进行损失函数的极小化。

迭代公式: θ t = θ t − 1 + Δ θ \theta^t = \theta^{t-1}+\Delta \theta θt=θt1+Δθ
L ( θ t ) L(\theta^t) L(θt) θ t − 1 \theta^{t-1} θt1进行一阶泰勒展开:
L ( θ t ) = L ( θ t − 1 + Δ θ ) ≈ L ( θ t − 1 ) + L ( θ t − 1 ) Δ x L(\theta^t) = L(\theta^{t-1}+\Delta \theta) \approx L(\theta^{t-1})+L(\theta^{t-1})\Delta x L(θt)=L(θt1+Δθ)L(θt1)+L(θt1)Δx
要使得 L ( θ t ) < L ( θ t − 1 ) L(\theta^t) < L(\theta^{t-1}) L(θt)<L(θt1),可取: Δ θ = − α L ( θ t − 1 ) \Delta \theta = - \alpha L(\theta^{t-1}) Δθ=αL(θt1),则: θ t = θ t − 1 − α L ( θ t − 1 ) \theta^t = \theta ^{t-1}- \alpha L(\theta^{t-1}) θt=θt1αL(θt1)

  • 3.牛顿法 Newton’s Method

L ( θ t ) L(\theta^t) L(θt) θ t − 1 \theta^{t-1} θt1处进行二阶泰勒展开:

L ( θ t ) ≈ L ( θ t − 1 ) + L ′ ( θ t − 1 ) Δ θ + L ′ ′ ( θ t − 1 ) Δ θ 2 2 L(\theta^t) \approx L(\theta^{t-1})+L'(\theta^{t-1})\Delta \theta + L''(\theta^{t-1}) {\Delta \theta^2 \over 2} L(θt)L(θt1)+L(θt1)Δθ+L(θt1)2Δθ2
简化一下:
L ( θ t ) ≈ L ( θ t − 1 ) + g Δ θ + h Δ θ 2 2 L(\theta^t) \approx L(\theta^{t-1})+g\Delta \theta + h {\Delta \theta^2 \over 2} L(θt)L(θt1)+gΔθ+h2Δθ2
Δ θ \Delta \theta Δθ求偏导,求得 Δ θ = − g h \Delta \theta = -{g \over h} Δθ=hg,故 θ t = θ t − 1 + Δ θ = θ t − 1 − g h \theta^t = \theta^{t-1}+\Delta \theta=\theta^{t-1} -{g \over h} θt=θt1+Δθ=θt1hg

推广到向量形式,迭代公式: θ t = θ t − 1 − H − 1 g \theta^t=\theta^{t-1} -H^{-1}g θt=θt1H1g,H是海森矩阵

  • 从参数空间到函数空间
    • GBDT在函数空间中利用梯度下降法进行优化
    • XGboost在函数空间中用牛顿法进行优化

实际上GBDT泛指所有梯度提升树算法,包括XGboost。

小结:

  • Boosting算法是一种加法模型(additive training)
    F ( x ) = ∑ t = 0 T f t ( x ) F(x)=\sum_{t=0}^T f_t(x) F(x)=t=0Tft(x)
  • 基分类器 常采用回归树和逻辑回归,树模型有以下优缺点:
    • 可解释性强
    • 可处理混合类型特征
    • 具体伸缩不变性(不用归一化特征)
    • 有特征组合的作用
    • 可自然地处理缺失值
    • 对异常点鲁棒
      -有特征选择作用
      -可扩展性强,容易并行
    • 缺乏平滑性(回归预测时输出值只能 输出有限的若干种数值)
    • 不适合处理高维稀疏数据

1.5.2 Gradient Boosting Tree

1.5.3 XGboost

1.5.4 高效的工具包 LightGBM

对于GBDT、XGboost下两篇文章再总结!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值