xgb 切分点选择

XGBoost是串行生成CART树,但是XGBoost在处理特征时可以做到并行处理,XGBoost并行原理体现在最优切分点的选择,假设样本数据共M个特征,对于某一轮CART树的构建过程中,选择最佳切分点算法如下图:

最佳切分点流程图

1. 红色框表示根据每个特征大小对训练数据进行排序,保存为block结构,block个数与特征数量相等。

2. 绿色宽表示对每个block结构选择最佳特征切分点 ,节点切分标准是目标函数下降的程度,目标函数含义可参考上文 。

3. 黑色框表示比较每个block结构的最佳特征切分点的目标函数下降的增益,选择最佳切分点。

2. 切分点算法之贪婪算法

每一个block结构的切分点算法思路是相同的,因此,我重点介绍某一块block结构的切分点算法。

XGBoost分位点算法:根据特征对样本数据进行排序,然后特征从小到大进行切分,比较每次切分后的目标函数大小,选择下降最大的节点作为该特征的最优切分点。最后比较不同block块结构最优切分点的目标函数下降值,选择下降最大的特征作为最优切分点。

流程图如下:

贪婪算法流程图

【例】下表表示样本的某一列特征数值

根据特征大小对样本重新排序:

贪婪算法切分节点:

红箭头表示每一次的切分节点,选择目标函数下降最大的点作为切分节点。

3. 切分点算法之分位点算法

若特征是连续值,按照上述的贪婪算法,运算量极大 。当样本量足够大的时候,使用特征分位点来切分特征。流程图如下:

分位点算法流程图

【例】下表表示样本的某一列特征数值,用三分位作为切分节点 。

根据特征大小进行样本排序:

用特征的三分位点作切分节点:

红箭头表示每一次的切分节点,选择目标函数下降最大的点作为切分节点。

4. 切分点算法之权重分位点算法

上节假设样本权重相等,根据样本的分位点来均分损失函数存在偏差,本节用样本权重来均分损失函数。

损失函数如下:

对其变形得到:

xi损失函数可以看做是以以gi/hi作为label的均方误差,乘以大小hi的权重,换句话说,xi对loss的贡献权重为hi ,构建样本权重的分位点等于误差的均分。

上节假设样本权重相等,特征值的分位点作为切分点,本节假设样本权重是hi,构建样本权重的均分点步骤:

(1)根据特征大小对样本进行排序

(2)定义排序函数:

其中x,z表示特征

(3)设置排序函数的分位点为切分点

【例】如下图

特征与对应的排序函数值的关系,如下表:

红色箭头表示以三分位点作为切分点。

最后,选择最优切分点。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值