pg国际电子游戏app XGBoost算法-目标函数

简单解释一下xgboost这个模型

xg是一个极为强大,极为受欢迎的机器学习模型,其最大的特色便是boosting(改进、推进),那该如何改进呢? , 。围绕xgboost算法,它会率先构建一棵简约的决策树,接着审视该决策树的预测成果,查看出现错报的具体方位,针对这些差错,予以某些改进举措,随后再次获取另——棵决策树,之后又去观察第二棵决策树预测结果中存在错误的地方,进而依据这些错误再度实施一些修改,經由这一次次迅速的改进动作,把错误予以最小化,最终xg能够达成一个极为精准的结果。

有着那样处于上方位置的、极为精略略的一种解释存在,要是深入细致地探究来讲呢,是包含数量众多的关于技术方面的那些细节的。我们能够将这一系列的技术细节全部都径直跳过,那么这种情况下该如何针对那种全然不懂技术的人去阐释说明这个模型呢。

将做菜用来作举例,当我首次进行做菜之时,我并不晓得究竟该如何去做,因而我会凭借着我的直觉来判定我所需添加哪些材料,所需煮多长的时间,其结果大概率是极为不好吃的,在我品尝过后,判断得出是盐放多了pg国际电子游戏app,煮的时间也存在些许长 。下一回做菜之际,我会将盐投放得少些,煮制所耗的时长也会削减5分钟,在第二轮品鉴之后,感觉好像依旧欠缺入味程度,或许是未曾进行腌制,所以在第三次尝试之时,我先把自身的材料腌制三十分钟,接着才启始煮制,经历上百次尝试之后,最终烹制出一道相对完美的菜肴。

在这个特定的时候,我会将其记录下来,我究竟做了些什么呢,比如说放入了三克盐,接着煮了二十分钟,等到下一次去做同样的那道菜之际,我仅仅依照我的菜谱去做便可行了。

那样持续从差错里研习,时常做出改进的演算法便为xg,我所记载下来的这个食谱,是这个菜品所特有的模型参量parameter 。

简介

想要知道,这个模型是在做什么,为什么要这么做

xgboost模型详解_xgboost回归预测_xgboost算法原理

回归树及其数学表达式

xgboost算法原理_xgboost回归预测_xgboost模型详解

xgboost回归预测_xgboost模型详解_xgboost算法原理

回归树,输入一个样本,能得到该样本对应的节点值,然而却无法将树的结构表达出来,仅仅只能表达最终的叶子节点以及节点的值,。

目标函数整体表达式

定好一个模型后,第一步是敲定其目标函数,接着将问题转变为求解最优值问题,像把损失函数降至最小,随后借助各种求解最优值的用于求解凸优化的某些方法,求出基学习器的参数。

首先规定一些用到的数学符号和数学公式

首先定义一下加法模型

xgboost算法原理_xgboost回归预测_xgboost模型详解

模型是借由T个基学习器进行累加而成的,其中每一个基学习器,正是我们上面所提及的回归树,它能够被写成这样的形式,即为前T - 1个基学习器,再加上最后一个基学习器 。

xgboost回归预测_xgboost算法原理_xgboost模型详解

前向分布算法运用的是贪心的策略,逐个对树展开优化,先对第一颗树予以优化,接着对第二颗实施优化,依此类推。假定当下处于需要优化第t颗树的情形,那么能够写成前面t - 1颗树再加上第t颗有待优化的树。第t颗树属于一颗回归树,因而能够写成如下公式:

xgboost算法原理_xgboost模型详解_xgboost回归预测

那接下来,我们对目标函数进行定义,每一个样本输入进模型以后,都能够获取到一个预测值,预测值与真实值便能够计算其间的损失,假定我们总共拥有n个样本,我们把n个样本所得到的损失进行累加,如此便得到了总体的一个损失。为防过拟合,我们会在后面增添一个正则项,也就是将t颗回归树的复杂度予以累加,后面会阐述复杂度是怎样定义的。那么我们的优化目标便是期望达成我们目标函数的最小值【寻得一组.w,让目标函数最小】。

xgboost回归预测_xgboost模型详解_xgboost算法原理

xgboost回归预测_xgboost算法原理_xgboost模型详解

正则项处理

接下来我们分析一下目标函数中的正则项部分。

xgboost模型详解_xgboost算法原理_xgboost回归预测

关于oumeiga的定义如下:

xgboost算法原理_xgboost回归预测_xgboost模型详解

上面框中的函数:

正则项有着防止过拟合的作用,当叶子节点数量不断增多时,这意味着回归树的深度在不断加深,在这种情形下更容易出现过拟合情况,故而我们要对其实施一种惩罚,而惩罚的力度能够借助gama予以控制,同样的道理,要是后面节点值w比较大,那就表明在所有回归树里,这颗回归树的值所占的比例会比较大,比如说我们有5颗回归树,通过xgboost模型得出的结果里,某一颗回归树贡献了80%,这显示出来xgboost模型过拟合的风险较高,所以同样要对其进行惩罚,惩罚的力度可以经由lamda加以控制。

当第一颗回归数训练好之后,然后是第二颗回归数训练好,接着一直到第t - 1颗回归数训练好之后,下面红框中的部分就变成了一个常量,而在我们对第t颗回归树进行优化的时候,它是没有价值的,能够直接删除掉,并且代入第't颗回归树正则项的公式:

xgboost模型详解_xgboost算法原理_xgboost回归预测

xgboost模型详解_xgboost算法原理_xgboost回归预测

推得下方的目标函数公式,能够察觉当下有待优化的正则项部分,仅仅跟当下正要去优化的这颗回归树的节点值w以及节点个数T存在关联,。

xgboost回归预测_xgboost算法原理_xgboost模型详解

目标拆解

接下来我们分析下,除了正则项外,左侧部分的处理

xgboost回归预测_xgboost算法原理_xgboost模型详解

遵循常规机器学习的思路,在进行优化操作时,能够选用梯度下降方法对其中的参数予以优化,经过多次迭代便可获取最后的结果,这属于常规训练模型所具备的思路。然而,我们所拥有的树模型并不适宜运用梯度下降来实施优化,原因在于我们的树模型全部都是阶跃的,呈现出不连续的特性。

xgboost模型详解_xgboost算法原理_xgboost回归预测

然而,我们的树模型不适用于借助梯度下降来实施优化,原因在于我们的树模型全都是阶跃性质的,是不连续的状态。比如说,类似下面这颗树,当x小于1这个状况时,其值为1;然而在x大于等于1这种情形下,其值变为-1。由此能够看见它不是连续函数,我们是不可能对其进行求导操作的。显而易见的是,梯度下降对于它而言也是没有实际意义的。

xgboost回归预测_xgboost模型详解_xgboost算法原理

那样的话,对于树模型而言,我们能够采取怎样的做法呢?首先,我们来回顾一下回归树的运作流程,假定我们拥有5 个训练样本,存在两个特征 x1 与 x2,其实际的值是 y,当我们运用树模型之际,每一个样本都会被归分到回归树当中的某一个叶子节点。

xgboost模型详解_xgboost算法原理_xgboost回归预测

在这个时候,我们能够获取到每一个样本的预测值,像是3以及5,其预测值是w1 。

xgboost回归预测_xgboost模型详解_xgboost算法原理

我们得到每个样本的预测值后,能计算每个样本真实值与预测值的损失值,假设采用平方误差损失,是这样吧,是这样的呀 。

xgboost模型详解_xgboost算法原理_xgboost回归预测

又一次瞧一瞧我们的目标函数,能够瞅见我们得把所有样本的损失值加起来,要留意的是,遍历的次序是依照样本的顺序去开展遍历的。

xgboost算法原理_xgboost模型详解_xgboost回归预测

面向目标函数开展优化作业的方向之处,旨在寻觅一些更为恰当称身的w,从而予以实现所有样例的损失数值进行相加之后所获得的结果为最小的态势,在此过程当中,我们能够得出这样的发现,即我们所拥有的每一个单独特立存有之损失数值,仅仅与当下节点所具备的节点数值之间产生关联,举例说明,像L3以及L5这类情况,仅仅只与w1诞生关联关系。

xgboost算法原理_xgboost回归预测_xgboost模型详解

仅是每一个w,只能够对当下的叶子节点产生影响而已,我们仅是需要依照一个作为单位的叶子节点 ,而把我们整个模型的损失值进行换算,换算成为以各个叶子节点为基础的损失值后进而进行累加同样是可行的,目标函数的优化目标于是就转变成为在全部叶子节点当中,与所对应的损失值全部进行累加后的结果最小 。

xgboost算法原理_xgboost回归预测_xgboost模型详解

拿第一个叶子节点当作例子,去探讨跟它对应的损失值最小值是怎样计算的,第一个节点的损失函数累加成了一个针对w1的一元二次方程,y3以及y5都是已经知道的数据资料。w1很轻易就能找到最值点【w1等于y3加y5】。

xgboost回归预测_xgboost算法原理_xgboost模型详解

遵循着这样的一种思想,我们能够把我们所设立的目标函数进行改写,将原本的遍历样本转变为遍历叶子节点,而叶子节点的数量总共是T个。

xgboost回归预测_xgboost算法原理_xgboost模型详解

能够把上边的目标函数改写成为下面那种公式,把它拆分开来成为以叶子节点的损失值累计和作为单位的一个个的小目标,每一个小目标当中仅仅只有一个变量w。

xgboost算法原理_xgboost模型详解_xgboost回归预测

泰勒二级展开

上面我们已然假定我们的损失函数为平方误差函数,那么于每个叶子节点求取损失值累加和之际,均可获取一个一元二次方程,借由求解w来得到损失最小值。然通常我们不会预先给出损失函数,我们兴许会揣测是否存在这样一种办法,它能够无视我们具体的损失函数,能把目标函数中框出来之处进行分解,使之成为包含w的一个公式 。

xgboost回归预测_xgboost模型详解_xgboost算法原理

实际上能够借助泰勒公式达成我们的想法,于GBDT里我们运用的是泰勒一阶展开公式,在XGboost中我们所需要运用的是泰勒二级展开公式,在不清楚损失函数的情形下,泰勒展开着实相当得力 。

xgboost算法原理_xgboost回归预测_xgboost模型详解

泰勒公式具备这样的作用,它能够把一个函数展开,使其呈现为一个多项式的形式,进而对此函数来做近似的表示问鼎娱官网app下载入口,也就是约等于,并且其阶数越高,所得到的近似表示就会越精确 。

下面举例:

xgboost模型详解_xgboost算法原理_xgboost回归预测

那么,对于我们的损失函数来讲,yi是一个常量,变量仅仅存在于右侧,它类似于多项式里的x,其中t - 1那一部分又是一个固定的值,wj就等同于x - x0 ,。

xgboost算法原理_xgboost模型详解_xgboost回归预测

那么,我们的目标函数,依据泰勒二阶展开,进而变成了,一个针对wj的,一元二次函数。

xgboost模型详解_xgboost回归预测_xgboost算法原理

对于我们求最优解而言,第一个常量是毫无任何意义的,我们能够直接将它删除。我们用gi来表示一阶梯度,我们使用hi来表示二阶梯度。

xgboost算法原理_xgboost模型详解_xgboost回归预测

整理一下,得到下面的公式:

xgboost算法原理_xgboost回归预测_xgboost模型详解

所以我们得到最后的目标函数为:

xgboost算法原理_xgboost模型详解_xgboost回归预测

并且可以进一步去掉中括号:

xgboost算法原理_xgboost回归预测_xgboost模型详解

合并 (1/2)λwj2 ,可得到:

xgboost回归预测_xgboost模型详解_xgboost算法原理

表示一阶梯度的是小写的 gi,而表示二阶梯度的是小写的 hi。对于每一个样本。我们都能够获取到其 gi 。并且也能够获取到其 hi 。

xgboost回归预测_xgboost算法原理_xgboost模型详解

将一阶梯度与二阶梯度的求和结果问鼎赏金女王pg官网入口下载手机版安,用大写字母G以及H来表示,其中G1所代表的是,第一个节点里,g3与g5相加的和,同样地,H1所代表的是,H3与H5相加的和。

xgboost算法原理_xgboost回归预测_xgboost模型详解

能够看到,我们借助泰勒二级展开,把目标函数顺利转化成了一个与wj相关的公式,鉴于我们运用的是泰勒二级展开,故而它最高仅能是二次幂,如此为我们后续的优化以及计算给予了极大的便利。

最优的wj 和最优的目标函数obj

在上面,我们借助了利用泰勒二级展开这一方式,将目标函数进行改写,使其变成了与wj又关联的公式,而在本次的探讨当中,我们要讨论的是怎样去求解w,以此让目标函数达到最小的状态。

xgboost算法原理_xgboost回归预测_xgboost模型详解

当我们求总体损失时,上面曾提及,可换算为求每一个叶子节点的损失累加和,只需保证,每一个叶子节点拥有最小的损失值 。

xgboost算法原理_xgboost回归预测_xgboost模型详解

用公式就可以表示为,将每一个w各个击破,分别求解即可:

xgboost模型详解_xgboost回归预测_xgboost算法原理

虽说基于其属于一元二次方程这一情况,我们能够凭借w等于负的括号b除以2a来直接求解,然而在此之前我们得明确该一元二次方程的图像开口方向究竟是向上还是向下。鉴于hi是损失函数的二阶导,并且我们所涉及的损失函数均为凸函数,是那种存在最小值的类型,对于凸函数而言,任意两点之间的函数值始终处于这两点连线下方或者恰好位于连线上,否则便会与损失函数的含义产生冲突。由于凸函数的二阶导数必定大于0,所以Hj肯定也是大于0的。

xgboost算法原理_xgboost回归预测_xgboost模型详解

λ身为超参数,其也是大于0的,所以从整体上来说,二项式系数大于0,开口是向上的,还能够利用w等于负括号b除以2a来直接求解每一个叶子节点损失值最小值所对应的w。

所以最优解w和最小目标函数可以表示为:

xgboost模型详解_xgboost算法原理_xgboost回归预测

综上所述,当我们拿到一个个样本之后,首先要计算出每个样本的一阶梯度也就是【gj】,还要计算出每个样本的二阶梯度也就是【hj】,接着进而去计算每一个叶子节点所对应的一阶梯度累加和也就是【Gj】以及二阶梯度累加和也就是【Hj】。这样的话就能够计算出每个叶子节点的w值了,而且也能够计算出最小的目标函数。

关键词:

客户评论

我要评论