推荐系统 之 XGBoost

本文详细解读了XGBoost的原理,从其与AdaBoost的区别,到目标函数的构建,重点讲解了如何利用泰勒展开简化目标函数,以及树的切分策略。特别强调了二阶导数在优化中的作用,以及XGBoost如何通过加法训练防止过拟合。

        这篇文章不知道为什么被吞了....我又得重新写一下,方便以后自己复习

        写在前面:这篇文章觉得部分都是照搬 这里,详细的描述可以直接看原文。本文只是将原文翻译成自己比较能理解的思路而已。

1. XGBoost的原理

        XGBoost光从名字上我们就知道有boost的身影在里面了,它和AdaBoost的其中一个区别就是在合并模型的时候不需要加上一个权重系数,而是直接做加法运算模式。

        所以XGBoost也还是采用一个前向分布加法模型的,具体的表达式就是:这里的T是模型数量

\hat{y_i} = \sum^T_{t=1}f_t(x_i)

        最终损失函数就是:这里的N是样本数量

Loss = \sum^N_{n=1}L(y_i,\hat{y_i})

2. 定义目标函数:

        模型的预测精度由偏差和方差共同决定,损失函数代表了模型的偏差,想要方差小则需要更简单的模型

        所以XGBoost的 目标函数最终由损失函数L与抑制模型复杂度的正则项Ω组成, 所以目标函数如下:

obj^t = \sum^N_{n=1}l(y_i,\hat{y_i}^t) + \Omega(f_t)

        然后这个正则项可以的表达式是如下:

\Omega(f_t) = \gamma T_t + \frac{1}{2}\lambda\sum^T_{j=1}w_j^2

        其中T_t 就是叶子节点数,w_j 就是叶子结点上的权重,其余都是超惨

3. 简化目标函数

        我们上面说了,XGBoost是一个前向分布加法的模型,现在我们假定已经有t-1步了,求t步,模型对于第i个样本的预测为:

\hat{y_i}^t = \hat{y_i}^{t-1} + f_t(x_i)

        我们把目标函数根据上面这个公式继续改写一下:

obj^t = \sum^N_{n=1}l(y_i,\hat{y}_i^t+f_t(x_i)) + \Omega(f_t)

       这个时候最优化这个目标函数的关键点就落在了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值