XgBoost详解

来源:互联网 发布:如何卖数据 编辑:程序博客网 时间:2024/06/01 10:19

Tree Ensemble

参数对应树的结构,以及每个叶子节点上的预测分数

如何学习参数

  • 定义合理的目标函数,然后尝试优化目标函数
    • 我们可以把模型定义成 yi^=Kk=1fk(xi)    fkF
    • 因此目标函数可以写为Obj(Θ)=ni=1l(yi^,yi)+Kk=1Ω(fk)

模型学习:Additive Trainning

这里写图片描述

  • 那么问题来了,第t论应该选取什么模型呢?答案很明显:使
    这里写图片描述

  • 对于一般的平方误差损失,还可以写为一下二次函数
    这里写图片描述
    很明显,上面的二次函数的最优解为yiyi^(t1),也就是残差的定义

  • 不失一般性,对于更加general的情况
    这里写图片描述
  • 到了这里,我们可以看到,这样一个形式可以包含所有可以求导的目标函数。因此可以求解回归,分类,排序问题。

    树的复杂度定义

  • 首先我们先把树拆成两部分,结构函数q(x)和权重函数w(x)
    这里写图片描述

  • 下面我们给出复杂度的一种定义,当然这不唯一。但下面给出的定义学习出来的效果往往还不错
    这里写图片描述

    求解目标函数,建立决策树

  • 首先整理一下目标函数
    这里写图片描述
    定义Gj=iIjgi     Hj=iIjhi

    上式可以整理为

    Obj(t)=j=1T[Gjwj+12(Hj+λ)w2j]+γT

    不难看出,关于这个二次函数的最小值即为wj=GjHj+λ,此时目标函数的最小值为
    Obj(t)=12j=1T[G2jHj+λ]+γT

    这里写图片描述

    有了上面的理论推导,我们可以把建立决策树的过程分为两部分

  • 建立决策树结构

    与ID3算法类似,也是利用贪心法建立树的结构,每一次尝试对已有的叶子进行分割,只不过这里的分割标准不再是信息增益,而是以下公式
    这里写图片描述
    对于每次扩展,我们要枚举所有的分割方案,如何高效的枚举所有的分割呢?下面是x<a

  • 确定叶子节点的权值
    一旦树的结构确定了,权值可以利用公式

    wj=GjHj+λ
    来确定

    最后一点思考

    XgBoost如何处理带权重的样本呢?

    这里写图片描述

    算法流程示意图

    这里写图片描述

原创粉丝点击