XGBoost

XGBoost本质上就是一种GBDT,但是力争把速度和效率提高到极致,所以叫X (Extreme) GBoosted。

下面例子来自:陈天奇的讲义PPT

我们要预测一家人对电子游戏的喜好程度。

Tree1: 考虑到年轻和年老相比,年轻更可能喜欢电子游戏,以及男性和女性相比,男性更喜欢电子游戏,故先根据年龄大小区分小孩和大人,然后再通过性别区分开是男是女,逐一给各人在电子游戏喜好程度上打分,如下图所示。

XGBoost

Tree2: 根据日常是否使用计算机来看。
XGBoost

这样训练出了2棵树tree1和tree2,类似之前DBDT的原理,两棵树的结论累加起来便是最终的结论,所以小孩的预测分数就是两棵树中小孩所落到的结点的分数相加:2 + 0.9 = 2.9。爷爷的预测分数同理:-1 + (-0.9)= -1.9。具体如下图所示:

XGBoost

XGBoost的核心算法思想不难,基本就是:

  • 不断地添加树,不断地进行特征分裂来生长一棵树,每次添加一个树,其实是学习一个新函数f(x),去拟合上次预测的残差。

  • 当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数

  • 最后只需要将每棵树对应的分数加起来就是该样本的预测值。

显然,我们的目标是要使得树群的预测值尽量接近真实值,而且有尽量大的泛化能力。

类似之前GBDT的套路,XGBoost也是需要将多棵树的得分累加得到最终的预测得分(每一次迭代,都在现有树的基础上,增加一棵树去拟合前面树的预测结果与真实值之间的残差)。

参考:

XGBoost

上一篇:数字asic流程实验(二) CIC滤波器简述


下一篇:Nginx