文章目录

  • 一、GBDT概述
  • 二、GDBT原理
    • 1、负梯度拟合
    • 2、GBDT回归算法
    • 3、GBDT分类算法
      • (1)二元GBDT分类算法
      • (2)多元GBDT分类算法
    • 4、GBDT常用损失函数
      • (1)分类任务
      • (2)回归任务
    • 5、GBDT的正则化
  • 三、从参数空间到函数空间理解GBDT+XGBoost
    • 1、泰勒公式
    • 2、最优化方法
      • (1)梯度下降法(Gradient Descend Method)
      • (2)牛顿法
    • 3、从参数空间到函数空间
      • (1)概述
      • (2)GBDT:梯度下降从参数空间到函数空间
      • (3)XGBoost:牛顿法从参数空间到函数空间

该篇为集成学习的第四篇,主要关注GDBT(Gradient Boosting Decison Tree, 梯度提升树)。在本文的第三部分中,从参数空间到函数空间的角度出发,理解GBDT+XGBoost的原理。

从传送下之前的文章:

  • 集成学习(ensemble learning)(一)
  • 集成学习(ensemble learning)(二)
  • 集成学习(ensemble learning)(三)

一、GBDT概述

GBDT 是一种迭代的前向分布的算法,其弱分类器为CART回归树。

在GBDT的迭代中,假设前一轮迭代得到的强学习器是 ft−1(x)f_{t−1}(x)ft−1​(x),利用前向分布算法,本步的模型可写成 ft(x)=ft−1(x)+ht(x)f_t(x)=f_{t-1}(x)+h_t(x)ft​(x)=ft−1​(x)+ht​(x),损失函数是L(y,ft(x))L(y,f_{t}(x))L(y,ft​(x))。

本轮迭代的目标是找到一个CART回归树模型的弱学习器 ht(x)h_t(x)ht​(x),让本轮的损失函数 L(y,ft(x)=L(y,ft−1(x)+ht(x))L(y,f_t(x)=L(y,f_{t−1}(x)+h_t(x))L(y,ft​(x)=L(y,ft−1​(x)+ht​(x)) 最小。也就是说,本轮迭代找到决策树,要让样本的损失尽量变得更小

GBDT主要的优点

  • 可以灵活处理各种类型的数据,包括连续值和离散值。
  • 在相对少的调参时间情况下,预测的准确率也可以比较高。这个是相对SVM来说的。
  • 使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

GBDT的主要缺点

  • 由于弱学习器之间存在依赖关系,难以并行训练数据。 不过可以通过自采样的SGBT来达到部分并行。

二、GDBT原理

1、负梯度拟合

目标:让样本的损失尽量变得更小,何如解决损失函数拟合方法的问题?

Freidman提出了用损失函数的负梯度来拟合本轮损失的近似值,进而拟合一个CART回归树。第 ttt 轮的第 iii 个样本的损失函数的负梯度表示为
(1)rti=−[∂L(yi,f(xi))∂f(xi)]f(x)=ft−1(x)r_{ti}=- \left[ \frac{\partial{L(y_i,f(x_i))}}{\partial f(x_i)} \right]_{f(x)=f_{t-1}(x)} \tag{1}rti​=−[∂f(xi​)∂L(yi​,f(xi​))​]f(x)=ft−1​(x)​(1)
利用 (xi,rti),i=1,2,...,m(x_i,r_{ti}),i=1,2,...,m(xi​,rti​),i=1,2,...,m,可以拟合一颗CART回归树,得到第 ttt 颗回归树,其对应的叶节点区域 Rtj,j=1,2,...,JR_{tj},j=1,2,...,JRtj​,j=1,2,...,J。其中 JJJ 为叶子节点的个数。

针对每一个叶子节点里的样本,求出使损失函数最小,也就是拟合叶子节点最好的的输出值

ctjc_{tj}ctj​ 如下:
(2)ctj=argmin⎵c∑xi∈RtjL(yi,ft−1(xi)+c)c_{tj}=\underbrace{arg\ min}_c\sum_{x_i\in R_{tj}}L(y_i,f_{t-1}(x_i)+c)\tag{2}ctj​=carg min​​xi​∈Rtj​∑​L(yi​,ft−1​(xi​)+c)(2)
则本轮的决策树拟合函数如下:
(3)ht(x)=∑j=1JctjI(x∈Rtj)h_t(x)=\sum_{j=1}^Jc_{tj}I(x\in R_{tj})\tag{3}ht​(x)=j=1∑J​ctj​I(x∈Rtj​)(3)
从而本轮最终得到的强学习器的表达式如下:
(4)ft(x)=ft−1(x)+∑j=1JctjI(x∈Rtj)f_t(x)=f_{t-1}(x)+\sum_{j=1}^{J}c_{tj}I(x\in R_{tj})\tag{4}ft​(x)=ft−1​(x)+j=1∑J​ctj​I(x∈Rtj​)(4)

一种通用的拟合损失误差的办法:通过损失函数的负梯度来拟合,则无论是分类问题还是回归问题,均可通过其损失函数的负梯度的拟合,就可以用GBDT来解决我们的分类回归问题。区别仅仅在于损失函数不同所导致的负梯度不同。

2、GBDT回归算法

输入:训练集样本 T=(x1,y1),(x2,y2),...,(xm,ym)T={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)}T=(x1​,y1​),(x2​,y2​),...,(xm​,ym​), 最大迭代次数 TTT,损失函数 LLL。
输出:强学习器 f(x)f(x)f(x)

(1)初始化弱学习器
f0(x)=argmin⎵c∑i=1mL(yi,c)f_0(x)=\underbrace{arg\ min}_c\sum_{i=1}^mL(y_i,c)f0​(x)=carg min​​i=1∑m​L(yi​,c)
(2) 对迭代轮数 t=1,2,...,Tt=1,2,...,Tt=1,2,...,T 有:
    a) 对样本 i=1,2,...,mi=1,2,...,mi=1,2,...,m,计算负梯度
rti=−[∂L(yi,f(xi))∂f(xi)]f(x)=ft−1(x)r_{ti}=- \left[ \frac{\partial{L(y_i,f(x_i))}}{\partial f(x_i)} \right]_{f(x)=f_{t-1}(x)}rti​=−[∂f(xi​)∂L(yi​,f(xi​))​]f(x)=ft−1​(x)​
    b) 利用 (xi,rti),i=1,2,...,m(x_i,r_{ti}),i=1,2,...,m(xi​,rti​),i=1,2,...,m,可以拟合一颗CART回归树,得到第 ttt 颗回归树,其对应的叶节点区域 Rtj,j=1,2,...,JR_{tj},j=1,2,...,JRtj​,j=1,2,...,J。其中 JJJ 为叶子节点的个数。
    c) 对叶子区域 j=1,2,...,Jj=1,2,...,Jj=1,2,...,J 计算最佳拟合值:
ctj=argmin⎵c∑xi∈RtjL(yi,ft−1(xi)+c)c_{tj}=\underbrace{arg\ min}_c\sum_{x_i\in R_{tj}}L(y_i,f_{t-1}(x_i)+c)ctj​=carg min​​xi​∈Rtj​∑​L(yi​,ft−1​(xi​)+c)
    d) 更新强学习器
ht(x)=∑j=1JctjI(x∈Rtj)h_t(x)=\sum_{j=1}^Jc_{tj}I(x\in R_{tj})ht​(x)=j=1∑J​ctj​I(x∈Rtj​)

(3)得到强学习器 f(x)f(x)f(x) 的表达式
f(x)=fT(x)=f0(x)+∑t=1T∑j=1JctjI(x∈Rtj)f(x)=f_T(x)=f_{0}(x)+\sum_{t=1}^T\sum_{j=1}^{J}c_{tj}I(x\in R_{tj})f(x)=fT​(x)=f0​(x)+t=1∑T​j=1∑J​ctj​I(x∈Rtj​)

3、GBDT分类算法

由于样本输出不是连续的值,而是离散的类别,导致我们无法直接从输出类别去拟合类别输出的误差

解决方法

  • 使用指数损失函数。GBDT退化为Adaboost算法。
  • 对数似然损失函数。用类别的预测概率值和真实概率值的差来拟合损失。

本文仅关注对数似然损失函数的GBDT分类。

(1)二元GBDT分类算法

对于二元GBDT,如果用类似于 Logistic Regression 的对数似然损失函数,则损失函数为:
L(y,f(x))=log(1+exp(−yf(x)))L(y,f(x))=log(1+exp(-yf(x)))L(y,f(x))=log(1+exp(−yf(x)))
其中,y∈{+1,−1}y∈\{+1,-1\}y∈{+1,−1}。则此时的负梯度误差为
rti=−[∂L(y,f(xi))∂f(xi)]f(x)=ft−1(x)=yi1+exp(yif(xi))r_{ti}=-\left[\frac{∂L(y,f(x_i))}{∂f(x_i)}\right]_{f(x)=f_{t-1}(x)}=\frac{y_i}{1+exp(y_if(x_i))}rti​=−[∂f(xi​)∂L(y,f(xi​))​]f(x)=ft−1​(x)​=1+exp(yi​f(xi​))yi​​
对于生成的决策树,我们各个叶子节点的最佳负梯度拟合值为
ctj=argmin⎵c∑xi∈Rtjlog(1+exp(−yift−1(xi)+c)))c_{tj}=\underbrace{arg\ min}_c\sum_{x_i\in R_{tj}}log(1+exp(-y_if_{t-1}(x_i)+c)))ctj​=carg min​​xi​∈Rtj​∑​log(1+exp(−yi​ft−1​(xi​)+c)))
由于上式比较难优化,我们一般使用近似值代替
ctj=∑xi∈Rtjrtj∑xi∈Rtj∣rtj∣(1−∣rtj∣)c_{tj}=\frac{\sum_{x_i\in R_{tj}}r_{tj}}{\sum_{x_i\in R_{tj}}|r_{tj}|(1-|r_{tj}|)}ctj​=∑xi​∈Rtj​​∣rtj​∣(1−∣rtj​∣)∑xi​∈Rtj​​rtj​​
除了负梯度计算和叶子节点的最佳负梯度拟合的线性搜索,二元GBDT分类和GBDT回归算法过程相同。

(2)多元GBDT分类算法

多元GBDT要比二元GBDT复杂一些,对应的是多元逻辑回归和二元逻辑回归的复杂度差别。假设类别数为K,则此时我们的对数似然损失函数为:
L(y,f(x))=−∑k=1Kyklogpk(x)L(y,f(x))=-\sum_{k=1}^Ky_klogp_k(x)L(y,f(x))=−k=1∑K​yk​logpk​(x)
其中,如果样本输出类别为 kkk,则yk=1y_k=1yk​=1。第 kkk 类的概率 pk(x)p_k(x)pk​(x) 的表达式为:
pk(x)=exp(fk(x))∑l=1Kexp(fl(x))p_k(x)=\frac{exp(f_k(x))}{\sum_{l=1}^Kexp(f_l(x))}pk​(x)=∑l=1K​exp(fl​(x))exp(fk​(x))​
集合上两式,我们可以计算出第 ttt 轮的第 iii 个样本对应类别 lll 的负梯度误差为
rti=−[∂L(yi,f(xi))∂f(xi)]f(x)=fl,t−1(x)=yil−pl,t−1(xi)r_{ti}=-\left[\frac{∂L(y_i,f(x_i))}{∂f(x_i)}\right]_{f(x)=f_{l,t-1}(x)}={y_{il}}-p_{l,t-1}(x_i)rti​=−[∂f(xi​)∂L(yi​,f(xi​))​]f(x)=fl,t−1​(x)​=yil​−pl,t−1​(xi​)
观察上式可以看出,其实这里的误差就是样本 iii 对应类别l的真实概率和 t−1t−1t−1 轮预测概率的差值。
对于生成的决策树,我们各个叶子节点的最佳负梯度拟合值为
ctjl=argmin⎵cjl∑i=0m∑k=1KL(yk,ft−1,l(x)+∑j=0JcjlI(xi∈Rtj))c_{tjl}=\underbrace{arg\ min}_{c_{jl}}\sum_{i=0}^m\sum_{k=1}^KL(y_k,f_{t-1,l}(x)+\sum_{j=0}^Jc_{jl}I(x_i\in R_{tj}))ctjl​=cjl​arg min​​i=0∑m​k=1∑K​L(yk​,ft−1,l​(x)+j=0∑J​cjl​I(xi​∈Rtj​))
由于上式比较难优化,我们一般使用近似值代替
ctjl=K−1K∑xi∈Rtjlrtjl∑xi∈Rtil∣rtil∣(1−∣rtil∣)c_{tjl}=\frac{K-1}{K}\frac{\sum_{x_i\in R_{tjl}}r_{tjl}}{\sum_{x_i\in R_{til}}|r_{til}|(1-|r_{til}|)}ctjl​=KK−1​∑xi​∈Rtil​​∣rtil​∣(1−∣rtil​∣)∑xi​∈Rtjl​​rtjl​​

除了负梯度计算和叶子节点的最佳负梯度拟合的线性搜索,多元GBDT分类和二元GBDT分类以及GBDT回归算法过程相同。

4、GBDT常用损失函数

(1)分类任务

对于分类算法,其损失函数一般有 对数损失函数指数损失函数 两种:

指数损失函数
L(y,f(x))=exp(−yf(x))L(y,f(x))=exp(−yf(x))L(y,f(x))=exp(−yf(x))
其负梯度计算和叶子节点的最佳负梯度拟合参见Adaboost原理篇。

对数损失函数——见2.3.1和2.3.2

  • 二元分类
  • 多元分类

(2)回归任务

常用的损失函数为均方差、绝对损失、Huber损失和分位数损失

  • 均方差损失——最常见
    L(y,f(x))=(y−f(x))2L(y,f(x))=(y-f(x))^2L(y,f(x))=(y−f(x))2

  • 绝对损失
    L(y,f(x))=∣y−f(x)∣L(y,f(x))=|y-f(x)|L(y,f(x))=∣y−f(x)∣
    其对应负梯度误差为:
    sign(yi−f(xi))sign(y_i-f(x_i))sign(yi​−f(xi​))

  • Huber损失
    Huber损失是均方差和绝对损失的折衷产物,对于远离中心的异常点,采用绝对损失,而中心附近的点采用均方差。这个界限一般用分位数点度量。损失函数如下:
    L(y,f(x))={12(y−f(x))2,if ∣y−f(x)∣≤δδ(∣y−f(x)∣−δ2),if ∣y−f(x)∣>δL(y,f(x))= \begin{cases} \frac{1}{2}(y-f(x))^2, & \text {if $|y-f(x)|\leq\delta$} \\ \delta(|y-f(x)|-\frac{\delta}{2}), & \text{if $|y-f(x)|>\delta$} \end{cases}L(y,f(x))={21​(y−f(x))2,δ(∣y−f(x)∣−2δ​),​if ∣y−f(x)∣≤δif ∣y−f(x)∣>δ​
    对应的负梯度误差为:
    r(yi,f(xi))={yi−f(xi),if ∣y−f(x)∣≤δδsign(yi−f(xi)),if ∣y−f(x)∣>δr(y_i,f(x_i))= \begin{cases} y_i-f(x_i), & \text {if $|y-f(x)|\leq\delta$} \\ \delta sign(y_i-f(x_i)), & \text{if $|y-f(x)|>\delta$} \end{cases}r(yi​,f(xi​))={yi​−f(xi​),δsign(yi​−f(xi​)),​if ∣y−f(x)∣≤δif ∣y−f(x)∣>δ​

  • 分位数损失
    它对应的是分位数回归的损失函数,表达式为
    L(y,f(x))=∑y≥f(x)θ∣y−f(x)∣+∑y&lt;f(x)(1−θ)∣y−f(x)∣L(y,f(x))=\sum_{y\geq f(x)}\theta|y-f(x)|+\sum_{y&lt;f(x)}(1-\theta)|y-f(x)|L(y,f(x))=y≥f(x)∑​θ∣y−f(x)∣+y<f(x)∑​(1−θ)∣y−f(x)∣
    其中 θθθ 为分位数,需要在回归前指定。对应的负梯度误差为:
    r(yi,f(xi))={θ,if yi≥f(xi)θ−1,if yi&lt;f(xi)r(y_i,f(x_i))= \begin{cases} \theta, &amp; \text {if $y_i\geq f(x_i)$} \\ \theta-1, &amp; \text{if $y_i &lt; f(x_i)$} \end{cases}r(yi​,f(xi​))={θ,θ−1,​if yi​≥f(xi​)if yi​<f(xi​)​

对于Huber损失和分位数损失,主要用于健壮回归,也就是减少异常点对损失函数的影响。

5、GBDT的正则化

GBDT的正则化主要有三种方式。

第一种:设置步长(learning rate)
定义为 ν\nuν,对于前面的弱学习器的迭代
fk(x)=fk−1(x)+hk(x)f_k(x)=f_{k−1}(x)+h_k(x)fk​(x)=fk−1​(x)+hk​(x)
加上了正则化项,则有
fk(x)=fk−1(x)+νhk(x)f_k(x)=f_{k−1}(x)+\nu h_k(x)fk​(x)=fk−1​(x)+νhk​(x)
其中 ν\nuν 的取值范围为 0&lt;ν≤10&lt;\nu\leq10<ν≤1。对于同样的训练集学习效果,较小的 ν\nuν 意味着需要更多的弱学习器的迭代次数。通常我们用步长和迭代最大次数一起来决定算法的拟合效果。

第二种:子采样比例(subsample)
子采样比例(subsample):取值为 (0,1](0,1](0,1]。注意:这里是 无放回抽样。
选择小于1的比例可以减少方差,即防止过拟合,但是会增加样本拟合的偏差,因此取值不能太低。推荐在 [0.5,0.8][0.5, 0.8][0.5,0.8] 之间。

使用了子采样的GBDT有时也称作随机梯度提升树(Stochastic Gradient Boosting Tree, SGBT)。由于使用了子采样,程序可以通过采样分发到不同的任务去做boosting的迭代过程,最后形成新树,从而减少弱学习器难以并行学习的弱点。

第三种:弱学习器即CART回归树进行正则化剪枝。

三、从参数空间到函数空间理解GBDT+XGBoost

1、泰勒公式

定义:是一个用函数在某点的信息,描述其附近取值的公式。

基本形式
f(x)=f(x0)0!+f′(x0)1!(x−x0)+f′′(x0)2!(x−x0)2+...+f(n)(x0)n!(x−x0)nf(x)=\frac{f(x_0)}{0!}+\frac{f'(x_0)}{1!}(x-x_0)+\frac{f''(x_0)}{2!}(x-x_0)^2+...+\frac{f^{(n)}(x_0)}{n!}(x-x_0)^nf(x)=0!f(x0​)​+1!f′(x0​)​(x−x0​)+2!f′′(x0​)​(x−x0​)2+...+n!f(n)(x0​)​(x−x0​)n
其中一阶泰勒展开式就是求一阶导,二阶展开式即求二阶导。x0x_0x0​为已知,公式表示 f(x)f(x)f(x) 在 x0x_0x0​ 附近的展开。

GDBT 或是 xgb 都是一个参数迭代的过程,因此这里表示一个迭代形式的泰勒函数:假设
xt=xt−1+Δxx^t=x^{t-1}+\Delta xxt=xt−1+Δx
将 f(xt)f(x^t)f(xt) 在 x(t−1)x^{(t-1)}x(t−1) 处进行展开:
f(xt)=f(xt−1+Δx)≈f(xt−1)+f′(xt−1)Δx+f′′(xt−1)Δx22f(x^t)=f(x^{t-1}+\Delta x)\approx f(x^{t-1})+f'(x^{t-1})\Delta x+f''(x^{t-1})\frac{\Delta x^2}{2}f(xt)=f(xt−1+Δx)≈f(xt−1)+f′(xt−1)Δx+f′′(xt−1)2Δx2​

2、最优化方法

(1)梯度下降法(Gradient Descend Method)

机器学习中需要最小化损失函数 L(θ)L(θ)L(θ),这个 θθθ 就是要求解的模型参数。GDM常用于求解无约束最优化问题,是一种迭代方法。初始化 θθθ 为 θ0θ^0θ0,不断迭代来更新 θθθ 的值,进行损失函数的极小化。

  • 迭代公式: θt=θ(t−1)+Δθθ^t = θ^{(t-1)}+\Delta{θ}θt=θ(t−1)+Δθ
    进行一阶泰勒展开:
    L(θt)=L(θt−1+Δθ)≈L(θt−1)+L′(θt−1)Δθ\begin{aligned} L(\theta^t)&amp;=L(\theta^{t-1}+\color{red}{\Delta{\theta}}\color{black}{)}\\ &amp;\approx L(\theta^{t-1})+L'(\theta^{t-1})\color{red}{\Delta{\theta}} \end{aligned}L(θt)​=L(θt−1+Δθ)≈L(θt−1)+L′(θt−1)Δθ​
    要使得 L(θt)&lt;L(θ(t−1))L(θ^t) &lt; L(θ^{(t-1)})L(θt)<L(θ(t−1)),则可取:
    Δθ=−αL′(θt−1),则:θt=θt−1−αL′(θt−1)\color{red}{\Delta{\theta}}\color{black}{=-\alpha L'(\theta^{t-1})},\text{则:}\theta^t=\theta^{t-1}-\alpha{L'(\theta^{t-1})}Δθ=−αL′(θt−1),则:θt=θt−1−αL′(θt−1)
  • 其中解释一下为何 Δθ\Delta\thetaΔθ 要取值为上式:首先明确,α\alphaα 的值为正,为了保证 Δθ\Delta\thetaΔθ 恒为负数,则需要乘上 L′(θt−1)L'(θ^{t-1})L′(θt−1) 先保证其为整数,再加上负号即可。
  • 其实 α\alphaα 就是我们常用的学习速率
  • α\alphaα 如何选取?
    通常我们选取一个很小的值,例如 0.01−0.10.01-0.10.01−0.1 之间。

(2)牛顿法

牛顿法就是求取二阶泰勒展开:
L(θt)≈L(θt−1)+L′(θt−1)Δθ+L′′(θt−1)Δθ22\begin{aligned} L(\theta^t) &amp;\approx L(\theta^{t-1})+L'(\theta^{t-1})\color{red}{\Delta{\theta}}\color{black}+L''(\theta^{t-1})\frac{\color{red}{\Delta\theta^2}}{2} \end{aligned}L(θt)​≈L(θt−1)+L′(θt−1)Δθ+L′′(θt−1)2Δθ2​​
假设我们要求的参数 θ\thetaθ 是一维,则记一阶导数为 ggg,二阶导数为 hhh,那么上式可表示为:
L(θt)≈L(θt−1)+gΔθ+hΔθ22\begin{aligned} L(\theta^t) &amp;\approx L(\theta^{t-1})+g\color{red}{\Delta{\theta}}\color{black}+h\frac{\color{red}{\Delta\theta^2}}{2} \end{aligned}L(θt)​≈L(θt−1)+gΔθ+h2Δθ2​​
此时若求取 L(θt)L(θ^t)L(θt) 的极小值,则令 gΔθ+hΔθ22g{\Delta{\theta}}+h\frac{{\Delta\theta^2}}{2}gΔθ+h2Δθ2​ 极小,求取其一阶导数为 000 时的 Δθ\Delta\thetaΔθ 即可:
∂(gΔθ+hΔθ22)∂Δθ=0Δθ=−gh\begin{aligned} \frac{\partial\left( g\color{red}{\Delta{\theta}}\color{black}+h\frac{\color{red}{\Delta\theta^2}}{2} \right)}{\partial\color{red}\Delta\theta}\color{black} &amp;= 0 \\ \\ \color{red}\Delta\theta=\color{black}-\frac{g}{h} \end{aligned}∂Δθ∂(gΔθ+h2Δθ2​)​Δθ=−hg​​=0
则 θt=θt−1+Δθ=θt−1−gh\theta^t=\theta^{t-1}+\color{red}{\Delta\theta}\color{black}=\theta^{t-1}-\frac{g}{h}θt=θt−1+Δθ=θt−1−hg​
如果参数 θ\thetaθ 是向量形式,那么可以向高维空间推广,此时的 hhh 为 HHH(海森矩阵)。

3、从参数空间到函数空间

(1)概述

以上介绍的梯度下降和牛顿法均为参数空间的优化算法
如何从参数空间推广到函数空间呢?

  • 从 Gradient descend 到 Gradient boosting;
  • 从 Newton’s method 到 Newton Boosting

下面介绍GBDT和xgb中使用的函数空间的优化算法,其基本原理还是梯度下降和牛顿法。

两者关系如下:GBDT泛指一切梯度提升树,包括XGB。为了区分二者,可以利用其梯度下降的原理进行区分

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

(2)GBDT:梯度下降从参数空间到函数空间


其中对于函数空间,仅仅是将参数的拟合换为函数的拟合,每次仍然迭代的是一个负梯度,只是其最终得到的是增量函数的累加而不是增量参数累加。
GBDT里,迭代项 ft(x)f_t(x)ft​(x) 就是我们的决策树,最终将每棵决策树的预测值(函数)加起来。

(3)XGBoost:牛顿法从参数空间到函数空间

对于牛顿法的函数空间优化,其方法类似于梯度下降的函数空间优化。

牛顿法不仅使用目标函数的一阶偏导数,还进一步利用了目标函数的二阶偏导,这样就考虑了梯度变化的趋势,因而能更全面地确定合适的搜索方向以加快收敛。

  • 从参数空间到函数空间理解GBDT+XGBoost

集成学习(ensemble learning)(四)相关推荐

  1. 集成学习(ensemble learning)(二)

    文章目录 一.Bagging原理 1.随机采样(BootStrap) 2.弱分类器和结合决策 二.Bagging算法流程 三.随机森林(Random Forest,RF) 1.特点 2.两个" ...

  2. 集成学习(ensemble learning)(一)

    文章目录 一.集成学习概述 二.个体学习器 三.Boosting 四.Bagging 五.结合策略 1.平均法 2.投票法 3.学习法 (1)核心图解 a.构建新的训练集 b.构建新的测试集 c.最终 ...

  3. 机器学习-集成学习(ensemble learning)

    集成学习ensemble learning:本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务. 可以用两句话形容: 1."三个臭皮匠顶个诸葛亮":一堆 ...

  4. 集成学习(Ensemble Learning)

    在机器学习的有监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时我们只能得到多个有偏好的模型(弱监督模型,在某些方面表现的比较好).集成学习就是组 ...

  5. RDKit |基于集成学习(Ensemble learning)预测溶解度

    Ensemble learning 集成学习 集成学习(Ensemble learning)是这样一个过程,按照某种算法生成多个模型,如分类器或者称为专家,再将这些模型按照某种方法组合在一起来解决某个 ...

  6. 集成学习+ensemble learning

    集成学习+ensemble learning Blending is a word introduced by the Netflix winners. It is very close to sta ...

  7. EL:集成学习(Ensemble Learning)的概念讲解、问题应用、算法分类、关键步骤、代码实现等相关配图详细攻略

    EL:集成学习(Ensemble Learning)的概念讲解.算法分类.问题应用.关键步骤.代码实现等相关配图详细攻略 目录 集成学习Ensemble Learning 1.集成学习中弱分类器选择 ...

  8. 集成学习(ensemble learning)(三)

    集成学习系列第三篇(Boosting相关方法),传送前两篇: 集成学习(ensemble learning)(一) 集成学习(ensemble learning)(二) 文章目录 一.Boosting ...

  9. 集成学习(ensemble learning)干货系列(3)——Boosting方法详解

    集成学习(ensemble learning)干货系列(1)--集成学习概述 集成学习(ensemble learning)干货系列(2)--随机森林(Bagging) Boosting基本原理 提升 ...

最新文章

  1. python中保留两位小数的编写程序_Python中保留两位小数的几种方法
  2. iOS如何使用三方字体
  3. 超级计算机的电力消耗,适用超级计算机的一种优化供电方式
  4. (JAVA) * 使用正则表达式,给字符串排序 * 使用数组排序
  5. scan-cvs-user.sh
  6. Java构造方法的继承调用
  7. 下载所有需要的rpm文件路径
  8. WebRequest 对象的使用
  9. 笑谈“委托”与“事件”
  10. 基于Householder变换的QR分解
  11. while和do-while的区别
  12. C++验证哥德巴赫猜想
  13. 消防信号二总线有没电压_杭后旗医院消防消防设备电源原理
  14. 2010 模板下载 罗斯文_利用模板建立Access 2010数据库的方法
  15. sony手机刷linux,索尼Z3 Z3C 5.0系统刷recovery教程_Sony Z3第三方recovery
  16. 大工微电子器件可靠性基础作业四威布尔分布小题求参数m和t0
  17. C++定义一个对象和new一个对象的区别与联系
  18. [转]94个比付费软件更好的免费软件
  19. 后OA时代:流程再造
  20. 嵌入式系统硬件处理器架构的发展趋势及比较分析

热门文章

  1. Java设计模式-中介者模式
  2. 「后端小伙伴来学前端了」Vue中Props配合自定义方法实现组件间的通信
  3. Apache Log4j2 远程代码执行 漏洞
  4. symfony api 错误响应_如何设计一个牛逼的 API 接口
  5. 8-Qt6 智能指针QPointer
  6. java paint文字_Java中paint怎么用
  7. mysql可以关联视图_Mysql 五: 数据库自关联、视图
  8. java m4a文件拼接_面试官:为啥不提倡字符串拼接?看阿里java开发手册怎么说
  9. linux挂载文件夹查看命令,findmnt命令查找已挂载的文件系统
  10. 单单表单独占一行_数据透视表→Alt+D+P?