xgboost

概述

  • XGBoost(Extreme Gradient Boosting)全名叫极端梯度提升树,XGBoost是陈天奇等人开发的一个开源机器学习项目,在GBDT的提升改进版,在Kaggle比赛中被广泛使用,并且取得不错的成绩。

Xgboost

提到XGboost不得不提GBDT(梯度提升决策树),都是使用CART构建决策树,只是XGboost在目标函数中加了数据的构建复杂度(正则化项),目标是提升使效率并使其发挥到极致。

  • Xgboost树的构造
    举例:我们要预测一家人对电子游戏的喜好程度,考虑到年轻和年老相比,年轻更可能喜欢电子游戏,以及男性和女性相比,男性更喜欢电子游戏,故先根据年龄大小区分小孩和大人,然后再通过性别区分开是男是女,逐一给各人在电子游戏喜好程度上打分,如下图所示
    在这里插入图片描述

在这里插入图片描述
训练出了2棵树tree1和tree2,类似之前gbdt的原理,两棵树的结论累加起来便是最终的结论,
其中,小男孩的预测分数就是两棵树中小孩所落到的结点的分数相加:2 + 0.9 = 2.9,爷爷的预测分数同理:-1 + (-0.9)= -1.9

  • 树的复杂度
    在这里插入图片描述
    复杂度函数:
    T表示树叶子节点的个数
    w表示每个叶子节点的分
    gamma表示复杂度(超参数)
    lambda表示正则项,主要是对对w进行L2正则化,相当于针对每个叶结点的得分增加L2,目的是为了避免过拟合

  • 目标函数的推导
    Xgboost目标函数主要包括两部分:损失函数训练误差 + 树的复杂度
    在这里插入图片描述
    在这里插入图片描述
    进行t次迭代的学习模型的目标函数为:
    在这里插入图片描述
    利用泰勒公式的二阶导展开:

泰勒公式为:
在这里插入图片描述
在这里插入图片描述

csdnimg.cn/20200305142802643.png)
在这里插入图片描述
得到:
在这里插入图片描述

在这里插入图片描述
Wq(x)表示对应的叶子节点序号的值,q(x)表示叶子节点的序号
忽略常数项Constant,将公式中的f(x),及树的复杂度替换,得到

在这里插入图片描述
到此时,所有样本都是映射为树的叶子节点

换种思维,从叶子节点出发,对所有的叶子节点进行累加,得:
在这里插入图片描述

G​j表示映射为叶子节点 j 的所有输入样本的一阶导之和,同理,jH​j
​​ 表示二阶导之和
在这里插入图片描述

G​j​和H​j​是确定量,将上式看成关于叶子节点w的一元二次函数,求导得到
在这里插入图片描述
带入到:
在这里插入图片描述

化解得到最终的目标函数:
在这里插入图片描述
也称为打分函数(scoring function),它是衡量树结构好坏的标准
值越小,代表这样的结构越好
我们用打分函数选择最佳切分点,从而构建CART树

  • xgboost树节点的划分
    xgboost构造树的时候是采用贪心法对树节点进行划分,从根节点开始分裂成左右叶子节点,xgboost叶子节点是否继续划分,需要根据划分后是否给损失函数带来增益,如果Gain大于0,说明损失函数损失下降,继续分裂,
    在这里插入图片描述

  • 节点划分什么时候停止
    1.设置超参数max-depth,当树的最大深度达到最大停止划分
    2.样本权重和小于设定阈值时则停止建树。超参数-最小的样本权重和min_child_weight
    3.传入超参数gmma,根据Gain判断,当Gain小于0,则停止

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值