为了账号安全,请及时绑定邮箱和手机立即绑定

XGBoost算法解析

GBDT

目前工业界应用最多的回归树算法是XGBoost,XGBoost算法基于GBDT算法。

传统回归树

下图通过购物金额和上网时长预测用户年龄,传统回归树通过单棵复杂回归树拟合数据。

GBDT回归树

GBDT回归树是一个森林,由多棵回归树共同构成预测结果。
回归树不同于决策树,回归树的结果是可以相加的。
例如购物金额<1k得到用户年龄15,经常提问得到年龄分数-1。因此购物金额<1k且经常提问的用户年龄预测值为14。

XGBoost

XGBoost是一个工业框架,同时也是一个算法框架

XGBoost通过多棵回归树拟合数据,每棵回归树拟合当前残差。

回归树拟合问题实质上也可以看做损失函数最优化问题。

GBDT可以视为XGBoost的一个特例,即损失函数为平方误差(MSE)。Ω函数代表正则化,防止过拟合。

XGBoost通过迭代优化下面的目标函数实现数据拟合,KaTeX parse error: Expected 'EOF', got '​' at position 31: …1}+f_{t}(x_{i})​̲代表前t-1棵回归树之和加上第t棵回归树预测值,XGBoost的目标是使得回归树总和接近目标值y。(i代表第i个样本)

对目标函数使用泰勒展开

得到目标函数

在第t棵树时已经是一个固定值,因此可以忽略,上述表达式可以继续化简。

为什么GBDT是XGboost的特例?

XGBoost公式

GBDT损失函数

对损失函数求一阶偏导数,可以发现这就是GBDT算法中所要拟合的残差。

对照XGBoost公式可以发现,GBDT实质上就是去掉了正则化和二阶导数的XGBoost。

正则化

XGBoost正则化包含T——叶子节点个数,W——叶子节点分数。

将正则化表达式带入XGBoost公式可以化简得到下面的式子。

其中,G代表一阶导数,H代表二阶导数,可以根据训练数据得到。

训练目标是最优化Obj函数,因此对W求偏导数==0,此时可以得到Obj函数的极值。

将w代入表达式可以得到下面的化简后的目标函数表达式

分裂节点

XGBoost回归树分裂基于信息增益进行分裂。

子树分数来源于目标函数,目标函数优化目标是最小化,取反后优化目标为最大化,因此分裂的原则是分裂之后信息增益最大。

理论上,为了获得最大的分裂增益,需要尝试所有的分裂组合,即将一个类分为两个类所有可能的组合,但是会造成组合爆炸的问题。因此在实际应用中,通常采用近似算法或贪心算法。

XGBoost实际应用

基于一份癌症预测数据集使用XGBoost算法进行训练,XGBoost算法可以得到非常好的效果。
XGBoost相比于其他算法拥有非常好的解释性,为了拟合癌症数据集,选择了395棵回归树进行拟合,下图为其中一棵回归树的决策图。

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消