标签:影响 math 最大 割点 次数 缺失值 boosting lam 方便
设有样本数据 \(\normalsize (x_{i}, y_{i})_{i=1}^{n}\)
第 j 棵树记为 \(\normalsize f_{j}(x)\)
则由 m 棵树组成的 xgboost 输出为
??\(\normalsize y_{i} = F_{m}(x_{i}) = F_{m-1}(x_{i}) + f_{m}(x_{i}) = \sum_{j=1}^{m}f_{j}(x_{i})\)
看起来就和 GBDT 一样,但 xgboost 的优化函数不一样
xgboost 的优化目标函数为
??\(\normalsize Obj = \sum_{i=1}^{n}L(y_{i}, F_{m}(x_{i})) + \Omega(F)\)
??\(\normalsize \Omega(F) = \gamma T +\frac{1}{2}\lambda\sum_{k}^{T}(||w_{k}||^{2})\)
??其中 \(\small T\) 是所有树的叶子节点的总数,\(\small w\) 是每个叶子节点的系数
泰勒展开公式
??\(\normalsize f(x+\Delta x) = \frac{f(x)}{0!} + \frac{f^{'}(x)}{1!}\Delta x + ... + \frac{f^{(n)}(x)}{n!}\Delta x^{n} + R_{n}(x)\)
??
??其中 \(\small R_{n}(x)\)是泰勒公式的余项,是 \(\small \Delta x^{n}\)的高阶无穷小
将优化目标函数按泰勒公式展开,并取前三项目得到近似值
??\(\normalsize Obj = \sum_{i=1}^{n}L(y_{i}, F_{m}(x_{i})) + \Omega(F)\)
???? \(\normalsize = \sum_{i=1}^{n}L(y_{i}, y_{i(m-1)}+f_{m}(x_{i})) + \Omega(F)\)
???? \(\normalsize = \sum_{i=1}^{n}[L(y_{i}, y_{i(m-1)}) +\frac{\partial L(y_{i}, y_{i(m-1)})}{\partial y_{i(m-1)}}f_{m}(x_{i})\)
?????? \(\normalsize + \frac{1}{2}\frac{\partial^{2} L(y_{i}, y_{i(m-1)})}{\partial^{2} y_{i(m-1)}}f^{2}_{m}(x_{i})] + \Omega(F)\)
将一阶导数记为 \(\normalsize g_{i}\) 将二阶导数记为 \(\normalsize h_{i}\) 改写为
??\(\normalsize Obj = \sum_{i=1}^{n}[L(y_{i}, y_{i(m-1)}) +g_{i}f_{m}(x_{i}) + \frac{1}{2}h_{i}f^{2}_{m}(x_{i})] + \Omega(F)\)
由于在计算第 m 棵树的时候,前 m-1 棵树已经确定,所以可以只保留和第 m 棵树有关的项,将优化目标改写为
??\(\normalsize Obj = \sum_{i=1}^{n}[g_{i}f_{m}(x_{i}) + \frac{1}{2}h_{i}f^{2}_{m}(x_{i})] + \Omega(f_{m})\)
设 \(\normalsize f_{m}\) 的每个叶子节点是输出一个固定的值 \(\normalsize w_{j}\)
设 \(\normalsize I_{j}\) 代表所有会被映射到叶子节点 \(\normalsize j\) 的 \(\normalsize x_{i}\) 集合
设 \(\normalsize T\) 代表 \(\normalsize f_{m}\) 的叶子节点数
进一步改写为
??\(\normalsize Obj = \sum_{j=1}^{T}[(\sum_{i\in I_{j}}g_{i})w_{j} + \frac{1}{2}(\sum_{i\in I_{j}}h_{i})w_{j}^{2}] + \gamma T +\frac{1}{2}\lambda\sum_{j=1}^{T}(w_{j}^{2})\)
???? \(\normalsize = \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\)
设有
??\(\normalsize G_{j} = \sum_{i\in I_{j}}g_{i}\)
??\(\normalsize H_{j} = \sum_{i\in I_{j}}h_{i}\)
可改写为
??\(\normalsize Obj = \sum_{j=1}^{T}[(G_{j}w_{j} +\frac{1}{2}(H_{j}+\lambda)w_{j}^{2}] + \gamma T\)
对 \(\normalsize w_{j}\) 求导并另导数为 0
??\(\normalsize G_{j}+(H_{j}+\lambda)w_{j} = 0\)
得到最优的
?
??\(\normalsize w_{j} = -\frac{G_{j}}{H_{j} + \lambda}\)
?
??\(\normalsize Obj = -\frac{1}{2}\sum_{j=1}^{T} \frac{G_{j}^{2}}{H_{j}+\lambda} + \gamma T\)
?
用于衡量树的优劣的就是 \(\normalsize Obj\),其值越小,树结构越好
假设现在有一个叶子节点,属于这个叶子节点的样本的一阶导数的和为 \(\normalsize G_{M}\),二阶导数的和为 \(\normalsize H_{M}\),如果需要对这个叶子节点分裂成两个节点,那么叶子节点数量就 +1,假设分到左叶子的样本的值为 \(\normalsize G_{L}\) 和 \(\normalsize H_{L}\),分到右叶子的样本的值为 \(\normalsize G_{R}\) 和 \(\normalsize H_{R}\),则有 \(\normalsize G_{L} + G_{R} = G_{M}\) 以及 \(\normalsize G_{L} + G_{R} = H_{M}\),那么 \(\normalsize Obj\) 减小的值为
?
??\(\normalsize Gain = (-\frac{1}{2}\frac{G_{M}^{2}}{H_{M} + \lambda} + \gamma T) - (-\frac{1}{2}\frac{G_{L}^{2}}{H_{L}+\lambda} - \frac{1}{2}\frac{G_{R}^{2}}{H_{R} + \lambda} + \gamma(T+1))\)
?
????? \(\normalsize = \frac{1}{2}[\frac{G_{L}^{2}}{H_{L} + \lambda} + \frac{G_{R}^{2}}{H_{R} + \lambda} - \frac{(G_{L} + G_{R})^{2}}{(H_{L} + H_{R})+\lambda}] - \gamma\)
?
选择使得 \(\normalsize Gain\) 值最大的分割特征和分割点
??
并计算分割后新的叶子节点的系数
??
??\(\normalsize w_{L} = -\frac{G_{L}}{H_{L} + \lambda}\)
??
??\(\normalsize w_{R} = -\frac{G_{R}}{H_{R} + \lambda}\)
??
停止分割的条件
??○?如果最大的 \(\normalsize Gain\) 比 \(\normalsize\gamma\) 还小
??○?树已经达到了最大深度
??○?样本权重和小于某一个阈值
xgboost 有三个指标用于对特征进行评价
和 GBDT 一样,xgboost 也使用了学习率做 Shrinkage,在计算出了节点的 \(\normalsize w\) 值后,会乘以一个小于 1 的系数,这能够防止过拟合
xgboost 支持列抽样,能避免过拟合,同时能减少计算
xgboost 能学习缺失值的分裂方向,在分裂的过程中,会尝试把所有特征缺失的样本都分入左节点,或是都分入右节点,看是哪边增益大,然后决定其分裂方向
标签:影响 math 最大 割点 次数 缺失值 boosting lam 方便
原文地址:https://www.cnblogs.com/moonlight-lin/p/12436668.html