机器学习模型——xgboost笔记

1概述

xgboost是GBM(Gradient Boosting Machine)的一个优化版本,结合树模型的结构特点,使用函数空间的梯度下降,实现优化损失函数的集成模型;

1.1 主要优点

可以处理回归及分类问题(覆盖机器学习有监督学习的主要问题)

基于决策树模型,具有决策树的所有优点如计算简单,易于理解,可解释性强;比较适合处理有缺失属性的样本;

可以自定义损失函数更为灵活

包含正则项,可以防止过拟合

优化过程中加入二阶导数,优化速度更快,

支持继续训练功能,可以依据原有模型进行继续训练

支持分布式

训练过程中,支持使用验证集通过交叉验证评估效果

基模型除了决策树,支持多种模型如linear,gamma等模型

1.2算法原理

目标函数由两部分组成——训练损失+正则项

训练损失,主要衡量模型拟合数据的情况,目标是随着训练迭代次数的增加,模型的损失函数降至最低,此处举了两个例子常用于回归任务的Square loss(均分损失),以及用于分类任务的logistic loss(交叉熵损失),由于xgboost继承了决策树的特点,而决策树存在的较为严重的确定点就是过拟合的问题,xgboost也考虑了该问题,模型中包含了正则项。

正则项:主要针对数据过拟合问题,分为L1、L2两种正则化,其中xgboost主要使用的是L2正则方法,主要逻辑是使整体系数规模减小,从而导致异常值不会过度影响模型的训练。L1正则话更倾向于将模型中的参数向0和1两个方向靠近,从而实现对不重要参数的舍弃功能。



xgboost的主要模型结构,其中整体模型F(x)由k个f(x)(使用决策树作为基模型)组成每增加一个f(x),F(x)的整体损失函数会下降,否则不会增加第k个f(x)


定义目标函数,其中损失函数可自由设置

代码如下:



使用二阶泰勒展开式泰勒,将目标函数转化为红色部分的Obj(t)

其中将l(y,y<t-1>hat)看作泰勒展开式中的f(x),将f<t>(x)看作泰勒展开式的Δx,

因此训练损失被展开为训练损失(F<t-1>时期的损失函数,下同)函数结果、损失函数一阶导数乘以新增的f<t>(x),以及损失函数二阶项与f<t>(x)**2,

同时用gi表示损失函数的一阶导数,hi表示损失函数的二阶导数

而且l(y,y<t-1>hat)为常熟,不影响目标函数求最小值的过程,因此归入常数项


经整理后,目标函数需要优化最小值的部分被整合成本式


定义模型复杂度部分参数,其中T为基模型的样本节点数量,wj为各节点的输出数值,γ与λ为超参数,使用者可以用于调整正则项对整体模型的影响



f<t>(x)的实际输出其实就是找到数据x进入模型后预测到的叶子节点(此处概念不清楚可参考决策树模型)输出数值,因此将f<t>(x)转化为图片中输出的式子


将目标函数结合上述提到的损失函数泰勒展开式、模型正则项以及输出表达式,整合为本图的形式,其中倒数第二行到最后整合结果可以如下图所示


f<t>(x)输入九条数据,产生9条预测,由于树模型的结构特点,输出位置为模型的叶子节点,因此基于树模型的输出结果与下图等同


实际上即将n条数据的加和结果转化为双层循环每个叶子节点下数值的加和

再次回到主线目标函数的优化上


使用G、H替代原先的g、h并对结果进行求导的出使得目标函数最小的w向量以及此时的目标函数值


使用已经得出的目标函数最优质进行节点分裂判断,从本途中也可以看出,xgboost基模型的分裂是二分模式,当收益Gain大于0时可以继续分裂,可以看出分裂与否主要受损失函数导数以及正则项的影响

3 功能展示


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值