xgboost 一般多少棵树_【ML】xgboost

xgboost基于GBDT并使用CART树,通过优化目标函数(损失函数+正则化)拟合残差。每轮的目标函数衡量当前预测损失,通过泰勒展开简化求解,正则项限制过拟合,寻找最佳叶子节点得分。构建树时采用贪心算法选择最优特征划分。
摘要由CSDN通过智能技术生成
  • xgboost是基于GBDT的改进,那么xgboost的树是基于CART树思想,是一颗二叉树。 每棵树拟合的也是残差,残差也是目标函数的梯度。

目标函数

00367a899a20c5b09598228bcbfd6c65.png
  • 常见的目标函数格式即 损失函数 + 正则化, 前者衡量模型的拟合程度,后者平衡模型的复杂程度
  • 不同任务的损失函数L不同,常用的回归是平方误差,分类是逻辑回归误差
  • 其中预测值y_hat是关于θ的函数,即模型本身

cf2a9909bf18220378364df74065acf8.png
x是样本
  • 正则化惩罚项是一个关于θ的函数,可以根据不同情况来定义

对应到xgboost里面来,每个基模型是一棵树,损失函数是衡量所有树的叠加损失:

777b6e21e5b2f15b365059912e23f315.png
  • fk即表示当前轮次训练的cart树
  • obj衡量的是K棵树的累加损失
  • 同样是由损失函数+正则化组成

叠加过程:

6d427896c1044453e4845c1c88ad66d1.png
  • 每一轮的预测值(yt)是前一轮已经训练好的模型的预测值(yt-1)加上当前轮拟合的cart树的输出值(ft(x)),也就是当前轮次的树模型拟合残差
  • 每一轮的目标函数(obj(t))中的惩罚项,在前一轮已经训练好的情况下,惩罚项是已知的,所以可以写作一个常数constant,每轮目标函数衡量的是当前预测的损失和当前惩罚项

有了目标函数,训练的过程就是使目标函数最小,进而求出当前轮次最优的参数。但是对于一般损失函数来说,求极值比较困难,xgboost里面做了泰勒展开:

a7275673250c4f059e652e39c6e69d99.png
  • 画红线部分就是前一轮的误差,是一个常数
  • 最终目标函数是关于当前轮次的模型f进行最优化。

展开惩罚项:

cdb083b4fa8e3c81d7686e3ec3d49d3c.png
  • wq(x)中,w表示当前树所有叶子节点的分数集合,q(x)表示样本x在当前树中被划分到了哪一个节点。综合起来就是当前样本x在当前树f的预测分数。
  • 正则化惩罚两部分,1是叶子节点个数,防止太多过拟合。2是叶子节点的分数,防止某些叶子节点分数太大导致过拟合。
  • 从这里就可以看出,xgboost里面的cart树每个叶子节点输出的是对应的分数。一个样本进来了被划分到哪个叶子节点,那么预测值就是这个分数w。

确定了正则项后,那么现在一棵树的输出就是wq(x),对于当前轮t,只要找到使obj最小的w,那么这个wq(x)就是要训练的树。

将正则项带入目标函数:

fe245b3a4c667729bff83531179dd7d3.png
  • 红线部分转化:原式是要求每个样本的输出,可以转为每个叶子节点(Ij)包含的样本的输出再累加.
  • 带入后求极值,解一个二元一次方程

065c662e86ae39aaf104029496dbaa32.png

上面的式子,就可以衡量一棵树的输出到底好不好,但是当前轮次可能会训练出多个q(x),那么就要根据这个公式去找出最好的q(x)作为当前轮次的树。

8161ee5f42f94c70161227a97f66d644.png

构建树的过程:

利用贪心算法,每次遍历所有特征所有取值,然后选择收益最大的特征最为节点:

4ca43b566c87de5841a7e0c9813a3b5e.png

红色部分是划分后的收益,蓝色部分是划分前的收益。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值