xgboost原文翻译及学习

目录

1、参考文章:

2、理解:

3、常用的参数介绍:


1、参考文章:

1.1参考文章:xgb原论文阅读翻译

1.2 XGB算法梳理

1.3 XGB简介(比较详细的可以大概了解损失函数的作用、意义)

1.4 xgboost原理分析以及实践(详细的推导了公式,并且有手推树的例子讲解)

1.5 不平衡处理:xgboost 中scale_pos_weight、给样本设置权重weight、 自定义损失函数 和 简单复制正样本的区别(详细介绍了xgb里面scale_pos_weight,包括其影响的位置、源代码中的位置)

2、理解:

1、xgb作为一个加法串行的树模型,每一棵子树都是基于上一棵树的残差来进行训练;其计算公式是不包含权重项的(面试被问到过,主要是因为GBDT模型的加法公式中是包含权重项的);其计算公式如下所示:

2、损失函数

每一次迭代都是为了使本次的损失函数值最小,从而再迭代更新出本棵树。

主要是通过损失函数来更新每棵树的叶子节点上的权重(这个大家应该注意一下,我是反复看了很多文章,最终在看原论文时才注意到),因为每棵树的叶子结点都会给划入此节点的样本一个“分数”,所以每次训练得到的树的叶子节点上都需要有一个“分数”。具体的损失函数及权重("分数")的更新公式如下所示:

,w("分数")的更新公式为,其中g_ih_i分别为f(x)关于损失函数的一阶及二阶导数;为惩罚项,T为本棵树的叶子节点树,w则为权重("分数"),每一棵树都会对应自己的惩罚项。

由此计算出当前树的损失\L ^{(t)}(q)

3、每课树上节点的划分

并不是采用CART树中的基尼指数作为节点划分的依据,而是采用下述公式来选择最优划分节点:

缺失值的处理:在所有的贪婪算法搜索最优分裂节点中,约定将统一将缺失值划分到右子树中;

4、3.2~3.3中所提到的“关于贪婪算法选择最优分裂节点的算法”所引入的近似算法没有看明白???

5、大多数树学习算法只能处理连续型数据,因此在处理离散型数据时需要进行处理,如one-hot处理;

6、作者在4.1中指出,最耗时的部分就是数据的排序

7、学习率(\eta或learning rate):XGB模型的计算公式是加法公式,里面的每一项都是加上本棵树的训练结果f_t (x),但是在参数里面却有一个\eta或learning rate,这是因为在代码实现的时候,实际上还是会给f_t (x)乘上一个学习率,从而避免过拟合(在2.3节中提到,但是暂时还没找到源代码中是怎么写的);

8、xgb里面避免过拟合所采取的措施:

①正则项:L1(稀疏化,加快收敛速度)/L2(防止过拟合)正则项,两个参数分别为\alpha\lambda,在损失函数的计算公式中是直接乘上\omega的一范数、二范数;

②引入学习率与列采样;

③scale_pos_weight:根据官方文档,可以设置为负样本数/正样本数,其中标签为0的认为是负样本,标签为1的认为是正样本,本质上影响的是损失函数(github地址);

if (label == 1.0f) {
    w *= _scale_pos_weight;
    }

3、常用的参数介绍:

①gamma:默认为0。在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。gamma指定了节点分裂所需的最小损失函数下降值。 这个参数的值越大,算法越保守。因为gamma值越大的时候,损失函数下降更多才可以分裂节点,所以树生成的时候更不容易分裂节点。范围: [0,∞];

②min_child_weight:原本表示的是损失函数的二阶导,但在大多数情况下可以理解为叶子上的最小样本数。(参考网址:“张泽荣”的回答:是在均方误损失且不加正则项的情况下,损失函数的二阶导恰好等于叶子节点上的样本数)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值