【机器学习入门】集成学习之梯度提升算法

本文围绕提升算法展开,介绍了提升方法基本思路,即从弱学习算法出发构建强分类器。重点阐述梯度提升算法,它结合梯度下降法与提升算法,将回归问题转化为函数优化问题。还分析了算法模型的偏差与方差,不同集成学习方法可从这两方面降低预测误差。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系列文章目录

第1章 专家系统
第2章 决策树
第3章 神经元和感知机
识别手写数字——感知机
第4章 线性回归
第5章 逻辑斯蒂回归和分类
第5章 支持向量机
第6章 人工神经网络(一)
第6章 人工神经网络(二) 卷积和池化
第6章 使用pytorch进行手写数字识别
实操练习 使用Yolo模型进行物体检测
第7章 集成学习 AdaBoost算法



前言

自适应增强算法AdaBoost是一种提升(Boosting)算法。提升算法,或者叫作增强算法,是以迭代的方式将若干弱模型组合为一个强模型,每一轮迭代产生一个“弱模型”,经过若干轮迭代之后,将弱模型进行加权融合,组成一个“强模型”。这就是提升算法的一般框架。而梯度提升算法,是另一种应用广泛的通用提升算法。


一、提升方法的基本思路

提升方法基于这样一种思想:对于一个复杂任务来说,将多个专家的判断进行适当的总和所得出的判断,要比其中任何一个专家单独的判断好。

“强可学习”strongly learnable
在概率近似正确(probably approximately correct, PAC)学习的框架中,一个概念(一个类),如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么就称这个概念是强可学习的。
“弱可学习”weakly learnable
一个概念(一个类),如果存在一个多项式的学习算法能够学习它,学习的正确率仅比随机猜测略好,那么就称这个概念是弱可学习的。

Schapire后来证明强可学习与弱可学习是等价的,也就是说,在PAC学习的框架下,一个概念是强可学习的充分必要条件是这个概念是弱可学习的。

这样一来,如果已经发现了“弱学习算法”,那么能否将它提升(boost)为“强学习算法” 呢?
对于分类问题而言,给定一个训练样本集,求比较粗糙的分类规则(弱学习器)要比求精确的分类规则(强分类器)容易得多。提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(又称基本分类器),然后组合这些弱分类器,构成一个强分类器。
大多数的提升方法都是改变训练数据的概率分布(训练数据的权值分布),针对不同的训练数据分布调用弱学习算法学习一系列弱分类器。

对于提升方法来说,有两个问题需要回答:一是在每一轮如何改变训练数据的权值或者概率分布;二是如何将弱分类器组合成一个强分类器。
对于第一个问题,AdaBoost的做法是,提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值。这样一来,那些没有得到正确分类的数据,由于其权值的加大,而受到后一轮的弱分类器的更大的关注。于是,分类问题被一系列的弱分类器“分而治之”。
对于第二个问题,AdaBoost采取加权多数表决的方法,加大分类误差小的弱分类器的权值,使其在表决中起较大作用;减小分类误差大的弱分类器的权值,使其在表决中起较小的作用。

二、梯度提升算法

梯度提升算法(Gradient Boosting)是梯度下降法(Gradient Desent Method)和提升算法(Boosting Algorithm)的结合。该算法将回归问题看作某种损失函数的优化问题,这是应用“梯度下降法”的一般思路。
回归问题的目标是产生一个函数映射,从给定的输入 x \boldsymbol{x} x产生一个输出 F ( x ) F(\boldsymbol{x}) F(x)。训练数据是一些已知的 ( x , y ) (\boldsymbol{x},y) (x,y)组合,训练这个预测模型的目标就是缩小 F ( x ) F(x) F(x) y y y的差距。可以采用最小二乘法中的均方误差,逻辑斯蒂回归中的交叉熵损失函数等。我们可以抽象的把这种差距记为函数 L ( F ( x ) , y ) L(F(\boldsymbol{x}),y) L(F(x),y) ,而梯度提升算法的目标就是最小化这个函数的值,这样我们就将一个回归问题转化为一个函数优化问题,对于函数优化问题,就可以采用梯度下降算法来解决。

回顾梯度下降法

梯度下降法的优化对象通常是模型的参数变量,而在梯度提升算法中,优化的对象是“弱模型”,弱模型本身就是一个函数,因此,我们要从“变量空间”的梯度下降,迁移到“函数空间”的梯度下降。
我们先观察“变量空间”中的梯度下降。假设我们要计算使得 L ( x ) L(\boldsymbol{x}) L(x)取得极小值的 x ∗ \boldsymbol{x}^* x
x ∗ = a r g   m i n x   L ( x ) \boldsymbol{x}^*=arg \space \underset{x}{min} \space L(\boldsymbol{x}) x=arg xmin L(x)
首先,给 x \boldsymbol{x} x一个初始猜测 x 0 \boldsymbol{x}_0 x0。然后计算在 x = x 0 \boldsymbol{x=\boldsymbol{x}_0} x=x0出的梯度,然后朝着梯度相反的方向给 x 0 \boldsymbol{x}_0 x0一个增量 Δ x 1 \Delta \boldsymbol{x}_1 Δx1,得到 x 1 \boldsymbol{x}_1 x1,依次类推。
在第 m m m次迭代,我们要计算如下的梯度 g m \boldsymbol{g}_m gm
g m = { [ ∂ L ( x ) ∂ x ] x = x m − 1 } \boldsymbol{g}_{m}=\left\{\left[\frac{\partial L(\boldsymbol{x})}{\partial \boldsymbol{x}}\right]_{\boldsymbol{x}=\boldsymbol{x}_{m-1}}\right\} gm={ [xL(x)]x=xm1}
其中 x m − 1 \boldsymbol{x}_{m-1} xm1是此前 m − 1 m-1 m1次迭代的增量累加的结果。为了表达方便,我们令 Δ x 0 = x 0 \Delta \boldsymbol{x}_0=\boldsymbol{x}_0 Δx0=x0,则有
x m − 1 = ∑ i = 0 m − 1 Δ x i \boldsymbol{x}_{m-1}=\sum_{i=0}^{m-1}{\Delta \boldsymbol x_i} xm1=i=0m1Δxi
每次迭代的增量都朝着梯度相反的方向。设第 m m m次的学习率为 ρ m \rho_m ρm,那么,第 m m m次的增量 Δ x m \Delta \boldsymbol x_m Δxm如下:
Δ x m = − ρ m g m \Delta \boldsymbol x_m = -\rho _m \boldsymbol{g}_{m} Δxm=ρmgm
这个学习率也是可以优化的,根据损失函数找到每一步的最佳学习率。这相当于在梯度相反的方向上做一次线性搜索,找到使得损失函数极小化的点。
ρ m = a r g   m i n ρ   L ( x m − 1 − ρ g m ) \rho_m=arg \space \underset{\rho}{min} \space L(\boldsymbol{x}_{m-1}-\rho \boldsymbol{g}_m) ρm=arg ρmin L(xm1ρgm)
以上就是对梯度下降法的一般性描述。最终经过 M M M次迭代,可以找到一个能够极小化 L ( x ) L(\boldsymbol{x}) L(x) x M \boldsymbol{x}_M xM,这个 x M \boldsymbol{x}_M xM

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值