集成学习(四)——XGBoost

1. XGBOOST?

XGBoost(eXtreme Gradient Boosting)算法是Gradient Boosting算法的高效实现版本,并进行算法的改进和工程上的优化。
XGBoost类似于GBDT,是一个基于CART树的,由多个弱分类器经过boost框架,以负梯度为学习策略的一种集成学习方法。

2.XGBoost的数学原理

2.1 目标函数:

O b j = ∑ i = 1 n l ( y i , y i ^ ) + ∑ k = 1 K Ω ( f k ) Obj = \sum_{i=1}^{n}l(y_i,\hat{y_i})+\sum_{k=1}^K\Omega (f_k) Obj=i=1nl(yi,yi^)+k=1KΩ(fk)

O m e g a ( f ) = γ τ + 1 2 ∥ w ∥ 2 Omega (f)=\gamma\tau +\frac{1}{2}\left \| w \right \|^2 Omega(f)=γτ+21w2

目标函数由两部分构成,第一部分用来衡量预测分数和真实分数的差距,另一部分则是正则化项,控制树的复杂程度。正则化项同样包括两部分,T表示叶子节点的个数,w表示叶子节点的分数。"y"可以控制叶子节点的个数,"人"可以控制叶子节点的分数不会过大,防止过拟合。

2.2 树的结构

残差树

2.3 分支策略

与CART相同的策略,贪心算法,不断地枚举不同树的结构,然后利用打分函数来寻找出一个最优结构的树,接着加入到模型中,不断重复这样的操作。

树生成的停止条件

  1. 当引入的分裂带来的增益小于设定阀值的时候,我们可以忽略掉这个分裂,所以并不是每一次分裂loss function整体都会增加的,有点预剪枝的意思,阈值参数为(即正则项里叶子节点数T的系数);
  2. 当树达到最大深度时则停止建立决策树,设置一个超参数max_depth,避免树太深导致学习局部样本,从而过拟合;
  3. 样本权重和小于设定阈值时则停止建树。什么意思呢,即涉及到一个超参数-最小的样本权重和min_child_weight,和GBM的 min_child_leaf 参数类似,但不完全一样。大意就是一个叶子节点样本太少了,也终止同样是防止过拟合;

2.4 防止过拟合

Shrinkage方法:
在每次迭代中对树的每个叶子节点的分数乘上一个缩减权重"n",这可以使得每一颗树的影响力都不会太大,留下更大的空间给后面生成的树去优化模型。
Column Sampling方法:
类似于随机森林中的选取部分特征进行建树。

2.5 缺失值处理

首先根据non-missing的原则找出split point,然后有以下3种方式
1.计算missing值在左右子树的信息增益,选择大的方向
2.可以手动指定missing的默认方向,加快算法速度
3.训练集中没有缺失值而预测集中有,自动划分到右子树

3. XGBoost VS. GBDT

  1. GBDT是机器学习算法,XGBoost是该算法的工程实现。
  2. 传统的GBDT采用CART作为基分类器,XGBoost支持多种类型的基分类器,比如线性分类器。
  3. XGBoost显式地加入了正则项来控制模 型的复杂度,有利于防止过拟合,从而提高模型的泛化能力。
  4. 传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。
  5. 传统的GBDT在每轮迭代时使用全部的数据,XGBoost则采用了与随机 森林相似的策略,支持对数据进行采样。
  6. 传统的GBDT没有设计对缺失值进行处理,XGBoost能够自动学习出缺 失值的处理策略。
  7. xgboost工具支持并行。XGBoost的并行不是tree粒度的并行,xgboost的并行是在特征粒度上的。XGBoost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。
  8. 可并行的近似直方图算法。树节点在进行分裂时,我们需要计算每个特征的每个分割点对应的增益,即用贪心法枚举所有可能的分割点。当数据无法一次载入内存或者在分布式情况下,贪心算法效率就会变得很低,所以xgboost还提出了一种可并行的近似直方图算法,用于高效地生成候选的分割点。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值