xgboost基本原理

目标函数

在这里插入图片描述

其中,上式第一项称为误差函数,常见的误差函数有平方误差,logistic误差等等,第二项称为正则项,常见的有L1正则和L2正则,表示树的复杂度的函数,越小复杂度越低,泛化能力越强。
在这里插入图片描述

基学习器

分类树和回归树(CART)

树集成

在这里插入图片描述

模型学习

在这里插入图片描述
每一次保留原来的模型不变,加入一个新的函数f到我们的模型中。

f 的选择标准—最小化目标函数!

在这里插入图片描述

通过二阶泰勒展开等,我们得到了最终的目标函数:

在这里插入图片描述

在这里插入图片描述

G、H:与数据点在误差函数上的一阶、二阶导数有关,T:叶子的个数

在这里插入图片描述

切分点查找算法

在这里插入图片描述

上图中G都是各自区域内的gi总和,根据Gain(max)选择最优分割点。

缺点

  1. 在每一次迭代的时候,都需要遍历整个训练数据多次。如果把整个训练数据装进内存则会限制训练数据的大小;如果不装进内存,反复地读写训练数据又会消耗非常大的时间。
  2. 预排序方法(pre-sorted):
  • 首先,空间消耗大。这样的算法需要保存数据的特征值,还保存了特征排序的结果(例如排序后的索引,为了后续快速的计算分割点),这里需要消耗训练数据两倍的内存。

  • 其次,时间上也有较大的开销,在遍历每一个分割点的时候,都需要进行分裂增益的计算,消耗的代价大。

  • 最后,对cache优化不友好。在预排序后,特征对梯度的访问是一种随机访问,并且不同的特征访问的顺序不一样,无法对cache进行优化。同时,在每一层长树的时候,需要随机访问一个行索引到叶子索引的数组,并且不同特征访问的顺序也不一样,也会造成较大的cache miss。

参考:

https://blog.csdn.net/github_38414650/article/details/76061893

https://blog.csdn.net/sb19931201/article/details/52557382

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值