XGBoost与GBDT(二)-算法推导

2019-03-28  本文已影响0人  MashoO

前言

XGBoost跟GBDT是两种应用非常广泛的树模型,之前在几种最优化方法对比中,简单回顾了一下几种常见的最优化方法,算是对这篇内容的简单铺垫. 形象地来说, XGBoost与GBDT都是基于Boost方法的树模型, 是类似的算法模型, 都是函数优化问题. 二者最根本的区别就在于最优化的方法不同,GBDT在函数空间中利用梯度下降法进行优化, 而XGBoost在函数空间中用牛顿法进行优化 同时XGBoost有一些防止过拟合的策略.下面简单地从数学原理的角度给出两种算法的推导以及二者的对比.
实际上GBDT泛指所有的梯度提升树算法,也包括XGBoost, 这里特指Greedy Function Approximation:A Gradient Boosting Machine这篇文章提出的算法.

从泰勒公式说起

泰勒公式是一个用函数在某点的信息描述其附近取值的公式.
f(x)=\sum_{n=0}^{\infty}\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n
这个公式如果改写成迭代形式,假设x^t=x^{t-1}+\Delta t可以得到
f(x^t)= \sum_{n=0}^{\infty}\frac{f^{(n)}(x^{t-1})}{n!}{\Delta t}^n
其实回顾上文中梯度下降与牛顿法不难发现,梯度下降使用的是一阶泰勒展开,而牛顿法使用的是二阶泰勒展开,\Delta t也就是两种最优化算法中的学习步长.

GBDT算法原理

XGBoost

XGBoost是一种高效的梯度提升树实现,相对于GBDT,最大的区别在于, 学习过程使用了二阶偏导信息,并且把树模型复杂度作为正则项加到优化目标从而避免了过拟合.

上一篇 下一篇

猜你喜欢

热点阅读