返回顶部
首页 > 资讯 > 后端开发 > Python >【机器学习】XGBoost
  • 823
分享到

【机器学习】XGBoost

机器学习人工智能python 2023-09-05 08:09:37 823人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

1.什么是XGBoost         XGBoost(eXtreme Gradient Boosting)极度梯度提升树,属于集成学习中的boosting框架算法。对于提升树,简单说就是一个模型表现不好,继续按照原来模型表现不好的那部分

1.什么是XGBoost

        XGBoost(eXtreme Gradient Boosting)极度梯度提升树,属于集成学习中的boosting框架算法。对于提升树,简单说就是一个模型表现不好,继续按照原来模型表现不好的那部分训练第二个模型,依次类推。本质思想与GBDT一致,构建多个基学习器使用加法模型,学习前面基学习器的结果与真实值的偏差,通过多个学习器的学习,不断降低模型值和实际值的差。

         最终模型的预测结果是由所有基学习器预测结果的加和。 

2.XGBoost的目标函数

        XGBoost整体思想就是直接把损失函数和正则项加起来合成一个整体的损失函数,对这个损失函数求二阶导,得到最终的obj,通过obj计算得到一个分数,这个分数越小越好,最终通过obj计算得到的分数确定了树的结构和整个强学习器的分数。所以XGBoost不是通过拟合残差实现的,而是计算obj函数直接得到的树结构。 

        目标函数由两部分组成,第一部分是模型误差,即样本真实值和预测值之间的差值,第二部分是模型的结构误差,即正则项,通过使用超参数乘以结点个数和节点值限制模型的复杂度。 

        正则项公式如下: 

        参数说明: 

       

        优化目标:

         由于是加法模型,所以可以将正则项进行改写,整体的正则项就等于前面t-1棵树的正则项加上当前回归树的正则项。

         而在计算时,前面t-1棵树正则项中的T和w是已经确定的,整体优化目标可以近似表示:

         正则项的确定只与要优化的当前的这颗回归树的叶子结点的w值和叶子结点的个数T有关。

        由于树模型是阶跃的,是不连续的,不适合用梯度下降法,所以需要将目标函数改写,按照样本的顺序做遍历更改为按照叶子结点的顺序做遍历。例如叶子结点有w1、w2....wn。经过回归后落到w1叶子结点下的样本集合K1中包含有不同的预测值,w1的损失值就是w1(叶子结点的值)的值与K1中不同预测值的损失加和,以此类推。

         已经将损失函数转化为与叶子结点的值w有关的多项式,因为损失函数根据不同的任务定义,所以无法提前预知损失函数的形式。接下来的任务是将抽象的损失函数分解为包含w的多项式,通过泰勒二阶展开将w进行提取。

3.公式推导

        使用泰勒二阶对目标函数展开。

         泰勒二阶展开后的损失函数。

         通过分步+贪婪的到树的结构。确定树的结构就是来确定树的叶子结点的值w

4. XGBoost的优缺点

4-1 优点

(1)精度更高:GBDT 只用到一阶泰勒展开,而 XGBoost 对损失函数进行了二阶泰勒展开。XGBoost 引入二阶导一方面是为了增加精度,另一方面也是为了能够自定义损失函数,二阶泰勒展开可以近似大量损失函数;

(2)灵活性更强:GBDT 以 CART 作为基分类器,XGBoost 不仅支持 CART 还支持线性分类器,使用线性分类器的 XGBoost 相当于带 L1 和 L2 正则化项的逻辑回归(分类问题)或者线性回归(回归问题)。此外,XGBoost 工具支持自定义损失函数,只需函数支持一阶和二阶求导;

(3)正则化:XGBoost 在目标函数中加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、叶子节点权重的 L2 范式。正则项降低了模型的方差,使学习出来的模型更加简单,有助于防止过拟合,这也是XGBoost优于传统GBDT的一个特性。

(4)防止过拟合:

        1.Shrinkage(缩减):相当于学习速率。XGBoost 在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,使每棵树的影响不会过大,让后面有更大的学习空间。主要用于传统GBDT的实现也有学习速率;

        2.Column Subsampling(列采样),类似于随机森林选区部分特征值进行建树,其中又分为两个方式:方式一按层随机采样,在对同一层结点分裂前,随机选取部分特征值进行遍历,计算信息增益;方式二在建一棵树前随机采样部分特征值,然后这棵树的所有结点分裂都遍历这些特征值,计算信息增益。这也是XGBoost异于传统GBDT的一个特性;

(5)缺失值处理:XGBoost和LightGBM是支持缺失值的,并且XGBoost和LightGBM对缺失值的处理方法相同。xgboost为缺失值设定了默认的分裂方向,对于存在某一维特征缺失的样本XGBoost会先将其划入左子树计算增益,再划入右子树计算训练增益,对比放在左右子树增益的大小决定放在哪个子树。

4-2 缺点

(1)计算量大:虽然利用预排序和近似算法可以降低寻找最佳分裂点的计算量,但在节点分裂过程中仍需要遍历数据集;

   (2)内存消耗大:预排序过程的空间复杂度过高,不仅需要存储特征值,还需要存储特征对应样本的梯度统计值的索引,相当于消耗了两倍的内存。

5.  XGBoost与GBDT的联系和区别有哪些?

(1)GBDT是机器学习算法,XGBoost是该算法的工程实现。

(2)正则项:在使用CART作为基分类器时,XGBoost显式地加入了正则项来控制模型的复杂度,有利于防止过拟合,从而提高模型的泛化能力。

(3)导数信息:GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数。

(4)基分类器:传统的GBDT采用CART作为基分类器,XGBoost支持多种类型的基分类器,比如线性分类器。

(5)子采样:传统的GBDT在每轮迭代时使用全部的数据,XGBoost则采用了与随机森林相似的策略,支持对数据进行采样。

(6)缺失值处理:传统GBDT没有设计对缺失值进行处理,XGBoost能够自动学习出缺失值的处理策略。

(7)并行化:传统GBDT没有进行并行化设计,注意不是tree维度的并行,而是特征维度的并行。XGBoost预先将每个特征按特征值排好序,存储为块结构,分裂结点时可以采用多线程并行查找每个特征的最佳分割点,极大提升训练速度。

Reference:

(1)15.【近似算法】加权分位法_哔哩哔哩_bilibili

(2)XGBoost算法介绍_月落乌啼silence的博客-CSDN博客_xgboost

(3)深入理解XGBoost - 知乎

来源地址:https://blog.csdn.net/weixin_44750512/article/details/129047112

--结束END--

本文标题: 【机器学习】XGBoost

本文链接: https://lsjlt.com/news/395043.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 【机器学习】XGBoost
    1.什么是XGBoost         XGBoost(eXtreme Gradient Boosting)极度梯度提升树,属于集成学习中的boosting框架算法。对于提升树,简单说就是一个模型表现不好,继续按照原来模型表现不好的那部分...
    99+
    2023-09-05
    机器学习 人工智能 python
  • 机器学习——XGBoost大杀器,XGB
    0.随机森林的思考   随机森林的决策树是分别采样建立的,各个决策树之间是相对独立的。那么,在我们得到了第k-1棵决策树之后,能否通过现有的样本和决策树的信息, 对第m颗树的建立产生有益的影响呢?在随机森林建立之后,采用的投票过程能否增加...
    99+
    2023-01-31
    机器 XGBoost XGB
  • Python机器学习应用之基于天气数据集的XGBoost分类篇解读
    目录一、XGBoost1 XGBoost的优点2 XGBoost的缺点二、实现过程1 数据集2 实现三、KeysXGBoost的重要参数一、XGBoost XGBoost并不是一种模...
    99+
    2024-04-02
  • 机器学习
    由于工作原因,机器学习相关核心文章无法发布,对机器学习感兴趣的,随时欢迎私聊我。 人工智能(机器学习)学习之路推荐 《机器学习实战》-机器学习基础 《机器学习实战》-k近邻算法 《机器学习实战》-决策树 《机器学习实战》-线性...
    99+
    2023-01-31
    机器
  • 机器学习:无监督学习
    文章目录 线性学习方法聚类ClusteringKmeansHAC 分布表示降维PCAMatrix FactorizationManifold LearningLLELaplacian Eigenmapst-SEN ...
    99+
    2023-08-30
    机器学习 无监督学习
  • Python机器学习:6本机器学习书籍推
    机器学习是实现人工智能的一种途径,它和数据开掘有一定的相似性,也是一门多领域交叉学科,触及概率论、核算学、逼近论、凸剖析、核算复杂性理论等多门学科。对比于数据开掘从大数据之间找互相特性而言,机器学习愈加注重算法的设计,让核算机可以白动地从...
    99+
    2023-01-31
    机器 书籍 Python
  • 机器学习---sklearn
    1.Sklearn简介 sklearn (全称 Scikit-Learn) 是基于 Python 语言的机器学习工具,Sklea是处理机器学习 (有监督学习和无监督学习) 的包。它建立在 NumPy...
    99+
    2023-09-01
    sklearn 机器学习 python
  • 机器学习——KMeans
    导入类库 1 from sklearn.cluster import KMeans 2 from sklearn.datasets import make_blobs 3 import numpy as np 4 import matp...
    99+
    2023-01-30
    机器 KMeans
  • 机器学习概述
    文章目录 机器学习应用背景数据挖掘个性化定制替代人力的软件应用 什么是机器学习示例 机器学习系统举例IBM Watson DeepQAIBM Watson技术需求相关技术 -- DeepQA ...
    99+
    2023-08-30
    机器学习 人工智能
  • 机器学习资源
    推荐资源大部分来自《深度学习入门之 PyTorch》(廖星宇 编著)。 Python 语言三个学习资源 (1)《笨方法学 Python》(Learn Python the Hard Way) 本书面向零基础的读者,通过一系列简单的例子快速...
    99+
    2023-01-31
    机器 资源
  • 【数据科学系统学习】机器学习算法 #
    本篇内容为《机器学习实战》第 6 章 支持向量机部分程序清单。所用代码为 python3。 支持向量机优点:泛化错误率低,计算开销不大,结果易解释。 缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二分类问题。适用数据...
    99+
    2023-01-31
    算法 机器 科学
  • 机器学习期末复习题
    1.以下哪项不属于知识发现的过程?( D) A、数据清理 B、数据挖掘 C、知识可视化表达 D、数据测试 2.协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些用户对某一信息的评价,形成系统对该指定用户对此信息的喜...
    99+
    2023-10-09
    python 数据挖掘 开发语言 人工智能
  • 深度学习详解之初试机器学习
    机器学习可应用在各个方面,本篇将在系统性进入机器学习方向前,初步认识机器学习,利用线性回归预测波士顿房价; 原理简介 利用线性回归最简单的形式预测房价,只需要把它当做是一次线性函数y...
    99+
    2024-04-02
  • 机器学习——决策树
    决策树是一种用于分类和回归的非参数监督学习方法。目标是创建一个模型,通过从数据特性中推导出简单的决策规则来预测目标变量的值 1 import numpy as np 2 import pandas as pd 3 from skl...
    99+
    2023-01-30
    机器 决策树
  • PHP中的机器学习
    在当今时代,机器学习已经不再是一项神秘的技术。越来越多的人意识到了机器学习的重要性,并且开始学习和应用。但是,大多数人在想到机器学习时,首先想到的是Python,而很少有人知道PHP也可以进行机器学习。PHP是一种通用编程语言,通常用于We...
    99+
    2023-05-23
    机器学习 PHP AI (人工智能)
  • MNIST机器学习入门
    当我们开始学习编程的时候,第一件事往往是学习打印"Hello World"。就好比编程入门有Hello World,机器学习入门有MNIST。 MNIST是一个入门级的计算机视觉数据集,它包含各种手写数字图片。它也包含每一张图片对应的标签...
    99+
    2023-01-31
    入门 机器 MNIST
  • python机器学习中英
    监督学习,supervised learning无监督学习,unsupervised learning分类,classificat回归,regression降维,dimensionality reduction聚类,clustering特征...
    99+
    2023-01-31
    中英 机器 python
  • 机器学习——支持向量机
    SVM就是试图把棍放在一堆球中的最佳位置,好让在棍的两边有尽可能大的间隙。这个间隙就是球到棍的距离。 支持向量机:找到分类界面,使支持向量间的间隔最大,支持向量到分割界面的距离最小 支持向量是通过到分割界面距离最小的点的向量,且两向...
    99+
    2023-01-30
    向量 机器
  • 深度学习和机器学习有什么差别
    深度学习和机器学习是两个相关但不同的概念。机器学习是一种广义的概念,指的是让计算机系统通过学习数据并改善性能,而不是通过显式的编程。...
    99+
    2023-09-20
    深度学习
  • 深度学习和机器学习有哪些区别
    本文小编为大家详细介绍“深度学习和机器学习有哪些区别”,内容详细,步骤清晰,细节处理妥当,希望这篇“深度学习和机器学习有哪些区别”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。深度学习和机器学习最大的区别就是“性能...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作