目标函数:

累加训练

目标函数t时刻的整体复杂度可以拆分成,那么t-1时刻前面的所有的复杂度都已经固定了,就用constant表示。

我们发现目标函数(相对GBDT)里面是带正则项的,t-1时刻的正则项全部在const里面

2.对loss进行泰勒二阶展开的近似。

对loss损失函数(括号里的内容进行二阶泰勒展开)

GBDT用的是牛顿法(一阶导)

XGBoost用的是梯度下降(二阶导)

XGBoost用更快速度找到最优解,迭代次数更少

3.再次化简目标函数

因为我们让目标函数尽可能小对常数项没有关系,那么我们就可以把常数项都去掉。前面l(yi,yi_hat(t-1))也是常数项也可以去掉。

新的目标函数

GBDT是拟合上一条样本的负梯度

XGBoost是去拟合上一条样本的gi、hi,所以我们在训练的时候,要去准备下一条样本的gi、hi,准备好了后,变量就是ft(xi),那么目标函数就是再求ft(xi)是何值时,整体的损失最小。

综合以上XGBoost对比GDBT有两点好处:

(1)考虑了正则项Ω。

(2)求二阶导,使得梯度下降的更快。

4.重新定义树

q:代表落在哪个叶子节点,返回那个叶子节点的索引号,T:T个叶子节点

W:是一个向量里面存放所有叶子分数,给出一个索引号,从W向量里查询分数。

W(qx):根据q(x)叶子节点的索引号,取出来W向量里面相应的分值

经过重新定义后,一棵树对应的分值就是,在目标函数中就可以把替换成

5.重新定义复杂度

γ:系数

T:叶子节点个数

:系数

W:就是上面定义的叶子节点的分值

叶子节点越少,复杂度就越小。

叶子节点分值越少,正则项数值就越少。

6.在重新定义树和复杂度后,带入原目标函数,得到新的目标函数

7.再次化简 目标函数

因为

我们假设

带入目标函数

所以

最终目标函数变成

确定好目标函数后,obj分值越小,代表树的结构越好,我们就可以通过obj分值知道我们要选择第一棵树,还是第二颗树的结构

我们就可以把obj当成每棵树分裂的评价指标

例如:tree1比tree2多分了一次,如果多分了这次后计算得到的obj比tree高了,就说明树的结构还不如不分。

8.XGBoost收益计算

分裂前计算一下obj,用分裂前的obj减去分裂后的两个叶子结点的obj得到下面的公式。

计算obj收益,根据obj收益选择最佳特征特征值。

9.时间复杂度

O(n d K log n)

d个特征,每个特征有K个分裂点。

优化:

基于这个分裂节点再进行分裂后,下一个分裂节点可以不用再进行分裂。因为X都是一样的,每次分裂排序不会变,那么我们整体学习一棵树的时间复杂度就会优化。

在集成学习中最耗时间的部分是每个特征选择最佳分割点,XGBoost在训练前将数据进行了排序,并存储在Block中,以后每次迭代直接用Block中存储的结构,这样大大节省了计算时间。
特征寻找最佳分割点需要计算增益,XGBoost对这个过程使用了多线程。

XGBoost前剪枝
树节点往下分裂,如果计算得到收益是负的,就不会往下分了。

但是这样做有个问题,这次收益是负的,但是如果继续分裂说不定下次收益就是正的,而且加起来收益会很大。。

为了解决这个问题:后剪枝

让树充分生长,通过传入超参,在叶子涨到一定程度后,剪掉最后面的负收益的叶子节点。

有了XGBoost,就不太用GBDT了,因为XGBoost就是GBDT的优化。

XGBoost目标函数推导相关推荐

  1. XGBoost原理及目标函数推导详解

    前言 XGBoost(eXtreme Gradient Boosting)全名叫极端梯度提升,XGBoost是集成学习方法的王牌,在Kaggle及工业界都有广泛的应用并取得了较好的成绩,本文较详细的介 ...

  2. XGBoost的目标函数推导和分裂增益计算

    1.XGBoost简介 XGBoost是一种基于GBDT优化的工程化实现,是由n个基模型组成的一个加法模型,它的基本类器可以是树模型,也可以是线性分类器,本文以树模型进行推导. 1.1XGBoost的 ...

  3. 【运筹学】线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 可行解表示 | 目标函数推导 | 目标函数最大值分析 )

    文章目录 一.基矩阵 + 非基矩阵 约束条件 二.基矩阵 + 非基矩阵 线性规划 三.线性规划 可行解 四.目标函数 推导 五.XN=OX_N = OXN​=O 目标函数最大 分析 六.总结 在上一篇 ...

  4. svm最大间隔函数及目标函数推导

    svm的推导,最大间隔为基本要求,转换成最小值:

  5. 03 ,似然函数求解 :目标函数推导,对数似然求解,最小二乘法

    1 ,真实值函数推导 : 真实值正态曲线 定义 : 跟数据曲线很相似的函数 个人思考 : 1 ,目的 : 得到数据的正态分布图 2 ,已知 : 高斯分布图 ( 误差分布图符合正态分布,也就是搞碎分布 ...

  6. XGBoost的原理、公式推导

    本文是基于刘启林老师的知乎文章所进行的学习笔记. XGBoost(eXtreme Gradient Boosting)极致梯度提升,是一种基于GBDT的算法或者说工程实现. XGBoost基础 1.G ...

  7. 研究生周报(第十周)

    研究生周报(第十周) 学习目标 YOLO1简单理解 线性因子模型 F1.ROC.AUC 决策树和GBDT XGBoost简单理解 学习时间 7.10 ~ 7.16 学习产出 Python代码 gith ...

  8. 基于python的数据建模与分析案例_基于案例详解Python数据分析与机器学习

    课程概述: 使用数据领域最主流语言Python及其分析与建模库作为核心武器.对于机器学习经典算法给出完整的原理推导并基于实例进行讲解,基于案例演示如何应用机器学习算法解决实际问题. 课程特色: 通俗易 ...

  9. 【机器学习基础】结合论文理解XGBoost推导过程

    前言 XGBoost是一个可扩展的提升树模型,论文"XGBoost: A Scalable Tree Boosting System"发表在2016年的KDD会议上.文章包括了XG ...

最新文章

  1. 修复Eclipse在Mac OSX下启动时卡住问题
  2. Win64 驱动内核编程-31.枚举与删除映像回调
  3. C++ 面向对象(一)继承:继承、对象切割、菱形继承、虚继承、继承与组合
  4. r.java没有生成_R.java 常见问题(R.java文件没有生成 )
  5. api过滤器_了解播放过滤器API
  6. Linux保护文件实现,Linux完整性保护机制模块实现分析(1)
  7. 在SpringBoot2.0及Spring 5.0 WebMvcConfigurerAdapter已被废弃,目前找到解决方案就有两种...
  8. Atitit 软件 开发 与互联网发展趋势 与一些原则 潮流就是社区化 o2o 各种服务化 xaas ##--------信息化建设的理念 1.1.兼容性(不同版本与项目兼容性有利
  9. 将机器学习、人工智能、数据挖掘融合的Testin 2.0有哪些不同之处
  10. [摘录]第二部分 战略决策(1)
  11. 基于Java Servlet图片服务器
  12. “下一代智能硬件Web应用防火墙”——创宇盾X完成统信互认
  13. 社群怎么建立,怎么做好社群营销?
  14. 爪哇国新游记之五----继承与接口
  15. 安装scss后报错Module build failed: TypeError: loaderContext.getResolve is not a function解决方法
  16. Android 10 正式版或将 9月3日 发布!
  17. 元数据管理-技术元数据解决方案
  18. Android Studio Chipmunk 正式版下载地址
  19. 我来补充两句京东和企业软件
  20. 安卓模拟器 arm linux,让x86的android模拟器能模拟arm架构系统

热门文章

  1. 后缀是lnk是什么文件_后缀是lnk文件怎么打开,lnk什么格式
  2. js 函数传参实参包含路径“\”处理
  3. Java之字符类型char
  4. 来来来!java程序员个人优势
  5. 离职后如何优雅退群?不要自作多情说告辞,聪明人都懂这4个尺度
  6. python:http.server --- HTTP 服务器
  7. apollo自动驾驶进阶学习之:ST与ST迭代过程
  8. 数据中台应用原型下载-深圳市政府数据开放平台低保真原型设计-Axure9
  9. Android各国语言对照表
  10. 利用JS实现简易ATM机