【机器学习】XGBoost的用法和参数解释

一、XGBoost的用法

流程:

5f587abaafa94cd8a490cc8fa8d88a08.png

代码案例:

84dacc597b4b4d8a9cd5cd2766f58f0b.png

二、XGBoost的几大参数

1、一般参数,用于集成算法本身

n_estimators

集成算法通过在数据上构建多个弱 评估器,汇总所有弱评估器的建模结果,以获取比单个模型更好的回归或分类表现。sklearn中n_estimators表示弱评估器的个数,在xgboost中用num_boost_round表示,是xgboost.train()中对应第3个参数。这个参数非常强大,常常能够一次性将模型调整到极限, 在XGBoost中它也是如此。

②verbosity 

训练中是否打印每次训练的结果

verbosity , default = 0, 取值范围[0,3] 0 (silent), 1 (warning), 2 (info), 3 (debug).
#设置 verbosity = 3,会打印详细的训练过程

③subsample

随机抽样的时候抽取的样本比例,范围(0,1],默认是1

采样会减少样本数量,而从学习曲线 来看样本数量越少模型的过拟合会越严重,因为对模型来说,数据量越少模型学习越容易,学到的规则也会越具体越 不适用于测试样本。所以subsample参数通常是在样本量本身很大的时候来调整和使用。

④eta

集成中的学习率,又称为步长 以控制迭代速率,常用于防止过拟合,默认0.3,取值范围[0,1]

eta是迭代决策树时的步长(shrinkage),又叫做学习率(learning rate)。和逻辑回归中的 类似, 越大,迭代的速度越快,算法的极限很快被达到,有可能无法收敛到真正的最佳。 越小,越有可能找到更精确的最佳值,更多的空间被留给了后面建立的树,但迭代速度会比较缓慢

2、弱评估器参数

①booster(XGBoost中为xgb_model )

使用哪种弱评估器。可以输入gbtreegblineardart。输入的评估器不同,使用 的params参数也不同,每种评估器都有自 己的params列表。评估器必须于param参 数相匹配,否则报错。

gbtree:即是论文中主要讨论的树模型,推荐使用
gblinear:是线性模型,表现很差,接近一个LASSO
dart:Dropouts meet Multiple Additive Regression Trees,可译为抛弃提升树,在建树的过 程中会抛弃一部分树,比梯度提升树有更好的防过拟合功能。

②objective(重要)

(1)集成算法中的损失函数是可选的,要选用什么损失函数取决于我们希望解决什么问题,以及希望使用怎样的模型。比如说,如果我们的目标是进行回归预测,那我们可以选择调节后的均方误差RMSE作为我们的损失函数。如果我们是进行分类预测,那我们可 以选择错误率error或者对数损失log_loss。

(2)XGBoost的目标函数(Obj)被写作:传统损失函数 + 模型复杂度。

3ccaf9d2a9044ce5b166fe13d25e89ea.png

使用参数“objective"来确定我们目标函数的第一部分中的 ,也就是衡量损失的部分

(3)常见的损失函数(***)

xgb.train():objective: 默认reg:squarederror(XGBoost)
xgb.XGBRegressor() :objective: 默认reg:squarederror(Sklearn库)
xgb.XGBClassifier() : objective: 默认binary:logistic(Sklearn库)

输入选用的损失函数
reg:linear使用线性回归的损失函数,均方误差,回归时使用
binary:logistic使用逻辑回归的损失函数,对数损失log_loss,二分类时使用,,输出为概率
binary:hinge使用支持向量机的损失函数,Hinge Loss,二分类时使用
multi:softmax使用softmax损失函数,多分类时使用,同时需要设置参数num_class(类别个 数),返回预测的类别(不是概率)

PS:

如果不指定具体使用哪种objective,函数会根据是回归问题还是分类问题,默认选择相应的损失函数;
如果自行设定objective的类型,其类型需与业务的类型(回归 or 分类)相对应,否则容易报错。

③参数化决策树 :参数alpha,lambda

L1正则项的参数 alpha,默认0,取值范围[0, +∞]

L2正则项的参数 lambda,默认1,取值范围[0, +∞]

④重要参数gamma

复杂度的惩罚项:gamma,默认0取值范围[0, +∞]

实践证明, gamma是对梯度提升树影响最大 的参数之一,其效果丝毫不逊色于n_estimators和防止过拟合的神器max_depth。同时, 还是我们让树停止生长的重要参数。

e3b71a45fff84c70b8f22793f8e2c7c7.png

⑤剪枝的参数(减轻过拟合带来的影响)

以下是几个影响比较大,常用于剪枝的参数

7b28319add3c4eabb064ba62e2b0788a.png

ps:在XGBoost中,最大深度的功能与 参数 相似,因此如果先调节了 ,则最大深度可能无法展示出巨大的效果。当然,如果先调整了最大深度,则 也有 可能无法显示明显的效果。

调参过程:通常当我们获得了一个数据集后,我们先使用网格搜索找出比较合适的n_estimators和eta组合,然后使用gamma或 者max_depth观察模型处于什么样的状态(过拟合还是欠拟合,处于方差-偏差图像的左边还是右边?),最后再决 定是否要进行剪枝

3、其他参数

①xgboost中回归模型的默认模型评估指标参数:eval_metric

该参数的使用是为了我们方便使用xgboost.cv(交叉验证

09271c21ea934ad0b5ba3feb29ae2e35.png

指标含义
rmse回归用,调整后的均方误差
mae回归用,绝对平均误差
logloss二分类用,对数损失
mlogloss多分类用,对数损失
error分类用,分类误差,等于1-准确率
auc分类用,AUC面积
  

②调节样本不平衡的参数scale_pos_weight

控制正负样本比例,表示为负/正样本比例 在样本不平衡问题中使用:scale_pos_weight,默认1

③更多计算资源:n_jobs

nthread和n_jobs都是算法运行所使用的线程,与sklearn中规则一样,输入整数表示使用的线程,输入-1表示使用计 算机全部的计算资源。如果我们的数据量很大,则我们可能需要这个参数来为我们调用更多线程。

④降低学习难度:base_score

base_score是一个比较容易被混淆的参数,它被叫做全局偏差,在分类问题中,它是我们希望关注的分类的先验概 率。通常我们不会使用这个参数,但对于严重的样本不均衡问 题,设置一个正确的base_score取值是很有必要的。

⑤生成树的随机模式:random_state

对于那些本质上是随机的过程,我们有必要控制随机的状态,这样才能重复的展现相同的结果的时候就需要设置我们的random_state为一个固定值。

⑥自动处理缺失值:missing

XGBoost被设计成是能够自动处理缺失值的模型,这个设计的初衷其实是为了让XGBoost能够处理稀疏矩阵。

三、总结

  这里只是简单介绍了 XGBoost的简单用法和一些参数的含义,方便大家入门学习,而XGBoost本身的运用与实践是很广泛的,后期我也会出一些XGBoost实战的案例,分享给大家!最后,如果这篇文章对小伙伴有所帮助,别忘了点赞、关注支持一波哦~大家一起进步!!!

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/422892.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud Alibaba核心组件Nacos/Seata/Sentinel

文章目录 Spring Cloud Alibaba介绍Spring Cloud 微服务体系Spring Cloud Alibaba 定位 注册配置中心--Nacos服务治理架构注册中心原理 Nacos介绍Nacos 的关键特性1.服务注册和发现2.动态配置服务3.实时健康监控4.动态DNS服务5.易于集成: Nacos入门示例服务注册与发…

ED—编辑距离

题目 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符删除一个字符替换一个字符 思路分析 编辑距离问题就是给定两个字符串 s1 和 s2,只能用三种操作…

【kafka-01】kafka安装和基本核心概念

一,kafka安装和基本核心概念 1,kafka的安装和运行 1.1 kafka下载和安装 下载地址,目前下载的版本是 Scala 2.12 - kafka_2.12-3.6.2.tgz (asc, sha512),一定要下载二进制文件,不要下载源码 https://kafka.apache.o…

数据库-基本操作(一)

1、查看数据库的端口号 2、在student数据库下创建一个users表格 3、给一个表格添加数据,并查询该表格 4、查询mysql数据库的错误日志信息 5、测试jmeter与mysql服务器的通信是否正常,使用ping

什么是人力资源管理软件?HR人力软件有哪些功能?

在人力资源管理中,随着科技的迅猛发展和商业环境的日益复杂化,企业对人力资源管理系统(eHR)的需求不断增加。人力资源管理软件,简称eHR,是一种融合了系统学理论方法的管理工具,旨在通过技术手段…

似然函数与先验概率、后验概率的关系

似然函数、先验概率、后验概率这三个概念是贝叶斯统计中的核心概念,它们共同描述了如何根据已有数据更新我们对某个事件或参数的认识。下面用简单的语言解释这三个概念,并描述它们之间的关系。 1. 先验概率(Prior Probability) …

代码随想录27期|Python|Day54|​单调栈|​42. 接雨水|84. 柱状图中最大的矩形

42. 接雨水 根据常识可以归纳出,对于每一列所能够存住的水的高度 Height min(LeftMax, RightMax) - height 也就是,当前列的存水高度 左侧和右侧柱子的最大高度的较小值,减去当前列的柱子高度,所得到的差值。 可以验证第4列&…

随手记:uniapp小程序登录方式和小程序使用验证码登录

小程序登录方式&#xff1a; 方式一&#xff1a;小程序授权登录 通过uni.login获取 临时登录凭证code&#xff0c;向后端换取token。 <u-button type"primary" shape"circle" click"login">登 录</u-button>login() {uni.login({p…

深入探索 Ubuntu:从基础到高级应用

本文深入探讨了 Ubuntu 操作系统&#xff0c;涵盖了其起源与发展、安装与配置、软件管理、系统优化、网络配置、安全防护以及在不同领域的应用等多个方面。 在起源与发展部分&#xff0c;介绍了 Ubuntu 于 2004 年创立的背景以及其版本的演进。安装与配置环节详细阐述了系统安…

【练习10】链表相加

链接&#xff1a;链表相加(二)_牛客题霸_牛客网 (nowcoder.com) 分析&#xff1a; 算法原理是逆序高精度算法 逆序的原因是为了实现从低位&#xff08;个位&#xff09;开始相加。 public class Solution {//逆序链表public ListNode reverse(ListNode head){ListNode newHead …

动态规划的解题思想

1. 从斐波那契数列说起 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c; &#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0, F(2) 1 F&#xff08;n&#xff09; F&…

机器学习--卷积神经网络(包括python实现)

卷积神经网络 1. 计算方法 &#xff08;1&#xff09;输入和输出channel 1时 首先我们要知道channel是什么意思&#xff0c;顾名思义channel就是“通道”的意思qwq。我们来举个例子&#xff0c;在计算机视觉中&#xff0c;如果一张图片是黑白的&#xff0c;那么每个像素点都…

Linux中使用Docker构建Nginx容器完整教程

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f427;Linux基础知识(初学)&#xff1a;点击&#xff01; &#x1f427;Linux高级管理防护和群集专栏&#xff1a;点击&#xff01; &#x1f510;Linux中firewalld防火墙&#xff1a;点击&#xff01; ⏰️创作…

JD18年秋招笔试疯狂数列python解答

问题如下&#xff1a; 链接&#xff1a;疯狂序列_京东笔试题_牛客网 [编程题]疯狂序列 热度指数&#xff1a;149 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32M&#xff0c;其他语言64M 东东从京京那里了解到有一个无限长的数字序列: 1…

uniapp 做一个查看图片的组件,图片可缩放移动

因为是手机端&#xff0c;所以需要触摸可移动&#xff0c;双指放大缩小。 首先在components里建个组件 查看图片使用 uni-popup 弹窗 要注意 transform的translate和scale属性在同一标签上不会一起生效 移动就根据触摸效果进行偏移图片 缩放就根据双指距离的变大变小进行缩…

DFS算法专题(二)——穷举vs暴搜vs深搜vs回溯vs剪枝【OF决策树】

目录 1、决策树 2、算法实战应用【leetcode】 2.1 题一&#xff1a;全排列 2.2.1 算法原理 2.2.2 算法代码 2.2 题二&#xff1a;子集 2.2.1 算法原理【策略一】 2.2.2 算法代码【策略一】 2.2.3 算法原理【策略二&#xff0c;推荐】 2.2.4 算法代码【策略二&#x…

浅谈基于负荷时空均衡和弹性响应的电动汽车快充电价定价策略

摘要&#xff1a;为了引导电动汽车有序充电&#xff0c;提出了一种考虑负荷时空均衡和弹性响应的电动汽车快充电价定价策略。引入交通流理论描述交通路网&#xff0c;建立电动汽车快充负荷时空分布模型&#xff1b;考虑配电网调度和电动汽车快充负荷的弹性需求&#xff0c;构建…

React Native 0.76,New Architecture 将成为默认模式,全新的 RN 来了

关于 React Native 的 New Architecture 概念&#xff0c;最早应该是从 2018 年 RN 团队决定重写大量底层实现开始&#xff0c;因为那时候 React Native 面临各种结构问题和性能瓶颈&#xff0c;最终迫使 RN 团队开始进行重构。 而从 React Native 0.68 开始&#xff0c;New A…

轻松搞定Arduino开发环境,像玩积木一样简单!

朋友们,有没有人和我一样,曾经对Arduino望而却步?说到“开发环境”这几个字,感觉脑子就要爆炸了,光是想象安装各种软件、调试环境就能把人吓跑。相信我,我也曾有过这样的感觉。但是,当我真正开始玩Arduino后,我发现一切都不像想象中那么复杂!其实,搭建Arduino开发环境…

光耦合器的工作原理和故障诊断

光耦合器&#xff0c;也称为光隔离器&#xff0c;是现代电子设备中必不可少的组件&#xff0c;尤其是在确保系统不同部分之间的电气隔离方面。它们通过使用光传输信号来防止高压或不需要的信号影响敏感组件。在本文中&#xff0c;我们将讨论光耦合器的工作原理、故障诊断和识别…