zoukankan      html  css  js  c++  java
  • 数据挖掘实践(54):xgboost 推导与实例

    来源:https://blog.csdn.net/weixin_41580067/article/details/86220782

    一 XGBoost实例演练

    上面的算法流程有些抽象,所以我们还是以实例来一步一步的实现XGBoost,数据集如下表:

     

    1、生成第一颗树

    回顾我们上面的原理分析,对该结点是否划分的准则是计算增益:

     

     对每一个样本求出其一阶、二阶导数的值:

     计算步骤如下:
    对于ID=1的样本(其他样本计算类似)

    接下来我们需要在特征x1、x2中寻找最佳划分点.

    以x1为例:我们需要将x1的特征值从小到大排列,一共有{ 1 , 2 , 3 , 6 , 7 } left { 1,2,3,6,7 ight }{1,2,3,6,7} 5中取值。

    当以特征值为1作为划分点时(x1<1):

     最后计算增益:

     这是显然的,因为左子树是空集,相当于没有对数据集进行划分

    当以特征值为2作为划分点时(x1<2):

     最后计算增益:

     依次算出x1的各个特征值的参数,如下表:

     因此x1的特征下的最佳划分点为x1<3,此时得到的增益最大。

    若以x2为例:x2的可能取值排序为{ − 5 , − 2 , 0 , 2 , 5 } left { -5,-2,0,2,5 ight }{−5,−2,0,2,5}

    当以特征值为-5作为划分点时(x2<-5):

     最后计算增益:

     当以特征值为-2作为划分点时(x2<-2):

     最后计算增益:

     然后也是依次计算出特征x2的各个划分点的参数与增益值,列表如下:

     因此对特征x2而言,最佳划分点位x2<0

    因为x1与x2的最佳划分点的增益值相同,所以我们选取x1<3作为最佳划分点即可。

    2、生成第二棵树

     由加法模型知:

     

     

     

     后面的树的生成与第一颗树一模一样,记得最后需要对预测值做映射。

  • 相关阅读:
    点语法
    第一个OC的类
    gitlab教程
    php接收post的json数组
    phpstorm10.0.2三月22号补丁原来的网址被封了
    冰点下载器在转换pdf的时候出现停止工作
    乱码问题
    有用的网址(php)
    ubuntu16.04安装mysql5.6
    MapUtils常用方法
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14847710.html
Copyright © 2011-2022 走看看