目录
  1. 初始化
    1. 数据集
    2. 预测模型
    3. 目标函数
    4. 二阶泰勒展开损失函数
    5. 最小化对损失函数
    6. 分裂节点
【机器学习】XGBoost解析1

初始化

数据集

D={(xi,yi)}  (D=n,xiRm,yiR)D=\{(x_{i}, y_{i})\}\ \ (|D|=\color{red}{n}, x_{i}\in\mathbb{R}^\color{red}{m}, y_{i}\in\mathbb{R})

  • n 代表样本标签数;
  • m 代表数据特征数。

预测模型

包含k棵树的预测模型 y^\hat y

y^i=ϕ(xi)=k=1Kfk(xi),fkF\hat{y}_{i}=\phi(x_{i})=\sum_{k=1}^{K}f_{k}(x_{i}), f_{k}\in \color{red}{F}

  • F 代表由树构成的函数空间:F={f(x)=wq(x)}  (q:RmT,wRT)F=\{f(x)=\color{red}{w}_{\color{red}{q(x)}}\}\ \ (\color{red}{q}:\mathbb{R}^{m}\rightarrow T, \color{red}{w}\in \mathbb{R}^{T})
  • q 代表x到叶子节点的映射函数;
  • w 代表叶子节点的权值。

目标函数

Obj=i=1nloss(yi,y^i)+k=1KΩ(dk)Obj=\sum_{i=1}^nloss(y_i, \hat y_i)+\sum_{k=1}^K\Omega(d_k)

其中k=1KΩ(dk)\sum_{k=1}^K\Omega(d_k)为模型的正则项,控制着模型的复杂度:

Ω(dt)=γT+12λj=1Twj2\Omega(d_t)=\gamma T+\frac12\lambda\sum_{j=1}^T w_j^2

  • TT 代表叶子节点数目;
  • λ\lambda 代表叶子的正则系数。

二阶泰勒展开损失函数

对损失函数进行二阶泰勒展开

L(t)i=1n[l(yi,y^t1)+gift(xi)+12hift2(xi)]+Ω(ft)L^{(t)}\backsimeq\sum_{i=1}^n[l(y_i, \hat y^{t-1})+g_if_t(x_i)+\frac12h_if_t^2(x_i)]+\Omega(f_t)

其中gig_ihih_i分别为损失函数的一阶导数和二阶导数。

gi=l(yi,y^t1)y^t1g_i=\frac{\partial l(y_i, \hat y^{t-1})}{\partial \hat y^{t-1}}

hi=2l(yi,y^t1)(y^t1)2h_i=\frac{\partial^2 l(y_i, \hat y^{t-1})}{\partial (\hat y^{t-1})^2}

移除常数项后的损失函数为:

L~(t)=i=1n[gift(xi)+12hift2(xi)]+γT+12λj=1Twj2\widetilde L^{(t)}=\sum_{i=1}^n[g_if_t(x_i)+\frac12h_if_t^2(x_i)]+\gamma T+\frac12\lambda\sum_{j=1}^T w_j^2

定义叶子节点映射集合:

Ij={iq(xi)=j}I_{j}=\{i|q(x_i)=j\}

  • j 代表从1到T个叶节点

整理损失函数:

L~(t)=j=1T[(iIjgi)wj+12(iIjhi+λ)wj2]+γT\widetilde{L}^{(t)}=\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

最小化对损失函数

将损失函数L~(t)\widetilde{L}^{(t)}wjw_{j}进行求导

L~(t)wj=iIjgi+(iIjhi+λ)wj\frac{\partial \widetilde{L}^{(t)}}{\partial w_{j}}=\sum_{i\in I_{j}}g_{i}+(\sum_{i\in I_{j}}h_{i}+\lambda)w_{j}

令导数等于0,求得wjw_{j}^*使损失函数最小的最优参数

wj=iIjgiiIjhi+λw_{j}^*=-\frac{\sum_{i\in I_{j}}g_{i}}{\sum_{i\in I_{j}}h_{i}+\lambda}

带入损失函数,得到在树为q的情况下损失函数最优值

L~(t)(q)=12j=1T(iIjgi)2iIjhi+λ+γT\widetilde{L}^{(t)}(q)=-\frac{1}{2}\sum_{j=1}^{T}\frac{(\sum_{i\in I_{j}}g_{i})^{2}}{\sum_{i\in I_{j}}h_{i}+\lambda}+\gamma T

分裂节点

Gj=iIjgiHj=iIjhi\begin{aligned} G_j&=\sum_{i\in I_{j}}g_{i}\\ H_j&=\sum_{i\in I_{j}}h_{i} \end{aligned}

L~(t)(q)\widetilde{L}^{(t)}(q)可简化为:

Obj=12j=1TGj2Hj+λ+γTObj=-\frac{1}{2}\sum_{j=1}^{T}\frac{G_j^{2}}{H_j+\lambda}+\gamma T

在某个节点j下的分裂前和分裂后的函数:

Obj分裂前=12(GL+GR)2HL+HR+λγT分裂前Obj_{\text{分裂前}}=-\frac12\frac{(G_L+G_R)^2}{H_L+H_R+\lambda}-\gamma T_{\text{分裂前}}

Obj分裂后=12[GL2HL+λ+GR2HR+λ]γT分裂后Obj_{\text{分裂后}}=-\frac12[\frac{G_L^2}{H_L+\lambda}+\frac{G_R^2}{H_R+\lambda}]-\gamma T_{\text{分裂后}}

最后的信息增益:

Gain=GL2HL+λ+GR2HR+λ(GL+GR)2HL+HR+λγGain=\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

文章作者: Haibei
文章链接: http://www.haibei.online/posts/3078372091.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Haibei的博客
打赏
  • 微信
  • 支付宝

评论