xgboost 学习:提升树(boosting tree)(含公式推导)

翻译自:Introduction to Boosted Trees

XGBoost  表示“极端梯度提升”,“梯度提升”源自于论文“Greedy Function Approximation: A Gradient Boosting Machine”这是一篇梯度提升书的教程。大部分内容基于 Tianqi Chen(xgboost的作者)的文章these slides

梯度提升树存在有一段时间了, 有很多参考资料. 本篇将使用监督学习的要素,以自完备和原理的方式来解释提升树. 我们觉得这种解释更清晰,更正式,也更有利于推导xgboost用到的公式

目录

监督学习的要素

模型与参数

目标函数:训练误差+正则化

为何引入一般原则?

决策树融合(集成)

树的提升

叠加性训练

模型复杂度

结构分数

学习树结构

注意

XGBoost总结


监督学习的要素

XGBoost用于监督学习问题, 使用训练集(多特征)x_i 来预测目标变量y_i 。在我们专门学习树之前,先来复习监督学习的基本概念

 

模型与参数

有监督学习的模型通常指从输入x_i 预测输出 y_i 的数学结构。一个普遍的例子是线性模型,预测方式为:\hat{y}_i = \sum_j \theta_j x_{ij},是输入特征的线性加权。所预测的值在不同任务中有不同解释(回归和分类)。做一个逻辑斯地变换可以用于正负类别概率预测,也可作为输出的分值用于排序。

参数是未知部分,需要从数据中学习。在线性回归中,参数是系数\theta。通常用\theta表示参数(模型中有很多参数,这里简略)。

 

目标函数:训练误差+正则化

对 y_i 的不同选择,表示了不同的任务,例如回归、分类、排序。训练任务的目标是找到能够拟合输入x和标签y的最佳参数\theta。为此,需要定义目标函数,以衡量模型拟合的好坏

目前函数的一个明显特征是它由两部分组成:训练误差和正则化项

L 是训练误差,\Omega 是正则化项。训练误差衡量了模型对训练集的估计。L 的普遍选择是均方误差:

另一个选择是对数损失,用于逻辑回归:

正则化项是人们常忘记加的,它控制着模型复杂度,避免过拟合。听起来有点抽象,考虑以下问题:要拟合一个阶跃函数,输入如下左上角图. 哪个图是最好的拟合?

正确答案用红色标注了。想想这个是否一个 合理的拟合。一般原则是,我们想要一个简单且可预测的模型,两者间的权衡也成为机器学习中的偏差-方差权衡(篇末参考)

 

为何引入一般原则?

以上所提到的形成了监督学习的基本要素。一般是机器学习工具的组成部分。例如,你必须做到能描述梯度提升树和随机森林的区别和共性(前者boosting后者bagging)。用正规方式理解此过程有助于我们理解学习的目标,还有修剪与平滑等启发式方法的原理。

决策树融合(集成)

现在我们介绍监督学习的要素。我们从树开始. 我们先学习XGBoost 的模型选择: 决策树集成. 树集成模型由多个分类回归树(CART树)组成。以下是 CART 的简单例子,判读某人是否会喜欢一个电脑游戏X

我们将一个家庭的成员分到两片叶子中,并为其赋上叶子的值。CART树与决策树有点不同,后者叶子节点只包含了决策值。而CART树的叶子包含了实际分值,可以提供除分类信息外更多的解释。这也便于从原理上统一优化,在后面部分即将看到。

通常一棵树在实际中不够鲁棒,在实际的集成模型中,会对多棵树的预测求和.

 

这是一个集成两棵树的例子。每棵树预测的分值求和以获得最终分值。仔细观察会发现一个重要事实,两棵树互相补充。模型在数学上的表示为:

K 是树的数量,f 是函数空间\mathcal{F}中的一个函数,\mathcal{F}是所有可能的CART 树模型。目标函数的优化:

这有一个关键问题,随机森林使用的模型是什么?树的集成! 那么随机森林和提升树是相同的模型,两者区别在训练的方式. 这意味着,如果你写为树集成写了一个可预测的服务,只需要写一个即可,它在随机森林和提升树上都能运行(详见Treelite )

 

树的提升

现在我们介绍模型,先看训练:如何学习一棵树? 答案正如所有监督学习模型:定义一个目标函数然后优化

目标函数如下(记住要包含训练误差和正则项):

 

叠加性训练

首先问个问题: 树的参数是什么? 你会发现我们需要学习那些函数 f_i,每个都包含了树的结构还有叶子的分值。学习树结构比传统的优化问题更难,后者只需要用到梯度。一次性学习所有树会比较难,我们使用加性策略:对我们已学到的模型进行校正,然后一次只添加一棵树。将第t步预测到的值记为\hat{y}_i^{(t)},则有:

剩余的问题: 每一步要学习什么样的树? 一个自然的想法是,能优化我们的目标的.

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

MSE 的形式比较友好, 一个一阶项(通常称为残差)与一个二次项。 对于其他损失函数(例如对数损失)想获得如此友好的表达式并不容易. 所以一般情况下,我们使用损失函数的二阶泰勒展开:

g_i 和 h_i 定义如下:

(泰勒展开: ,这里的x是loss function的自变量,也就是上面的y,所以x-a就是y - y(t-1),也就是f;这里的f是上面的loss function)

我们移走所有的常量,在时间步 t 的目标函数变为:

这就是训练新树的优化目标。这个定义的一个重要好处是目标函数的值只依赖于g_i 和 h_i  . 这也是XGBoost 对普通损失函数的支持。 我们可以优化每个损失函数包括对数回归和成对排序损失,使用以g_i 和 h_i 作为输入的求解器。

模型复杂度

我们介绍了训练步骤,但还有一件重要的事,正则化项! 我们需要定义树的复杂度 \Omega(f)。 我们先提炼树f(x)的定义:

w 是叶子节点的权值向量。q 是将不同样本点分配到对应叶子节点的函数T 是叶子的个数. 在XGBoost中,我们定义复杂度为:

当然定义复杂度的方法不止一种,但这个定义在实际中效果很好。正则化项在大多数树算法包里处理的并不细致,或者直接忽略了。这是因为传统的树学习只强调改进不纯度,复杂度控制交给启发式方法。通过正规的定义,我们可以更好地了解我们学习的内容,获得一个泛化性能更好的模型。

结构分数

这是推导过程中奇妙的部分. 在重写树模型公式后,我们将第t棵树的目标函数写成:

I_j = \{i|q(x_i)=j\} 是分配到第j片树叶的下标集合. 注意第二行的求和下标修改了,因为同一片树叶中的样本具有相同的分值。我们可以对其进一步压缩,通过定义:G_j = \sum_{i\in I_j} g_i 和 H_j = \sum_{i\in I_j} h_i:

等式中 w_j 互相独立。G_jw_j+\frac{1}{2}(H_j+\lambda)w_j^2 是二次的,对给定的q(x) 而言,最优的w_j 和最优的目标函数是:

最后一个等式衡量了一棵树结构q(x)是否够好.

如果这些听起来有点复杂,让我们看下这张图,看看分值是如何计算的. 对于给定的树结构,将统计量  g_i 和h_i 分配到各自的叶子。对统计量求和, 然后使用公式衡量这棵树的好坏。衡量标准类似决策树的纯度度量,  除此之外还考虑了模型复杂度 .

学习树结构

现在我们有了衡量树好坏的方法,理想情况下我们要穷举所有可能的树然后选最好的,实际过程中很难,所以我们尝试一次优化树的一个方面. 我们尝试将一片叶子分为两片,然后计算树得分的增加:

这个公式可以分为:

1)  新左叶子的分值 

2) 新右叶子的分值 

3) 原叶子的分值 

4) 新加叶子的正则化项.

我们看到一个重要的事实:  如果增益比\gamma 小,我们宁可不添加该分支,这也是树模型中的剪枝技巧 。通过使用监督学习的原理,我们可以自然得出这些技巧凑效的原因。

对于实际数据,我们通常会搜寻最优的分割。为了更有效率,我们将所有示例排好序,如下图:

一次从左到右的扫描足以计算出所有分割的分值,然后有效找出最好的

注意

加性树模型训练的限制

因为几乎不可能穷举所有情况,所以一次只加一个分割。这种方法在大多数情况下有效,但也有个别情况。对于哪些情况,训练会得到一个退化模型,因为一次只考虑一个特征维度。详见:Can Gradient Boosting Learn Simple Arithmetic?

 

XGBoost总结

现在你理解了什么是提升树,你可能会问,XGBOOST 的介绍呢?XGBOOST 是实现本文原理的一个工具。更重要的是,它在开发中仔细考虑了系统优化还有机器学习原理。这个库的目的在于激发机器计算的上限,提供一个可扩展、可移植、准确的库。确保你尝试过,更重要的是将你的智慧(代码、案例、教程)到社区中

 

本文是一篇自己的翻译,网上还有apachecn的翻译见:https://xgboost.apachecn.org/#/docs/3

XGBoost超详细推导,终于有人讲明白了 这也是篇对原文的翻译+理解

偏差和方差有什么区别?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
XGBoost(eXtreme Gradient Boosting)是一种基于梯度提升的机器学习算法,它在各种机器学习竞赛中表现出色。下面是XGBoost的原理和公式推导: 1. 原理: XGBoost是一种集成学习算法,通过组合多个弱学习器(决策)来构建一个强学习器。它采用了梯度提升的思想,每一轮迭代都通过拟合前一轮模型的残差来训练新的模型,然后将新模型加入到集成中。 2. 损失函数: XGBoost使用了一种特殊的损失函数,称为目标函数。目标函数由两部分组成:损失函数和正则化项。常用的损失函数有平方损失函数、逻辑损失函数等。 3. 梯度提升: 在XGBoost中,每个决策都是通过梯度提升来构建的。梯度提升的过程可以简单描述为以下几个步骤: - 初始化模型:将初始预测值设置为常数,通常为训练集样本的平均值。 - 计算残差:计算当前模型对训练集样本的预测值与真实值之间的差异,得到残差。 - 拟合决策:使用残差作为目标变量,拟合一个决策模型。 - 更新模型:将新的决策模型加入到集成中,并更新模型的预测值。 - 重复以上步骤,直到达到预定的迭代次数或满足停止条件。 4. 正则化: 为了防止过拟合,XGBoost引入了正则化项。正则化项由两部分组成:的复杂度和叶子节点权重的L1或L2正则化。通过控制正则化参数,可以平衡模型的复杂度和拟合能力。 5. 公式推导XGBoost公式推导涉及到目标函数、损失函数、正则化项等,具体推导过程较为复杂。你可以参考XGBoost的论文《XGBoost: A Scalable Tree Boosting System》中的相关推导部分,详细了解公式推导的细节。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值