数据挖掘:模型选择——XGBoost与LightBGM

之前介绍了GBDT算法的一些知识,该算法的拟合能力很强,但由于是前向算法,所以运行起来会很慢,要等前面的结果出来后,才能拟合残差。陈天奇团队研究的XGBoost算法,可以解决这个问题,并且对GBDT有了很大的改进。

本文主要学习自B站up主:春暖花开Abela的视频,讲解的很透彻。(后面的知识有些听不懂了,直接截图的,大家可以去B站上的视频听这个老师讲课)

在有监督的学习任务里,一般有模型,参数,目标函数和学习方法。

  • 模型:给定输入X后预测输出y的方法,比如回归,分类等。
  • 参数:模型中的参数,比如线性回归y=ax+b中的权重a和偏置b
  • 目标函数:即损失函数,包含正则项
  • 学习方法:给定目标函数后求解模型的和参数的方法,比如梯度下降法,牛顿法等。

XGBoost相比GBDT的改进

第一,GBDT将目标函数泰勒展开到一阶,而xgboost将目标函数泰勒展开到了二阶。保留了更多有关目标函数的信息,对提升效果有帮助。

第二,GBDT是给新的基模型寻找新的拟合标签(前面加法模型的负梯度),而xgboost是给新的基模型寻找新的目标函数(目标函数关于新的基模型的二阶泰勒展开)。

第三,xgboost加入了和叶子权重的L2正则化项,因而有利于模型获得更低的方差。

第四,xgboost增加了自动处理缺失值特征的策略。通过把带缺失值样本分别划分到左子树或者右子树,比较两种方案下目标函数的优劣,从而自动对有缺失值的样本进行划分,无需对缺失特征进行填充预处理。

此外,xgboost还支持候选分位点切割,特征并行等,可以提升性能。

回顾

xgboost是gbdt的进阶版,而gbdt是由一堆cart树通过boosting集成算法得到的。
这里先看一下cart树的计算案例。回归树输出的是一个分数,表示这个人喜欢玩电脑游戏的程度,利用这个分数我们可以进行回归,或映射成概率进行分类。
在这里插入图片描述
gbdt的计算案例。用两棵树进行预测,结果是两个树的和。
在这里插入图片描述
问题一:为什么xgboost用的是cart树,而不是别的呢?或者为什么是cart和boosting算法结合,而不是C4.5或者ID3?
在之前的树模型中有介绍,由于cart树是二叉树,计算结果会更快些。另外,对于分类问题,由于CART树的叶子节点对应的值是一个实际的分数,而非一个确定的类别,这将有利于实现高效的优化算法。

xgboost介绍

xgboost数学模型

xgboost利用前向分布算法,学习到包含K棵树的加法模型。这里的K就是树的棵数,F表示所有可能的CART树,f表示一棵具体的CART树。这个模型由K棵CART树组成。
这里面最重要的就是得到所有决策树,知道树的结构叶子结点
在这里插入图片描述

xgboost目标函数

这个目标函数包含两部分,第一部分就是损失函数(预测值和真实值之间的差距),第二部分就是正则项(衡量决策树的复杂程度,复杂程度越高,正则化向就越大,对损失函数的惩罚也大一些。),这里的正则化项由K棵树的正则化项相加而来。
我们的目标是为了优化这个目标函数,但因为f是决策树(包含树的结构和叶子结点的个数),不是数值型的向量,因此不能用梯度下降的算法进行优化。
在这里插入图片描述

目标函数中损失函数的处理

xgboost是前向分布算法(通过一次次迭代,来获得当前的集成模型),通过贪心算法寻找局部最优解。第t次的结果,是第t-1次预测的结果,加上第t个弱分类器的结果。
要使损失函数最小,因为前t-1次的结果已经确定了,那么久需要找到第t棵树,使损失函数降低最多,以达到优化值。
在这里插入图片描述
每次迭代都要寻找使损失函数降低最大的f(cart树),所以,目标函数可以写成如下形式。
经过前t-1轮的迭代,决策树的结构个叶节点都已经确定了,所以前t-1次的正则化项就是常数了。因为要计算参数,使目标函数值最小,与常数无关,因此可以去掉。
在这里插入图片描述
接下来,采用泰勒展开对目标参数进行近似。
这里y(t-1)相当于x ^(t),是我们已知的值。
f(x)相当于Δx。
在这里插入图片描述
为什么用泰勒公式进行展开?
泰勒公式:是一个用函数在某点的信息描述其附近取值的公式。比如,我们知道x点的y1值,想计算出x+Δx处的y2值,此时就可以利用泰勒公式进行求解。
对于一般的函数,泰勒公式的系数的选择依赖于函数在一点的各阶导数值。函数f(x)在x0处的基本形式如下:
在这里插入图片描述
这里x^(t+1) = x ^(t)+Δx,类比于上一步得到的损失函数,对第t棵树进行一个近似。一般展开到2阶,就可以对所求值进行一个很好的近似效果。
所以,我们要对损失函数进行泰勒展开,展开到2阶即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值