姓名:Jyx
班级:csdn人工智能直通车-5期
描述:这是本人在学习人工智能时的学习笔记,加深理解

前面我们探讨了什么是Gradient Boosting。xgboost是Gradient Boosting一种算法实现,从前面介绍知道,Gradient Boosting的优化过程只是利用了损失函数的一阶导数。与一般的Gradient Boosting不同,xgboost更进一步,其优化过程考虑了损失函数的二阶导数,并且考虑了正则

xgboost

xgboost的基分类器一般为决策树。
对于任意损失函数L(y,F(x)),在第m步,在Fm1(x)进行泰勒展开

L(y,Fm(x))=L(y,Fm1(x)+αmϕ(x;θm))L(y,Fm1(x))+gmϕ(x;θm)+12Hmϕ2(x;θm)

这里gm,Hm分别是L(y,Fm1(x))Fm1(x)一阶和二阶导数
公式中的其它参数含义请参考我的前一篇文章Gradient Boosting
考虑到L(y,Fm1(x))在本轮循环中为常量,可以丢弃,不影响优化
xgboost的正则定义为
Ω(θ)=γT+12λt=1Twt2

这里T为叶子节点的个数,wt表示每个叶子节点的分数
所以
(1)L(y,Fm(x))=i=1N[gmϕ(x;θm)+12Hmϕ2(x;θm)]+γT+12λt=1Twt2

对于决策树来说,ϕ(x;θm)的取值取决于落在那个叶子节点上,我们用qm(xi)表示xi所属的叶子节点则有ϕ(x;θm)=wqm(xi),于是1式可以写成
(2)L(y,Fm(x))=i=1N[gmwqm(xi)+12Hmwqm(xi)2]+γT+12λt=1Twt2

另一方面我们用It表示所有属于第t个节点的集合,对样本的求和也可以改写成对叶子节点的求和,即
(3)L(y,Fm(x))=t=1T[xiItgmwt+xiIt12Hmwt2]+γT+12λt=1Twt2=t=1T[xiItgmwt+xiIt12Hmwt2+12λwt2]+γT=t=1T[(xiItgm)Gtwt+12(xiItHmHt+λ)wt2]+γT(4)=t=1T[Gtwt+12(Ht+λ)wt2]+γT

我们希望最小化损失,上式可以看成是一个wt的二次方程,其最小值在b2a处,即有
(5)w^t=GtHt+λL(y,Fm(x))=12t=1TGt2Ht+λ+γT

直接优化上式是一个很棘手的任务,一般我们是通过一级一级增长来建立决策树的,这样,每个叶子的分裂增益可以很容易求出来
Gain=12[GL2HL+λ+GR2HR+λ(GL+GR)2HL+HR+λ]γ

如果增益小于0, 则迭代终止,这里也可以明显的看出γ这个正则的作用

这样xgboost的求解过程就包含了两次迭代,一次对树的个数进行迭代,另一个是对每棵树内部的增长进行迭代

算法的更加详细的解释可以参考xgboost的官方文档

对算法中使用的各个变量xgboost官方也给出了如下通俗解释

树的结构
xgboost原理解析
xgboost原理解析
Gt,Ht
xgboost原理解析
以上所有图片均出自xgboost的官方文档

相关文章:

  • 2021-11-17
  • 2021-08-04
猜你喜欢
  • 2021-11-13
  • 2022-12-23
  • 2021-06-13
  • 2021-09-25
  • 2022-02-26
  • 2022-01-22
  • 2021-09-26
相关资源
相似解决方案