AI成长社

xgboost目标函数推导

2019-01-08  本文已影响0人  文一休

一 说明

xgboost是boosting算法的其中一种,该算法思想就是不断地添加树,不断地进行特征分裂来生长一棵树,每次添加一个树,其实是学习一个新函数,去拟合上次预测的残差。具体的目标函数如下:

Obj{(t)} = \sum_{i=1}^nl(y_i, \hat{y_i}^{(t-1)} + f_t(x_i)) + Ω(f_t) + constant\tag {1}

​ 主要就是找到f_t来优化这一目标函数,通过一个简单的例子来形象的理解该目标函数。例如是小明真实有100个糖果,现在建立一个决策系统来预测小明有多少个糖。首先建立一棵树,记为树1,它的预测结果是90个,这时得到一个残差,这个残差值就是100-90=10,此时和真实值差别是10。为了提高精度,可以在该决策系统中再添加一棵树,记为树2。树2就是为了弥补上一棵树存在的残差,假设它的预测结果是5,此时总体的残差值是10-5=5,即和真实值相差为5。符号化表示:之前的结果10表示为输出结果为\hat{y_1},即上一时刻的残差值,树2的值为f_2,此时得到的值。接着可以再建立第三课树,记为树3。假设它的预测值为3,此时总体的残差值是5-3=2,即和真实值相差为2。符号化表示:上一时刻输出结果5为\hat{y_2},即上一时刻的残差值,树3为f_3,此时得到的值。xgboost的目标就是通过找到f_t来优化这一目标函数,使得最终结果足够小。下面对该函数进行推导化简。

二 目标函数化简

1、预备知识,泰勒展开式。主要使用泰勒展开式来近似原来的目标函数

f(x + \nabla{x}) = f(x) + f^{’}(x)\nabla{x} + \frac{1}{2}f^{''}(x)\nabla{x}\tag {2}

2、推导过程:

Obj{(t)} = \sum_{i=1}^n[l(y_i, \hat{y_i}^{(t-1)})+\partial_{\hat{y}^{(t-1)}}l(y_i, \hat{y}^{(t-1)})*f_t(x_i) +\partial_{\hat{y}^{(t-1)}}^{2}l(y_i, \hat{y}^{(t-1)})*\frac{f_t(x_i)}{2} + Ω(f_t) + constant\tag {3} \approx{ \sum_{i=1}^n[g_i*f_t(x_i) + h_i*\frac{f_t(x_i)}{2}] + Ω(f_t) + constant}\tag {4}

=\sum_{i=1}^n[g_i*w_{q(x_i)} + \frac{1}{2}h_i*w_{q(x_i)}^2] + \gamma{T} + \lambda{\sum_{j=1}^T\omega_j^{2}} \tag {5}

=\sum_{j=1}^T[(\sum_{i\in{I_j}}g_i) w_j+ \frac{1}{2}((\sum_{i\in{I_j}}h_i + \lambda) w_j^2)] + \gamma{T}\tag {6} =\sum_{j=1}^T[G_jw_j + \frac{1}{2}{(H_j + \lambda)w_j^2}] + \gamma{T} \tag {7}

3 目标函数转换

Obj^{(t)}=\sum_{j=1}^T[G_jw_j + \frac{1}{2}{(H_j + \lambda)w_j^2}] + \gamma{T} \tag {8}

使得式(8)最小,令\frac{\partial{j(f_t)}}{\partial{w_j}} = G_j + (H_j + \lambda)w_j = 0\tag {9}

得到w_j = -\frac{G_j}{H_j +\lambda}\tag {10}

将(10)代入(9)得到:Obj = -\frac{1}{2}\sum_{j=1}^T\frac{G_j^2}{H_j + \lambda} + \gamma{T}\tag {11}

举例说明:下图公有5个样本,三个叶子结点,计算的目标函数如下,最终的目标是得到最小值:


image

三 分支

image

如何找到最佳的分支切割点,如上图所示。如何选取合适的a点分割,使目标函数值变小。这里是基于式(11),得到分支增益的公式:

Gain = \frac{1}{2}[\frac{G_L^2}{H_L +\lambda} + \frac{G_R^2}{H_R +\lambda} + \frac{G_L^2 + G_R^2}{H_L +H_R +\lambda}] -\gamma\tag {12}

选取是Gain最小的切割点进行分支。

写在最后

关注公号:

AI成长社
学习机器学习,深度学习知识,了解最新技术进展,一块成长。
知乎专栏:ML与DL成长之路

上一篇 下一篇

猜你喜欢

热点阅读