NGBoost(Natural Gradient Boosting)是一个比较新的Boosting方法,它是2019年10月斯坦福吴恩达团队在arXiv上发表的,论文连接为:NGBoost: Natural Gradient Boosting for Probabilistic Prediction
可以从它的名字上看出来,该方法使用的是基于自然梯度的boosting方法,这种方法可以直接在输出空间中得到全概率分布,从而用于概率预测来量化不确定性,这是之前的boosting方法都没有的性质。因此,本篇博客是在精读了原论文后对NGBoost产生自己的理解,分享给大家一起学习。
从监督学习的基本概念来看,监督学习的目的在于学习一个由输入到输出的映射,这个映射就是我们平时所学到的模型。而监督学习对应两大分类,一个是回归,一个是分类,这两个任务分别对应的是概率模型和非概率模型,即概率模型是由条件分布 P ( Y ∣ X ) P(Y|X) P(Y∣X)决定的,而非概率模型是由决策函数 Y = f ( X ) Y=f(X) Y=f(X)决定的。
之前的boosting算法(或者说大多数机器学习算法)都不那么强调学到一个条件分布,而是直接让数据去拟合一个假设然后学出一个模型,这个模型不关心这个分布的概率密度到底是什么样子的(而且也没办法输出这个概率密度),而是只关心由这个分布产生的期望是什么,也就是 E [ y ∣ x ] E[y|x] E[y∣x]的估计。就像是,我们给这个模型一个 x x x,它给我们输出最有可能的是哪个值,但是不能告诉你它的依据或者机制是什么。但是NGBoost与其他boosting算法最大的区别之一是可以返回每个预测的概率分布。NGBoost通过直接预测参数 θ \theta θ,产生了概率密度为 P θ ( y ∣ x ) P_\theta(y | x) Pθ(y∣x)的概率预测,有了概率密度,想要做什么不行,所以之前boosting能做的事它都能做到。
具体来说,由于现有的一般梯度对参数不具有不变性,因此难以直接学习参数进行概率预测,所以这里从散度出发引出自然梯度的概念,而广义自然梯度是黎曼空间中最速上升方向,它对参数化是不变(意思就是自然梯度具有良好的性质),使用自然梯度来学习参数使得优化问题不受参数化的影响。然后在GBM的框架下让每个基学习器去拟合这个自然梯度,最后经过放缩和加性组合,得到一个集成模型(的参数),由此就可以学到最终条件分布的参数,从而达到概率预测的目的。算法的伪代码如下:
NGBoost大致做的工作就是这样,但是具体一些细节还需要仔细抠,例如它采用的评分规则(需要满足一定的条件,使得它导出的散度能符合自然梯度的成立条件)、每个基学习器的放缩(类似于线性搜索,因为局部近似可能在非常远离当前参数位置时就不成立)、运行效率(可以用子采样加速大数据集的学习)等。此外,关于NGBoost的经验验证还可以进行探索,这里论文对比了MC dropout和Deep Ensembles,但是还未和之前的boosting方法在非概率预测问题上进行对比,以及它实际运行效率怎样,这些都是未知。
本文提出了自然梯度提升(NGBoost)算法,它为一般的梯度提升带来了概率预测的性能。预测不确定性估计在医疗保健和天气预报等许多应用中是至关重要的。概率预测是量化这些不确定性的一种自然方法,它是一种模型在整个输出空间中输出全概率分布的方法。GBM在结构化输入数据的预测任务中已经取得了广泛的成功,但是对于实值输出的概率预测,目前还没有一个简单的boosting方法。NGBoost是一种梯度提升方法,它利用自然梯度来解决现有梯度增强方法难以进行一般概率预测的技术难题。我们的方法关于基学习器、概率分布和评分规则的选择都是模块化的(意思是可以自行选择)。我们在几个回归数据集上的经验表明,NGBoost在不确定性估计和传统度量方面都提供了具有竞争力的预测性能。
许多现实世界中的有监督机器学习问题都具有表格特征和实值目标。天气预报(根据今天的大气变量预测第二天的温度)和临床预测(根据患者的结构化病历预测死亡时间)是重要的例子。但是模型很少对预测有绝对的信心。在这样的任务中,估计预测中的不确定性是至关重要的。当预测与自动化决策直接相关时,情况尤其如此,因为概率不确定性估计在确定工作流中的手动回退备选方案时非常重要。
贝叶斯方法通过整合后验的预测来自然地产生预测的不确定性估计,但是当一个人只对预测的不确定性感兴趣时,它们也有实际的缺点。贝叶斯模型的精确解仅限于简单模型,而计算更强大的模型如神经网络(NN)和贝叶斯加性回归树(BART)的后验分布比较困难。在这些模型中,需要通过MCMC抽样等计算上花费较大的逼近进行推断。此外,基于抽样的推断需要一些统计知识,因此限制了贝叶斯方法的易用性。在非参数贝叶斯方法中,对非常大的数据集的扩展性可能是一个挑战。贝叶斯深度学习越来越受欢迎,但是,尽管神经网络在感知任务(例如影像和音频输入)方面经验丰富,但当数据是表格形式时,它们的表现与传统方法相当。小的训练数据集和信息先验规范也是贝叶斯神经网络的挑战。
另外,气象学采用概率预报作为天气预报的首选方法。在这种情况下,给定观察到的特征,模型的输出是整个输出空间的概率分布。通过优化评分规则,如最大似然估计(MLE)或更稳健的连续排序概率评分(Continuous Ranked Probability Score,CRPS),对模型进行训练,以最大限度地提高锐度(sharpness),并进行校准。这就产生了校准的不确定度估计。在气象学之外,对事件结果(如死亡率)的精确和校准的概率预测最近在医疗保健领域得到了探索。
同时,梯度提升机(GBMs)是一套高度模块化的方法,可以很好地处理结构化的输入数据,即使是相对较小的数据集。这可以从他们在Kaggle等竞赛中的成功经验中看出。在分类任务中,它们的预测默认是概率性的(通过使用sigmoid或softmax链接函数)。但是在回归任务中,它们只输出一个标量值。在平方误差损失的情况下,这些标量可以解释为具有某种(未知的)常数方差的条件高斯分布的均值。然而,如果假定方差是常数,这种概率解释就没什么用了。预测的分布需要至少有两个自由度(两个参数)才能有效地表达预测的量级和不确定性,如图1所示。正是这个从基学习器同时提升多个参数的问题使得GBMs的概率预测成为一个挑战,NGBoost利用自然梯度解决了这个问题。
成果总结:
在一般的预测中,我们感兴趣的是标量函数 E [ y ∣ x ] E[y|x] E[y∣x]的估计,其中 x x x是观测特征向量, y y y是预测目标。在我们的设置中,我们感兴趣的是通过预测参数 θ ∈ R p \theta\in\mathbb{R}^p θ∈Rp,产生概率密度为 P θ ( y ∣ x ) P_\theta(y | x) Pθ(y∣x)的概率预测,用 F θ F_\theta Fθ表示相应的累计密度。
我们首先概述适当的评分规则及其相应的诱导散度,这为描述自然梯度奠定了基础。
一个合适的评分规则 S \mathcal{S} S将预测概率分布 P P P和一个观察值 y y y(结果)作为输入,并为预测赋值 S ( P , y ) \mathcal{S}(P, y) S(P,y),使结果的真实分布的期望得到最好的分数。在数学符号中,一个评分规则 S \mathcal{S} S是一个适当的评分规则,当且仅当它满足 E y ∼ Q [ S ( Q , y ) ] ⩽ E y ∼ Q [ S ( P , y ) ] ∀ P , Q (1) E_{y\sim Q}[\mathcal{S}(Q,y)]\leqslant E_{y\sim Q}[\mathcal{S}(P,y)]\ \ \ \forall P,Q\tag{1} Ey∼Q[S(Q,y)]⩽Ey∼Q[S(P,y)] ∀P,Q(1)其中 Q Q Q为结果 y y y的真实分布, P P P为任意其他分布(如模型的概率预测)。当训练的时候作为损失函数时,适当的评分规则鼓励模型输出校准的概率。我们限制概率分布的参数族,并由其参数 θ \theta θ确定一个特定的分布。最常用的评分规则是对数评分 L \mathcal{L} L,也称为MLE: L ( θ , y ) = − log P θ ( y ) \mathcal{L}(\theta,y)=-\log P_\theta(y) L(θ,y)=−logPθ(y)
CRPS是另一个合适的评分规则,它通常被认为是MLE的稳健替代。CRPS仅适用于实值概率分布和输出。虽然在明确指定的情况下,MLE具有更好的渐近性,但从经验上看,当噪声模型被错误指定时,CRPS倾向于产生更精确的预测分布。CRPS(记为 C \mathcal{C} C)定义为 C ( θ , y ) = ∫ − ∞ y F θ ( z ) 2 d z + ∫ y ∞ ( 1 − F θ ( z ) ) 2 d z \mathcal{C}(\theta,y)=\int_{-\infty}^yF_\theta(z)^2dz+\int^{\infty}_y(1-F_\theta(z))^2dz C(θ,y)=∫−∞yFθ(z)2dz+∫y∞(1−Fθ(z))2dz其中 F θ F_\theta Fθ是 P θ P_\theta Pθ的累积分布函数。
散度:所有适当的评分规则都满足不等式(1)。右侧比左侧多出的分数是该评分规则所诱导的散度: D S ( Q ∥ P ) = E y ∼ Q [ S ( P , y ) ] − E y ∼ Q [ S ( Q , y ) ] D_\mathcal{S}(Q\|P)=E_{y\sim Q}[\mathcal{S}(P,y)]-E_{y\sim Q}[\mathcal{S}(Q,y)] DS(Q∥P)=Ey∼Q[S(P,y)]−Ey∼Q[S(Q,y)]它必然是非负的,可以被解释为分布 Q Q Q与另一个分布 P P P的差别的一种度量。
MLE评分规则推导出Kullback-Leibler散度(KL散度,或 D K L D_{KL} DKL): D L ( Q ∥ P ) = E y ∼ Q [ L ( P , y ) ] − E y ∼ Q [ L ( Q , y ) ] = E y ∼ Q [ log Q ( y ) P ( y ) ] ≐ D K L ( Q ∥ P ) \begin{aligned}D_\mathcal{L}(Q\|P)&=E_{y\sim Q}[\mathcal{L}(P,y)]-E_{y\sim Q}[\mathcal{L}(Q,y)]\\ &=E_{y\sim Q}\bigg[\log{Q(y)\over P(y)}\bigg]\\ &\doteq D_{KL}(Q\|P) \end{aligned} DL(Q∥P)=Ey∼Q[L(P,y)]−Ey∼Q[L(Q,y)]=Ey∼Q[logP(y)Q(y)]≐DKL(Q∥P)
然而CRPS诱导的 L 2 L^2 L2散度为: D C ( Q ∥ P ) = E y ∼ Q [ C ( P , y ) ] − E y ∼ Q [ C ( Q , y ) ] = ∫ − ∞ ∞ ( F Q ( z ) − F P ( z ) ) 2 d z ≐ D L 2 ( Q ∥ P ) \begin{aligned}D_\mathcal{C}(Q\|P)&=E_{y\sim Q}[\mathcal{C}(P,y)]-E_{y\sim Q}[\mathcal{C}(Q,y)]\\ &=\int_{-\infty}^\infty(F_Q(z)-F_P(z))^2dz\\ &\doteq D_{L^2}(Q\|P) \end{aligned} DC(Q∥P)=Ey∼Q[C(P,y)]−Ey∼Q[C(Q,y)]=∫−∞∞(FQ(z)−FP(z))2dz≐DL2(Q∥P)其中 F Q F_Q FQ和 F P F_P FP是两个分布的累积分布函数。
散度 D K L D_{KL} DKL和 D L 2 D_{L^2} DL2对参数化选择具有不变性。虽然散度通常不是对称的(因此不是距离的度量),但在参数的微小变化时,它们几乎是对称的,可以作为局部的距离度量。当作为局部距离度量时,散度产生了一个统计流形,其中流形中的每个点对应一个概率分布。
评分规则 S \mathcal{S} S在一个参数化的概率分布 P θ P_\theta Pθ上关于参数的(普通)梯度表示为 ∇ S ( θ , y ) \nabla\mathcal{S}(\theta,y) ∇S(θ,y),其中 θ \theta θ为参数和 y y y为结果标签。这是最速上升方向,使得在梯度的那个方向上(相对于任何其他方向)移动参数的一个无穷小量将增加评分规则最多,即 ∇ S ( θ , y ) ∝ lim ϵ → 0 arg max d : ∥ d ∥ = ϵ S ( θ + d , y ) \nabla\mathcal{S}(\theta,y)\propto\lim_{\epsilon\to 0}\argmax_{d:\|d\|=\epsilon}\mathcal{S}(\theta+d,y) ∇S(θ,y)∝ϵ→0limd:∥d∥=ϵargmaxS(θ+d,y)
应该注意的是,这种梯度对重新参数化不是不变的。考虑重新参数化 P θ P_\theta Pθ为 P z ( θ ) ( y ) P_{z(\theta)}(y) Pz(θ)(y),使得当 ψ = z ( θ ) \psi= z(\theta) ψ=z(θ)时, P θ ( y ) = P ψ ( y ) P_{\theta}(y)=P_{\psi}(y) Pθ(y)=Pψ(y)对所有 y y y成立。如果相对于 θ \theta θ和在那个方向上取无限小的一步计算梯度,即从 θ \theta θ到 θ + d θ \theta+d\theta θ+dθ,产生的分布将会和相对于 ψ \psi ψ从 ψ \psi ψ到 ψ + d ψ \psi+d\psi ψ+dψ来计算的梯度不同。换句话说, P θ + d θ ( y ) ≠ P ψ + d ψ ( y ) P_{\theta+d\theta}(y)\neq P_{\psi+d\psi}(y) Pθ+dθ(y)=Pψ+dψ(y)。因此参数化选择会大大影响训练的过程,即使最小值不变。正因为如此,我们有必要更新参数,以反映我们在分布空间中是如何移动的,这才是我们最终感兴趣的。
这促使了自然梯度(表示为 ∇ ~ \tilde\nabla ∇~),其根源可以追溯到信息几何。虽然自然梯度最初是通过 D K L D_{KL} DKL诱导的距离度量来定义统计流形的,但是我们在这里提供了一个更一般的处理方法,它适用于符合某种适当评分规则的任何散度。广义自然梯度是黎曼空间中最速上升方向,它对参数化是不变,定义为: ∇ ~ S ( θ , y ) ∝ lim ϵ → 0 arg max d : D S ( P θ ∥ P θ + d ) = ϵ S ( θ + d , y ) \tilde\nabla\mathcal{S}(\theta,y)\propto\lim_{\epsilon\to 0}\argmax_{d:D_{\mathcal{S}}(P_\theta\| P_{\theta+d})=\epsilon}\mathcal{S}(\theta+d,y) ∇~S(θ,y)∝ϵ→0limd:DS(Pθ∥Pθ+d)=ϵargmaxS(θ+d,y)
通过求解相应的优化问题,得到了该形式的自然梯度为 ∇ ~ S ( θ , y ) ∝ I S ( θ ) − 1 ∇ S ( θ , y ) \tilde\nabla\mathcal{S}(\theta,y)\propto\mathcal{I}_\mathcal{S}(\theta)^{-1}\nabla\mathcal{S}(\theta,y) ∇~S(θ,y)∝IS(θ)−1∇S(θ,y)其中 I S ( θ ) \mathcal{I}_\mathcal{S}(\theta) IS(θ)是在 θ \theta θ处统计流形的黎曼度量,它由评分规则 S \mathcal{S} S导出。
令 S = L \mathcal{S}=\mathcal{L} S=L(即MLE),解上述优化问题,我们得到: ∇ ~ L ( θ , y ) ∝ I L ( θ ) − 1 ∇ L ( θ , y ) \tilde\nabla\mathcal{L}(\theta,y)\propto\mathcal{I}_\mathcal{L}(\theta)^{-1}\nabla\mathcal{L}(\theta,y) ∇~L(θ,y)∝IL(θ)−1∇L(θ,y)其中 I L ( θ ) \mathcal{I}_\mathcal{L}(\theta) IL(θ)是关于 P θ P_\theta Pθ的观测值所带来的费希尔信息量,定义为: I L ( θ ) = E y ∼ P θ [ ∇ θ L ( θ , y ) ∇ θ L ( θ , y ) T ] = E y ∼ P θ [ − ∇ θ 2 L ( θ , y ) ] \begin{aligned}\mathcal{I}_\mathcal{L}(\theta)&=E_{y\sim P_\theta}[\nabla_\theta\mathcal{L}(\theta,y)\nabla_\theta\mathcal{L}(\theta,y)^T]\\ &=E_{y\sim P_\theta}[-\nabla_\theta^2\mathcal{L}(\theta,y)]\end{aligned} IL(θ)=Ey∼Pθ[∇θL(θ,y)∇θL(θ,y)T]=Ey∼Pθ[−∇θ2L(θ,y)]
类似的,令 S = C \mathcal{S}=\mathcal{C} S=C(即CRPS),并且解上述优化问题,我们得 ∇ ~ C ( θ , y ) ∝ I C ( θ ) − 1 ∇ C ( θ , y ) \tilde\nabla\mathcal{C}(\theta,y)\propto\mathcal{I}_\mathcal{C}(\theta)^{-1}\nabla\mathcal{C}(\theta,y) ∇~C(θ,y)∝IC(θ)−1∇C(θ,y)其中 I C ( θ ) \mathcal{I}_\mathcal{C}(\theta) IC(θ)是用 D L 2 D_{L^2} DL2作为局部距离度量的统计流形的黎曼度量,定义为: I C ( θ ) = 2 ∫ − ∞ ∞ ∇ θ F θ ( z ) ∇ θ F θ ( z ) T d z \mathcal{I}_\mathcal{C}(\theta)=2\int_{-\infty}^\infty\nabla_\theta F_\theta(z)\nabla_\theta F_\theta(z)^Tdz IC(θ)=2∫−∞∞∇θFθ(z)∇θFθ(z)Tdz
使用自然梯度来学习参数使得优化问题不受参数化的影响,并且与仅使用梯度相比,具有更高效、更稳定的学习动态。图3显示了在参数为 μ \mu μ(均值)和 log σ \log\sigma logσ(对数标准差)的正态分布的参数空间上,对MLE和CRPS的梯度和自然梯度的向量场。
梯度增强是一种监督学习方法,在这种方法中,若干弱学习器(或基学习器)组合在一个加法集成中。该模型是按顺序学习的,其中下一个基学习器拟合当前集成的训练目标残差。然后根据学习速率对拟合后基学习器的输出进行缩放,并将其加入到集成系统中。
梯度增强是一种有效的函数梯度下降算法。每一阶段的残差是损失函数相对于当前模型的函数梯度。然后,通过让基学习器拟合梯度,将梯度投影到基学习器类的范围内。
boosting框架可以推广到任何基学习器的选择,但最流行的实现使用浅层决策树,因为它们在实践中工作良好。
在将决策树与梯度进行拟合时,算法将数据分割成轴向对齐的切片。分区的每个部分都与树的一个叶节点相关联,并且使其响应变量(该数据集的梯度)尽可能均匀。同质性的标准通常是样本方差。然后将叶节点的预测值(对于所有最终出现在叶节点的样本都是通用的)设置为预测的加性组成来最小化损失函数。这相当于对每个叶节点的函数优化问题进行“线性搜索”,对于某些损失,可以得到闭式解。例如,对于平方误差,线性搜索的结果将产生叶结点中的响应变量的样本均值。
我们现在为概率预测中参数 θ \theta θ的预测来调整梯度增强,我们强调两个改进的机会:
尽管解决分裂的不匹配是一个增量式的改进(XGBoost和LightGBM也解决了这个问题),但是允许多参数boosting是一个根本性的创新,它使基于boosting的概率预测成为可能(包括概率回归和生存预测)。我们的方法提供了这两种改进,我们将在下面进行描述。
NGBoost算法是一种概率预测的监督学习方法,它从条件概率分布 y ∣ x y|x y∣x作为 x x x的函数的预测参数的角度进行增强,这里的 y y y可以是以下几种类型之一( { ± 1 } \{±1\} {±1}, R \mathbb{R} R, { 1 , … , K } \{1,\dots,K\} {1,…,K}, R + \mathbb{R}+ R+, N \mathbb{N} N等), x x x是 R d \mathbb{R}^d Rd中的一个向量。在我们的实验中,我们主要关注实值输出,尽管我们的所有方法都适用于其他模式,如分类和事件预测时间。
该算法有三个模块组成部分,他们需要预先选择作为配置:
在新输入 x x x上的预测 y ∣ x y | x y∣x是由一个条件分布 P θ P_\theta Pθ的形式得到,其中参数 θ \theta θ是由 M M M个基学习器的输出(相应的M梯度提高阶段)和一个初始 θ ( 0 ) \theta^{(0)} θ(0)的加性组合得到的。注意 θ \theta θ可以是一个参数向量(不限于是标量值),并且他们完全确定概率预测 y ∣ x y | x y∣x。例如,使用正态分布时,在这里 θ = ( μ , log σ ) \theta=(\mu,\log\sigma) θ=(μ,logσ)。对于某些 x x x,为了得到的预测参数 θ \theta θ,每个基学习器 f ( m ) f ^{(m)} f(m)将 x x x作为其输入。这里 f ( m ) f ^{(m)} f(m)统称为阶段 m m m的一组基学习者,每个参数一个。例如,对于正态分布的参数 μ , log σ \mu,\log\sigma μ,logσ,这里在每个阶段就有两个基学习器 f μ ( m ) f_\mu^{(m)} fμ(m)和 f log σ ( m ) f_{\log\sigma}^{(m)} flogσ(m),统一地表示为 f ( m ) = ( f μ ( m ) , f log σ ( m ) ) f^{(m)}=\big(f_\mu^{(m)},f_{\log\sigma}^{(m)}\big) f(m)=(fμ(m),flogσ(m))。预测的输出按阶段特定的比例因子 ρ ( m ) \rho^{(m)} ρ(m)和共同的学习率 η \eta η进行缩放: y ∣ x ∼ P θ ( x ) , θ = θ ( 0 ) − η ∑ m = 1 M ρ ( m ) ⋅ f ( m ) ( x ) y|x\sim P_\theta(x),\ \ \ \theta=\theta^{(0)}-\eta\sum_{m=1}^M\rho^{(m)}\cdot f^{(m)}(x) y∣x∼Pθ(x), θ=θ(0)−ηm=1∑Mρ(m)⋅f(m)(x)
比例因子 ρ ( m ) \rho^{(m)} ρ(m)是一个标量,即使分布有多个参数。模型按照顺序学习,每个阶段学到一组基学习器 f ( m ) f ^{(m)} f(m)和一个比例系数 ρ ( m ) \rho^{(m)} ρ(m)。学习算法通过首先估计一个共同的 θ ( 0 ) \theta^{(0)} θ(0)开始,使得所有的训练样本在响应变量上最小化评价规则 S \mathcal{S} S之和,本质上是拟合 y y y的边缘分布。这就是所有样本最初的预测参数 θ ( 0 ) \theta^{(0)} θ(0)。
在每次迭代 m m m中,该算法对于每一个样本 i i i计算关于这个样本到目前为止的预测参数 θ i ( m − 1 ) \theta_i^{(m-1)} θi(m−1)的评价规则 S \mathcal{S} S的自然梯度 g i ( m ) g_i^{ (m)} gi(m)。注意 g i ( m ) g_i^{ (m)} gi(m)与 θ \theta θ有相同的维度。该迭代的一组基学习器 f ( m ) f^{(m)} f(m)拟合预测每个样本 x i x_i xi的自然梯度 g i ( m ) g_i^{ (m)} gi(m)的相应分量。
拟合后的基学习器的输出是自然梯度在基学习器类的范围上的投影。然后这个投影梯度通过一个比例系数 ρ ( m ) \rho^{(m)} ρ(m)进行放缩,因为局部近似可能在非常远离当前参数位置时就不成立。选择比例因子以线性搜索的形式,沿投影梯度方向最小化整体真实评分规则损失。在实践中我们发现,连续地减半这个线性搜索 ρ ( m ) \rho^{(m)} ρ(m)( ρ ( m ) = 1 \rho^{(m)}=1 ρ(m)=1开始),直到比例梯度更新导致相对于上一次迭代较低的总体损失,这样效果相当好而且很容易实现。
一旦比例因子 ρ ( m ) \rho^{(m)} ρ(m)确定后,预测的每个样本的参数就通过把比例梯度 ρ ( m ) ⋅ f ( m ) ( x i ) \rho^{(m)}\cdot f^{(m)}(x_i) ρ(m)⋅f(m)(xi)按照一个较小的学习率(通常为0.1或0.01)进行放缩,然后加到每个 θ i ( m − 1 ) \theta_i^{(m-1)} θi(m−1),然后更新为 θ i ( m ) \theta_i^{(m)} θi(m)。在任何特定的迭代中,较小的学习率不会沿着投影梯度的方向走得太远,从而有助于克服过度拟合。
伪代码在算法1中给出。对于非常大的数据集,可以通过在fit()操作中简单地随机对小批量数据进行子抽样来很容易地提高计算性能。
分裂不匹配。使用决策树作为基学习器时,会出现分裂失配现象。NGBoost使用自然梯度作为响应变量来拟合基学习器。这与Friedman(2001)使用普通梯度形成对比,与Chen和Guestrin(2016)使用牛顿法最小化二阶泰勒近似形成对比。当NGBoost使用回归树作为基学习器时,以自然梯度的样本方差作为分裂准则,以每个叶节点的样本均值作为预测。这是使分裂和线性搜索的标准保持一致的另一种方法,并且是“免费的”,因为它以一种不太特定于决策树的方式使用了自然梯度。这是NGBoost模块化的一个重要方面。
参数化。当概率分布为指数族分布,且参数为指数族的自然参数时,牛顿法相当于自然梯度下降法。然而,在其他参数化和分布中,等价性并不成立。这在boosting中尤其重要,因为根据基学习器的连续偏差,某些参数化选择可能比其他选择产生更合适的模型空间。例如,我们特别感兴趣的一个设置是双参数正态分布。虽然指数家族中,为易于实现和参数化建模方便(将预测的幅度与不确定性估计分开)我们使用一个均值( μ \mu μ)和对数尺度参数( log σ \log\sigma logσ)。由于自然梯度对参数化是不变的,这不会造成问题,而牛顿-拉夫森方法会失败,因为在这种参数化中问题不再是凸的。
多参数boosting。对于预测一个概率分布的多个参数,整体线性搜索(相对于逐叶线性搜索)是一个不可避免的结果。NGBoost对自然梯度的使用使这个问题变得不那么麻烦,因为由于负的费希尔信息量,所有样本的梯度都是“最佳预缩放的”(在参数之间的相对大小和样本之间)。而使用普通的梯度将是次优的,如图4所示。使用自然梯度时,参数收敛速度大约是相同的,尽管不同的条件均值和方差以及从最初的边际分布的不同的“距离”,即使在每次迭代中受到共同的比例因子 ρ ( m ) \rho^{(m)} ρ(m)约束。我们把这种稳定性归因于自然梯度的“最佳预缩放”特性。
我们的实验使用UCI机器学习数据集的存储库,并遵循Hernandez-Lobato和Adams(2015)首次提出的协议。对所有数据集,我们随机保留的10%样本作为测试集。从剩下的90%中,我们开始保留20%作为验证集来选择 M M M(迭代次数),它给出了最佳的对数似然,然后使用选好的 M M M来重新拟合整个90%的样本。然后用重拟合的模型来预测10%的测试集。在所有数据除了Protein和YearMSD数据集(分别重复5次,1次)重复20次整个过程。YearMSD数据集相对于其它来说非常地大,使用的学习速率 η = 0.1 \eta=0.1 η=0.1来拟合,其余数据集的学习速率为0.01。一般来说,我们建议小的学习速度,取决于计算的可行性。
传统的预测性能是由在测试集上的预测均值(即 E ^ [ y ∣ x ] \hat E[y|x] E^[y∣x])的均方根误差(RMSE)来度量。预测不确定性的质量是由负对数似(NLL)(即 log P ^ θ ( y ∣ x ) \log \hat P_\theta(y | x) logP^θ(y∣x))在测试集上衡量。
虽然我们的方法与梯度增强方法最相似,但我们试图解决的问题是概率预测。因此,我们的实证结果是在概率预测任务和数据集上,同样我们的比较是其他概率预测方法。我们将我们的结果与MC dropout和Deep Ensembles进行比较,因为它们在简单性和方法上最具可比性。MC dropout用神经网络来拟合数据,并将Bernoulli dropout解释为一种变分逼近,通过对蒙特卡罗样本进行积分得到预测不确定性。Deep Ensembles用神经网络集成拟合数据集,通过对集成产生的高斯混合进行近似,来获得预测的不确定性。
我们的结果总结在表1中。对于所有结果,将NGBoost配置为正态分布,最大深度为三层的决策树基学习器,以及MLE评分规则。
校准的不确定性估计。概率预测方法大致可分为贝叶斯方法和非贝叶斯方法。利用表格数据集的决策树的贝叶斯方法(包括先验推理和后验推理)包括Chipman等人(2010)和Lakshminarayanan等人(2016)。与我们的工作类似的非贝叶斯方法是Lakshminarayanan等人(2017),他们采用参数化方法来训练异方差不确定性模型。这种捕获不确定性的异方差方法也被称为随机(aleatoric)不确定性估计(Kendall and Gal, 2017)。由于数据集移位或分布外的输入而产生的不确定性(Ovadia et al., 2019)不在我们的工作范围之内。(Guo et al., 2017; Kuleshov et al., 2018; Kumar et al., 2019)还提出了Platt scalaing等事后校准技术,尽管我们关注的是自然校准的学习模型。然而,我们注意到这种事后校准技术与我们提出的方法并不矛盾。
合适的评分规则。Gneiting和Raftery(2007)提出了概率预测中服从校准的最大锐度的范式,并将CRPS评分规则引入了气象学。最近,Avati等人(2019年)将CRPS扩展到事件发生时间的情形,Gebetsberger等人(2018年)对其相对于MLE的权衡进行了实证研究。我们通过将自然梯度引入CRPS并对回归任务提出实用建议来扩展这一工作。
梯度增强。Friedman(2001)提出了梯度增强框架,尽管它主要用于同方差回归,而不是概率预测。我们的动机部分来自决策树基学习器的经验成功,他们对表格数据集(如Kaggle竞争和电子健康记录)有良好的归纳偏差。基于树的增强方法的流行的可扩展的实现包括Chen and Guestrin (2016); Ke et al. (2017)。
我们提出了一种概率预测方法(NGBoost),并在各种数据集上展示了最新的性能。NGBoost将多参数增强算法与自然梯度相结合,有效地估计了假设结果分布的参数随观测特征的变化。与现有的概率预测方法相比,NGBoost灵活、模块化、易用、快速。
未来的工作有很多途径。自然梯度在有限步长的情况下失去了它的不变性,我们可以用微分方程求解来解决高阶不变性(Song et al., 2018)。更好的基于树的基学习器和正则化(如Chen和Guestrin (2016));Ke等人(2017))的研究值得探讨。许多事件发生时间的预测是通过表格数据集做出的,我们预计NGBoost在这种情况下也会表现良好(Schmid和Hothorn, 2008)。