GBDT算法梳理

GBDT(Gradient Boosting Decision Tree)是一种迭代的决策树算法,主要用于回归和分类问题。它通过逐步添加弱学习器来优化损失函数,每次迭代的目标是拟合前一轮的残差。本文介绍了GBDT的基本概念,如回归树、提升树算法、前向分布算法、负梯度拟合以及损失函数。还探讨了GBDT的优缺点,如预测精度高、对异常值的鲁棒性,但也指出其并行训练的困难和高维度数据的挑战。此外,文章详细讲解了GBDT在sklearn中的参数设置,如`n_estimators`、`learning_rate`和`loss`等。最后,GBDT广泛应用于各种回归和分类任务。
摘要由CSDN通过智能技术生成

0、预备知识

0.1回归树

首先,GBDT使用的决策树是CART回归树,无论是处理回归问题还是二分类以及多分类,GBDT使用的决策树通通都是都是CART回归树。为什么不用CART分类树呢?因为GBDT每次迭代要拟合的是梯度值,是连续值所以要用回归树。

对于回归树算法来说最重要的是寻找最佳的划分点,那么回归树中的可划分点包含了所有特征的所有可取的值。在分类树中最佳划分点的判别标准是熵或者基尼系数,都是用纯度来衡量的,但是在回归树中的样本标签是连续数值,所以再使用熵之类的指标不再合适,取而代之的是平方误差,它能很好的评判拟合程度。回归树是如何工作的呢?

下面以对人的性别判别/年龄预测为例来说明,每个instance都是一个我们已知性别、年龄的人,而feature则包括这个人上网的时长、上网的时段、网购所花金额等。

作为对比,先说分类树。我们知道C4.5分类树在每次分枝时是穷举每一个feature的每一个阈值,找到使得按照feature<=阈值和feature>阈值分成的两个分支的熵最大的feature和阈值,按照该标准分支得到两个新节点,同样方法继续分支直到所有人都被分入性别唯一的叶节点,或达到预设的终止条件。若最终叶子节点中的性别不唯一,则以多数人的性别作为该叶子节点的性别。

回归树流程类似,不过在每个节点(不一定是叶子节点)都会得一个预测值,以年龄为例,该预测值等于属于这个节点的所有人年龄的平均值。分支时穷举每一个feature的每个阈值寻找最好的分割点,但衡量最好的标准不再是最大熵二十最小化均方差,这很好理解,被预测出错的人数越多,错的越离谱,均方差就越大。通过最小化均方差能够找到最靠谱的分支依据,若最终叶子节点上人的年龄不唯一,则以该节点上所有人的平均年龄作为该叶子节点的预测年龄。

0.2.提升树算法

基于梯度提升算法的学习器叫做GBM(Gradient Boosting Machine)。梯度提升树(Grandient Boosting)是提升树(Boosting Tree)的一种改进算法,所以在讲梯度提升树之前先来说一下提升树。

先来个通俗理解:假如有个人30岁,我们首先用20岁去拟合,发现损失有10岁,这时我们用6岁去拟合剩下的损失,发现差距还有4岁,第三轮我们用3岁拟合剩下的差距,差距就只有一岁了。如果我们的迭代轮数还没有完,可以继续迭代下面,每一轮迭代,拟合的岁数误差都会减小。最后将每次拟合的岁数加起来便是模型输出的结果。

在这里插入图片描述

1、前向分布算法

在AdaBoost算法中,我们的最终目的是通过构建弱分类器的线性组合:
f ( x ) = ∑ m = 1 M α m G m ( x ) f(x)=\sum_{m=1}^{M} \alpha_{m} G_{m}(x) f(x)=m=1MαmGm(x)
来得到最终分类器。
考虑加法模型:
f ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f(x)=\sum_{m=1}^{M} \beta_{m} b\left(x ; \gamma_{m}\right) f(x)=m=1Mβmb(x;γm)

显然,AdaBoost算法是基于加法模型。在给定训练数据及损失函数L(y,f(x))的条件下,学习加法模型f(x)成为经验风险极小化及损失函数极小化问题:

min ⁡ β m , γ m ∑ i = 1 N L ( y i , ∑ m = 1 M β m b ( x i ; γ m ) ) \min _{\beta_{m}, \gamma_{m}} \sum_{i=1}^{N} L\left(y_{i}, \sum_{m=1}^{M} \beta_{m} b\left(x_{i} ; \gamma_{m}\right)\right) βm,γmmini=1NL(yi,m=1Mβmb(xi;γm))

通常这是一个复杂的优化问题,前向分步算法(forward stagewise algorithm)求解这一优化问题的想法是:因为学习的是加法模型。如果能够从前向后,每一步只学习一个基函数及其系数,逐步逼近优化目标函数式,那么就可以简化优化的复杂度。具体地,每步只需优化如下损失函数:
min ⁡ β , γ ∑ i = 1 N L ( y i , β b ( x i ; γ ) ) \min _{\beta, \gamma} \sum_{i=1}^{N} L\left(y_{i}, \beta b\left(x_{i} ; \gamma\right)\right) β,γmini=1NL(yi,βb(xi;γ))

给定训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ &ThinSpace; , ( x N , y N ) } , x i ∈ X ⊆ R n , y i ∈ Y = { − 1 , + 1 } T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \cdots,\left(x_{N}, y_{N}\right)\right\}, x_{i} \in \mathcal{X} \subseteq \mathbf{R}^{n}, y_{i} \in \mathcal{Y}=\{-1,+1\} T={ (x1,y1),(x2,y2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
GBDT算法(Gradient Boosting Decision Tree)是一种基于决策树的集成学习算法,是由多棵决策树组成的强学习模型。该算法是通过迭代的方式,不断优化损失函数来生成决策树。该算法的结构比较简单,但是能够有效地处理特征稀疏、高维度数据,具有较高的精度和鲁棒性。 MATLAB作为一种强大的数学软件,提供了很多机器学习算法的实现。在MATLAB中使用GBDT算法,可以利用MATLAB的机器学习工具箱中提供的函数进行实现,也可以使用第三方工具箱进行实现。使用MATLAB实现GBDT算法能够简化算法实现的流程,提高开发效率;同时,MATLAB也提供了各种可视化工具,方便对算法结果进行分析和可视化。 当使用MATLAB实现GBDT算法时,需要注意以下几点: 1. 数据预处理。GBDT算法对数据的预处理要求较高,需要对数据进行归一化、异常值处理等,以达到更好的训练效果。 2. 调整模型参数。GBDT算法中有很多超参数,如树的深度、节点分裂的最小样本数等,需要通过实验调整,以得到最优的模型。 3. 训练过程的可视化。使用MATLAB可以方便地将模型训练过程可视化,以便对模型的训练效果进行实时监控和分析。 4. 结果分析和可视化。GBDT算法生成的模型是一组决策树,可以通过可视化的方式将不同决策树的划分边界可视化,以便更好地理解模型的逻辑。 总之,使用MATLAB实现GBDT算法可以快速构建出精度高、鲁棒性好的强学习模型,成为数据分析和机器学习领域的重要工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值