xgboost算法原理_从XGB到SecureBoost:看联邦学习XGB的算法原理

50d7b57041a2fc4a87adc1ee2b6330e8.png
摘要: 最近与某厂完成基于FATE的联邦学习框架的一个项目,第一次实践了一把联邦学习在实际业务场景中的应用,从模型评估结果来看,效果还不错。因此,本文将完成对于其中实现的提升算法 SecureBoost进行详细的介绍,算是对这个项目算法原理上的总结。

由于SecureBoost(SecureBoost: A Lossless Federated Learning Framework)中的Boosting算法是基于XGBoost来实现的,并将其扩展到横向联邦学习任务中来,在隐私保护方面做了一些分析与证明,因此熟悉XGBoost对于理解SecureBoost会起到事半功倍的作用。

本文将分成两大部分内容,首先会简单回顾一下XGboost的基本原理,如果你对这方面内容很熟悉了,可以跳过;第二部分,将是本文的重点内容,侧重于对SecureBoost原理的讲解,包括训练与预测环节;第三部分,简单做一点总结。

XGBoost原理回顾

正则化的损失函数(总)

XGBoost是Boosting算法家族中的一员,因此其形式上也是有

个基模型组成的一个加法模型,对于给定的
个样本
个特征的的数据集
, 其预测过程如下公式所示:

其中的假设空间中的所有CART回归树模型

可以表示为
。从公式表述中可以知道,单棵树有两部分信息组成:
  • 树的结构(树的深度,叶子节点个数)以及特征分裂阈值,
  • 叶子节点的权重(特别说明GBDT,XGBoost等使用的回归树,因为叶子节点存在权重信息)

单颗树的结构由字母

表示,它按照树的结构,将输入
离散化映射到
个叶子节点之中某一个上,因此
的输出是叶子节点的索引编号值,
个叶子节点的权重数组用
表示。

有了上述定义字母表示,就要介绍XGBoost中使用的正则化的损失函数了,相比GBDT模型,引入了正则项用于防止过拟合,其形式如下所示:

从损失函数上不难理解,在给定

个树模型之后,只需要利用可微分的损失函数
计算样本的预测值与真实直接的差异之和, 再利用
颗树计算树的正则项部分

正则项主要有两部分构成:

  • 叶子节点权重的
    范数,目的是使得权重值更平滑,连续;
  • 叶子节点的个数
    ,在XGBoost中树的生长方式是Level-wise的方式,每一层都需要同时进行分裂,有可能导致不必要的特征参与分裂,如下图对比所示

f8166340b8d73c7ec88226eb878ebac6.png

f2127cc1cff8236f493a0fd21b1fa52f.png

图1:两种决策树生长方式

次迭代的损失函数(分)

假设在完成第

次迭代后,即前
颗树的结构以及参数都是已知的了,根据前向分步加法,下一次迭代时即
次,模型对于样本
的预测值为:

此时,将损失函数

可以展开从以下形式,

完成了在第

颗树学习时的损失函数推导;

细节

  1. 公式(4)的第一步中,跟
    式的区别是,正则项只有前
    颗树,因为此时才迭代到第
    颗树,后面的树还需要在学习;
  2. 公式(4)中的第二步,直接将公式(3)带入即可;
  3. 公式(4)从第二步到第3步,发现已经将正则项,从累加变成了第
    颗树的正则项,以及常数
    ,因此在此时前面第
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值