Boosted Trees原理简介
XGBoost代表“极端梯度增强”,其中术语“梯度增强”源自Friedman撰写的论文《贪婪函数近似:梯度增强机》。
该梯度gradient boosted trees已经有一段时间了,而且有很多关于该主题的材料。本文将使用监督学习的元素,以自成体系和有原则的方式解释增强树。这种解释更加简洁,正式,并激发了XGBoost中使用的模型公式。
监督学习的要素
XGBoost用于有监督的学习问题,在其中使用训练数据(具有多个功能) xi 预测目标变量 yi。在具体学习trees之前,首先回顾一下监督学习中的基本元素。
模型与参数
监督学习中的模型通常是指预测所依据的数学结构yi,由输入 xi。一个常见的例子是线性模型,其中的预测为
,是加权输入功能的线性组合。根据任务,即回归或分类,预测值可以具有不同的解释。例如,可以对其进行逻辑变换,以在逻辑回归中获得阳性类别的概率,并且当要对输出进行排名时,还可以将其用作排名得分。
该参数是不确定的一部分,需要从数据中学习。在线性回归问题中,参数是系数θ。通常会用θ 表示参数(模型中有很多参数,此处的定义很草率)。
目标功能:训练损失+正则化
有明智的选择 yi,可能会表达各种任务,例如回归,分类和排名。训练模型的任务就是找到最佳参数θ 最适合训练数据 xi 和标签 yi。为了训练模型,需要定义目标函数 以衡量模型对训练数据的拟合程度。
目标函数的一个显着特征是由两部分组成:训练损失和正则项:
obj(θ)=L(θ)+Ω(θ)
这 L是训练损失函数,并且 Ω是正则化项。训练损失衡量了模型相对于训练数据的预测能力。常见的选择LL是均方误差,由

另一个常用的损失函数是逻辑损失,用于逻辑回归:

该调整项就是人们通常忘记添加。正则项控制模型的复杂性,这有助于避免过度拟合。要求在视觉上拟合阶跃函数。
考虑这在视觉上是否适合。一般原则是既需要简单的模型又需要预测的模型。两者之间的权衡也称为机器学习中的偏差方差权衡。
为什么要介绍一般原则?
上面介绍的元素构成了监督学习的基本元素,机器学习工具包的自然构建块。例如,应该能够描述梯度增强树和随机森林之间的差异和共性。以一种形式化的方式了解该过程,还有助于了解正在学习的目标,以及诸如裁剪和平滑之类的启发式方法背后的原因。
决策树
既然已经介绍了监督学习的要素,那么开始学习真正的树。首先,首先了解XGBoost的模型选择:决策树集成。树集成模型由一组分类树和回归树(CART)组成。这是一个CART的简单示例,该示例对某人是否会喜欢假设的计算机游戏X进行分类。
将一个家庭成员分为不同的叶子,并在相应的叶子上给他们分配分数。CART与决策树略有不同,在决策树中,叶子仅包含决策值。在CART中,每个叶子都与真实分数相关联,提供了超越分类的更丰富的解释。也允许采用原则上统一的优化方法,将在本文的后面部分中看到。
通常,一棵树不够强大,无法在实践中使用。实际使用的是集成模型,该模型将多个树的预测结果汇总在一起。
这是两棵树的树集合的示例。将每棵树的预测分数相加,得出最终分数。看这个例子,一个重要的事实是两棵树试图互相补充。在数学上,可以用以下形式编写模型

这里K是树的数量,f是功能空间中的功能 F, 和 F是所有可能的CART的集合。要优化的目标函数由下式给出

现在来了一个棘手的问题:随机森林中使用的模型是什么?trees合奏 ensembles!因此,随机森林和茂密的trees实际上是相同的模型。不同之处在于进行训练的方式。这意味着,如果为trees集成编写了一种预测服务,则只需要编写一项,并且对随机森林和梯度增强树都适用。一个示例,说明为什么监督学习的要素很困难。
Tree Boosting

介绍了该模型,现在转向训练:应该如何学习trees?答案是,就像所有有监督学习模型一样,定义一个目标函数并对其进行优化!
将以下作为目标函数(记住,始终需要包含训练损失和正则化):

加性训练
要问的第一个问题:树的参数是什么?会发现需要学习的是这些功能fi,每个都包含树的结构和叶子的分数。学习树结构比传统的优化问题要困难得多,在传统的优化问题中,可以简单地采用梯度。一次学习所有trees是很棘手的。取而代之的是,采用累加策略:修正所学的知识,并一次添加一棵新树。在步骤中写出预测值t 作为 y(t)iyi(t)。有

还有一个问题要问:在每一步都想要哪棵树?很自然的事情是添加可以优化目标的产品。

如果考虑使用均方误差(MSE)作为损失函数,则目标变为

MSE的形式是友好的,具有一阶项(通常称为残差)和二次项。对于其他利息损失(例如,物流损失),要获得如此好的表格并不容易。因此,在一般情况下,将损失函数的泰勒展开式提高到二阶:

这成为对新树的优化目标。该定义的一个重要优点是目标函数的值仅取决于gi 和 hi。这就是XGBoost支持自定义损失功能的方式。可以使用完全相同的求解器来优化每个损失函数,包括逻辑回归和成对排名gi 和 hi 作为输入!
模型复杂度
已经介绍了训练步骤,但是等等,有一件重要的事情,正则化术语!需要定义树的复杂性Ω(f)。为此,首先完善树的定义f(x) 作为

这里 w是叶子得分的向量, q是将每个数据点分配给相应叶的函数,并且T是叶子的数量。在XGBoost中,将复杂度定义为

当然,定义复杂性的方法不止一种,但在实践中效果很好。正规化是大多数树包不太仔细或忽略的一部分。这是因为传统的trees学习方法只强调改善杂质,而复杂度控制则留给启发式方法。通过对其进行正式定义,可以更好地了解正在学习的内容,并获得在野外表现良好的模型。
结构得分
这是推导的神奇部分。重新构造树模型后,可以用tt-th树为:

如果这听起来有点复杂,那么看一下图片,看看如何计算分数。基本上,对于给定的树结构,推统计gi 和 hi对所属的叶子进行统计,将统计数据加在一起,然后使用公式来计算树的质量。该分数类似于决策树中的杂质度量,不同之处在于还考虑了模型的复杂性。
学习树形结构
现在,有了一种方法来衡量一棵树的质量,理想情况下,将枚举所有可能的树并选择最佳的树。实际上这是棘手的,因此将尝试一次优化一个树的级别。具体来说,尝试将一片叶子分成两片叶子,其得分为

该公式可分解为1)新左叶上的分数2)新右叶上的分数3)原始叶上的分数4)附加叶上的正则化。可以在这里看到一个重要的事实:如果增益小于γ,最好不要添加该分支。这正是基于树的模型中的裁剪技术!通过使用监督学习的原理,自然可以得出这些技术起作用的原因:)
对于实值数据,通常要搜索最佳分割。为了有效地做到这一点,将所有实例按已排序的顺序放置。
从左到右扫描足以计算所有可能的拆分解决方案的结构得分,并且可以高效地找到最佳拆分。
笔记
加性树学习的局限性
由于枚举所有可能的树形结构很困难,因此一次添加一个拆分。在大多数情况下,此方法效果很好,但是由于这种方法,有些边缘情况会失败。对于那些极端情况,训练导致退化的模型,因为一次只考虑一个特征维。
XGBoost的总结
现在已经了解了什么是增强树,可能会问,XGBoost的介绍在哪里?XGBoost正是本文中介绍的正式原理所激发的工具!更重要的是,在系统优化和机器学习原理方面都经过深思熟虑。该库的目的是将机器的计算极限推到极限,以提供可扩展,可移植且准确的库。

Boosted Trees原理简介相关推荐

  1. Boosted Trees简介【翻译+自己的理解】

    原文 https://homes.cs.washington.edu/~tqchen/pdf/BoostedTree.pdf 华盛顿大学的 Introduction to Boosted Trees. ...

  2. XGBoost和Boosted Trees

    树模型简介 树模型是工业界用得非常多的一个模型,它的representation类似于下图.其实基于树的模型都是通过一个个平行于坐标轴的平面去拟合训练集的实际分界面,理论上足够多的平行于坐标轴的平面能 ...

  3. (XGBoost)提升树入门介绍(Inrtoduction to Boosted Trees)

    提升树入门介绍(Inrtoduction to Boosted Trees) Author : Jasper Yang School : Bupt 这是一篇翻译文,翻译的内容是 XGBoost 官网的 ...

  4. Boosted Trees 介绍

    原文地址: http://xgboost.apachecn.org/cn/latest/model.html#xgboost Boosted Trees 介绍 XGBoost 是 "Extr ...

  5. javascript原理_JavaScript程序包管理器工作原理简介

    javascript原理 by Shubheksha 通过Shubheksha JavaScript程序包管理器工作原理简介 (An introduction to how JavaScript pa ...

  6. Nginx 反向代理工作原理简介与配置详解

    Nginx 反向代理工作原理简介与配置详解 测试环境 CentOS 6.8-x86_64 nginx-1.10.0 下载地址:http://nginx.org/en/download.html 安装 ...

  7. DeepLearning tutorial(1)Softmax回归原理简介+代码详解

    FROM: http://blog.csdn.net/u012162613/article/details/43157801 DeepLearning tutorial(1)Softmax回归原理简介 ...

  8. DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解

    FROM:http://blog.csdn.net/u012162613/article/details/43221829 @author:wepon @blog:http://blog.csdn.n ...

  9. DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解

    FROM: http://blog.csdn.net/u012162613/article/details/43225445 DeepLearning tutorial(4)CNN卷积神经网络原理简介 ...

最新文章

  1. 王贻芳院士:为什么中国要探究中微子实验?
  2. Devexpress 之gridControl
  3. 指尖检测的几种新方法
  4. Boost.Geometry 结合 Boost.Graph,计算最短路线
  5. flex中datagrid中的过滤功能
  6. 【题解】BZOJ5093图的价值(二项式+NTT)
  7. 继续来研究JScript解析引擎的GC问题
  8. excel和html互相转换,Excel2016与Html格式之间的互相转换
  9. css怎么去掉字体样式,css怎么去掉字体粗体样式
  10. 微软知识库kb是什么?如何搜索Microsoftwindowsknowledgebase
  11. 苹果计算机怎么切换科学计算机,Mac如何使用科学计算器
  12. jq ajax读取txt,使用JQuery或Ajax加载.txt文件
  13. Windows 11的Android虚拟机
  14. PHP 实现301转向代码
  15. 解析CSS属性之pointer-events
  16. 猜数字小游戏,超级简单就可以实现哦
  17. 计算机系统分盘作用,电脑为什么要分区,分区的好处
  18. 笔记-项目干系人管理-识别干系人
  19. 深入Redis数据结构和底层原理
  20. nest class-validator验证修饰器中文文档

热门文章

  1. Java操作系统进程调度算法——先来先服务(FCFS)算法
  2. AI 绘画 - 建筑绘图辅助设计之生图
  3. 一文深入理解Dubbo核心模型Invoker
  4. 实现不同分辨率电脑页面自适应
  5. 低功耗蓝牙开发必备工具指南
  6. Homestead环境搭建及简介
  7. ORA-39087 目录名无效
  8. linux中嵌套循环,linux中的嵌套循环
  9. 在CAD中如何进行连续的复制
  10. 最详细Android连接远程的MySQL数据库实例