提升算法介绍

提升算法

一.什么是提升

1. 偏差和方差

我们给定一个数据D,自变量x对应的真实值为y(x),根据模型预测值的结果为为 h θ ( x , D ) h_{\theta}(x,D) hθ(x,D)

我们使用平方误差作为目标函数,则目标函数就是: E D [ y ( x ) − h θ ( x , D ) ] 2 E_{D}[y(x) - h_{\theta}(x,D)]^2 ED[y(x)hθ(x,D)]2

我们把上一个式子进行拆解,就得到了方差和偏差。

在这里插入图片描述

那么这两者有和区别呢?

偏差:描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据。

方差:描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散

Bagging能够减少训练方差,对于不剪枝的决策树、神经网络等学习器有良好的集成效果;
Boosting减少偏差,能够基于泛化能力较弱的学习器构造强学习器。

2.提升的概念

提升这个词,是建立在决策树的基础上的。而随机森林的决策树是通过Bagging策略分别进行采样并建立的,各个树之间相对独立。为了提升分类的性能,将分类能力较弱的模型,通过一系列手段,变为分类能力较强的模型,是否有这种可能呢?假定当前已经得到了m-1颗决策树,是否可以通过现有样本和决策树的信息,对第m颗决策树的建立产生有益的影响呢?各个决策树组成随机森林后,最后的分类过程可否在建立决策树时即确定呢?

针对以上这些问题,有人想到了:加权。我们在当前的模型基础上,进行一定程度的加权,是否就可以把弱分类器的泛化功能得到进一步的加强呢?当前已经得到了m-1颗决策树,通过加权的方式,能否让第m棵决策树的建立效果更好呢?在这种情况下,提升的概念就被引出来了。

实际上,提升不仅仅用于决策树,它的思想可以用在很多场景,提升的定义如下:

提升:是一个机器学习技术,可以用于回归和分类问题(是回归还是分类,取决于损失函数是什么),它每一步产生一个弱预测模型(如决策树),并加权累加到总模型中

3. 提升的基本数学理论

如果每一步的弱预测模型生成都是依据损失函数的梯度方向,则称之为梯度提升(Gradient boosting)。乍一听,和回归算法当中的梯度下降法还真是有很多相似支出。

  • 首先我们得知道损失函数具体是什么。这个损失函数的定义域是所有可行的弱函数集合(基函数)。
  • 我们通过求梯度的方式,进行迭代计算,找到一个负梯度方向上的基函数来逐渐逼近局部极小值。

具体落实到理论,我们做如下假设:

我们给定输入向量x和输出变量y组成的若干训练样本(x1 , y1 ),(x2 ,y2 ),…,(xn , yn )。我们的目标就是找到近似函数 F ^ ( x → ) \hat{F}(\overrightarrow{x}) F^(x ),使得损失函数L(y, F(x))最小。

L(y, F(x))的定义不止一种,有两种常见的定义:

在这里插入图片描述

那么最优函数就是:
在这里插入图片描述

如果L函数取的是带平方的那个,我们称之为平方误差,那么预测值就是期望,

如果用的是第二个定义(带绝对值的那个),我们叫它:绝对值误差。假如此时F(x)是一个常数,且这个常数取y1,y2, y3 ……的中位数时,是绝对最小最优解,在这个时候,我们认为F(x)是一组基函数fi(x)的加权和,即:
在这里插入图片描述

那么,为什么F(x)取y的中位数时,就是绝对最小最优解呢?我们做如下证明:

首先,我们给定样本x1, x2, x3 ……,xn,我们计算:

μ ∗ = a r g m i n ∑ i = 1 n ∣ x i − μ ∣ \mu* = argmin \sum_{i=1}^{n}|x_{i} - \mu| μ=argmini=1nxiμ

为了方便计算,我们假定x1到xn是递增排序的,于是,我们可以构造一个函数:

在这里插入图片描述

我们之后求偏导:

在这里插入图片描述

可见,只有k取到中间的数,也就是中位数的时候,上面这个式子才能为0.所以,取中位数

4. 提升算法推导

梯度提升方法寻找最优解F(x),使得损失函数在训练集上的期望最小,一个重要的思想就是:贪心

首先,给定一个常函数,这个也是贪心算法和迭代的起点:

在这里插入图片描述

我们按照贪心的思想进行拓展,拓展到第m个函数:

在这里插入图片描述

在实际操作中,每次用贪心,其实并不具有多少可行性,于是,老生常谈的方法就被提了出来:梯度下降

将样本带入基函数f得到f(x1),f(x2),…,f(xn),从而,L退化为向量L(y1 , f(x1)),L(y2 ,f(x2)),…,L(yn ,f(xn)),于是我们就有了:

在这里插入图片描述

其中,γ为梯度下降的步长,这是一个超参数,可以手动指定,也可以使用线性搜索的方式求最优步长:

在这里插入图片描述

5. 如何操作呢?

以上给出了提升的相关理论和算法的推导,但是,在计算机当中,我们肯定不能直接使用这么一大长串的式子。在计算机中,通常用一个循环来模拟迭代的过程如下:

  • 首先,给定初始模型常函数F0(x)

  • 对于m=1到M:

    • 计算伪残差:

在这里插入图片描述

其中i=1,2,3 ……n。这个L,是基于平方差进行计算的。即:
L ( F ( x i ) ) = 1 m

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值