xgboost优化_什么是xgboost以及如何对其进行优化

2023-11-02

xgboost优化

介绍 (Introduction)

Like many data scientists, XGBoost is now part of my toolkit. This algorithm is among the most popular in the world of data science (real-world or competition). Its multitasking aspect allows it to be used in regression or classification projects. It can be used on tabular, structured, and unstructured data.

像许多数据科学家一样,XGBoost现在已成为我工具包的一部分。 该算法是数据科学领域(实际或竞争)中最受欢迎的算法。 它的多任务处理功能使其可以用于回归或分类项目。 它可以用于表格,结构化和非结构化数据。

A notebook containing the code is available on GitHub. The notebook is intended to be used in the case of classification of documents (text).

包含代码的笔记本可以在GitHub上找到。 笔记本打算用于文档(文本)分类的情况。

XGBoost (XGBoost)

XGBoost or eXtreme Gradient Boosting is a based-tree algorithm (Chen and Guestrin, 2016[2]). XGBoost is part of the tree family (Decision tree, Random Forest, bagging, boosting, gradient boosting).

XGBoost或eXtreme Gradient Boosting是一种基于树的算法(Chen和Guestrin,2016 [2])。 XGBoost是树家族的一部分(决策树,随机森林,装袋,增强,梯度增强)。

Boosting is an ensemble method with the primary objective of reducing bias and variance. The goal is to create weak trees sequentially so that each new tree (or learner) focuses on the weakness (misclassified data) of the previous one. After a weak learner is added, the data weights are readjusted, known as “re-weighting”. The whole forming a strong model after convergence due to the auto-correction after every new learner added.

增强是一种合奏方法,其主要目的是减少偏差和方差。 目的是顺序创建弱树,以便每个新树(或学习者)都专注于前一棵树的弱点(分类错误的数据)。 添加了弱学习者后,数据权重将重新调整,称为“重新加权”。 每个新学习者添加后,由于自动校正,收敛后整体形成了一个强大的模型。

The strength of XGBoost is parallelism and hardware optimization. The data is stored in in-memory, called a block, and stored in the compressed column [CSC] format. The algorithm can perform tree pruning in order to remove branches with a low probability. The loss function of the model has a term to penalize the complexity of the model with regularization to smooth the learning process (decrease the possibility of overfitting).

XGBoost的优势在于并行性和硬件优化。 数据存储在内存中(称为块),并以压缩列[CSC]格式存储。 该算法可以执行树修剪以便以低概率除去分支。 模型的损失函数具有用正则化来惩罚模型的复杂性以简化学习过程(减少过度拟合的可能性)的术语。

The model performs well even with missing values or lots of zero values with sparsity awareness. XGBoost uses an algorithm called “weighted quantile sketch algorithm”, this allows the algorithm to focus on data that are misclassified. The goal of each new learner is to learn how to classify the wrong data after each iteration. The method allows you to sort the data by quantiles in order to find the right splitting point. It’s the goal of the ϵ parameter which is the value of split (ϵ=0.1; quantiles=[10%, 20%,…, 90%]).

即使缺少值或带有零稀疏意识的大量零值,该模型也能很好地执行。 XGBoost使用一种称为“加权分位数素描算法”的算法,该算法可使该算法专注于错误分类的数据。 每个新学习者的目标是学习每次迭代后如何对错误数据进行分类。 该方法使您可以按分位数对数据进行排序,以找到正确的分割点。 ϵ参数的目标是split的值(ϵ = 0.1;分位数= [10%,20%,…,90%])。

The number of iteration for the boosting process is automatically determined by the algorithm with an integrated cross-validation method.

该算法使用集成的交叉验证方法自动确定增强过程的迭代次数。

The authors provide a table with a comparison of different tree algorithms:

作者提供了一个表格,其中比较了不同的树算法:

Chen and Guestin, 2016. p.7, Table 1.
Chen and Guestin,2016.第7页,表1。

最佳化 (Optimizations)

XGBoost has hyperparameters (parameters that are not learned by the estimator) that must be determined with parameter optimization. The process is simple, each parameter to be estimated is represented by a list of values, each combination is then tested by the model whose metrics are compared to deduce the best combination. The search for parameters needs to be guided with metrics by cross-validation. Don’t be afraid, sklearn has two functions to do that for you: RandomizedSearchCV and GridSearchCV.

XGBoost具有必须通过参数优化确定的超参数(估计器无法学习的参数)。 该过程很简单,每个要估计的参数都由一列值表示,然后由模型测试每个组合,将其度量进行比较以得出最佳组合。 参数搜索需要通过交叉验证以度量为指导。 不用担心, sklearn有两个功能可以为您做到这一点: RandomizedSearchCVGridSearchCV

Grid search

网格搜索

Grid search is a tuning technique that attempts to calculate the optimal values ​​for hyperparameters. It’s an exhaustive searching through a manually specified subset of the hyperparameter space of the algorithm.

网格搜索是一种调整技术,试图为超参数计算最佳值。 这是对算法超参数空间的手动指定子集的详尽搜索。

Random search

随机搜寻

This second method is considered more powerful (Bergstra and Bengio, 2012)[1] because the parameters are chosen randomly. Random search can be used in continuous and mixed spaces and is very efficient when only a small number of hyperparameters affects the final performance.

由于参数是随机选择的因此第二种方法被认为更强大( Bergstra和Bengio,2012) [1]。 随机搜索可用于连续空间和混合空间,当只有少量超参数影响最终性能时,随机搜索非常有效。

How to use these methods?

如何使用这些方法?

笔记本 (Notebook)

Random search

随机搜寻

Let’s begin with a random search. The code below shows how to the RandomizedSearchCV(). The hyperparameters to be estimated are stored in a dictionary. XGBoost can take into account other hyperparameters during the training like early stopping and validation set. You can configure them with another dictionary passed during the fit() method.

让我们从随机搜索开始。 下面的代码显示了如何对RandomizedSearchCV() 。 要估计的超参数存储在字典中。 XGBoost可以在训练过程中考虑其他超参数,例如提前停止和验证集。 您可以使用在fit()方法期间传递的另一个字典来配置它们。

In the next code, I use the best parameters obtained with the random search (contained in the variable best_params_)to initialize the dictionary of the grid search.

在下一个代码中,我将使用通过随机搜索获得的最佳参数(包含在变量best_params_)来初始化网格搜索的字典。

Grid search

网格搜索

In the following code, you will find the configuration for the grid search. As previously shown, the cross-validation is fixed at 3 folds.

在以下代码中您将找到网格搜索的配置。 如前所示,交叉验证固定为3倍。

结论 (Conclusion)

You reach the end of this (small) tutorial on the hyperparameters optimization for XGBoost. But these methods can be exploited with every machine learning algorithm. Keep in mind that these optimization methods are expensive in terms of computation (the first code above generates 3000 runs).

您将到达有关XGBoost的超参数优化的本(小型)教程的结尾。 但是,每种机器学习算法都可以利用这些方法。 请记住,这些优化方法在计算方面很昂贵(上面的第一个代码生成3000次运行)。

You are now ready to use it in your work or competitions. Enjoy!

您现在可以在工作或比赛中使用它了。 请享用!

翻译自: https://towardsdatascience.com/what-is-xgboost-and-how-to-optimize-it-d3c24e0e41b4

xgboost优化

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xgboost优化_什么是xgboost以及如何对其进行优化 的相关文章

  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • 使用 SQLITE 按最近的纬度和经度坐标排序

    我必须获得一个 SQLite SQL 语句 以便在给定初始位置的情况下按最近的纬度和经度坐标进行排序 这是我在 sqlite 数据库中的表的例句 SELECT id name lat lng FROM items EXAMPLE RESUL
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • 欧洲中部时间 14 日 3 月 30 日星期五 00:00:00 至 日/月/年

    我尝试解析格式日期Fri Mar 30 00 00 00 CET 14至 日 月 年 这是我的代码 SimpleDateFormat formatter new SimpleDateFormat dd MM yyyy System out
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • Struts 2 + Sitemesh 3 集成 - FreemarkerDecoratorServlet 中的 NPE

    我将 Struts 2 版本 2 3 14 3 与 Sitemesh 3 版本 3 0 alpha 2 一起使用 并且在某些情况下遇到 NullPointerException 首先 这是我的 web xml 中的 struts2 site
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • 如何在JSTL中调​​用java方法? [复制]

    这个问题在这里已经有答案了 这可能是重复的问题 我只想调用不是 getter 或 setter 方法的方法例如 xyz 类的 makeCall someObj stringvalue Java类 Class XYZ public Strin
  • Netty:阻止调用以获取连接的服务器通道?

    呼吁ServerBootstrap bind 返回一个Channel但这不是在Connected状态 因此不能用于写入客户端 Netty 文档中的所有示例都显示写入Channel从它的ChannelHandler的事件如channelCon
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • Eclipse 中 Spring MVC 模型对象的 (jsp /jstl) 视图中的代码辅助

    在 Spring MVC 中 当将对象放置在视图模型中时 如下所示 public String getUser Model model fetch user model addAttribute user user return viewN
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • 如何从 Maven 存储库引用本机 DLL?

    如果 JAR 附带 Maven 存储库中的本机 DLL 我需要在 pom xml 中放入什么才能将该 DLL 放入打包中 更具体地举个例子Jacob http search maven org artifactdetails 7Cnet s

随机推荐

  • Premiere Pro 2022 for Mac(pr2022)中文版

    Mac版Premiere Pro 2022更新了 最新版的pr2022不仅可以帮助用户对各种视频进行剪辑 旋转 分割 合并 字幕添加 背景音乐等基础的处理 还能帮助用户进行视频颜色校正 颜色分级 稳定镜头 调整层 更改片段的持续时间和速度
  • hover调试小技巧(无需修改代码)

    某块内容是hover后才能显示的 但此时我们想要调试hover态的时候 通常的办法是以下几种 改代码 修改代码让它默认处于hover态 但是这样麻烦不说 还只应用于本地环境 每次改代码都需要进行热更新 用Chrome开发工具让DOM处于ho
  • cache write back

    1 问题阐述 在ITE的SDK上编译 选择了CPU write back cache enable CPU WB 之后 显示画面总是出现有错乱 通过设置断点 发现当停在解析的数据后 在运行就不会出现错乱现象 问了大神才知道 只是cache没
  • qt开发的程序 为何一个主窗口关闭了,程序不退出,而是到等到所有窗口关闭了,才退出呢?

    这种行为是由Qt框架中的事件循环 Event Loop 机制引起的 Qt应用程序在执行时 会进入一个事件循环 该循环负责处理用户输入 事件和信号 并相应地调用相应的槽函数或处理程序 当你关闭一个Qt应用程序的主窗口时 主窗口会发出一个关闭事
  • 二进制模2除法(CRC校验)

    二进制模2除法与二进制除法不同 模2运算 加法不进位 减法不借位 二进制除法 带借位的二进制除法 根据余数减除数够减与否 确定商1还是商0 若够减则商1 否则商0 二进制模2除法 采用模2减法 不带借位的二进制减法 因此考虑余数够减除数与否
  • 制作论文中双Y轴散点图

    import pandas as pd import matplotlib pyplot as plt from matplotlib dates import AutoDateLocator DateFormatter from date
  • Unity开发优化----删除多余的MeshCollider和Animation组件

    手游项目做碰撞的时候 有关一切物理的东西Unity对手机支持的并不好 多余的MeshCollider 和Animation 空的组件 这俩东西很占效率的 比如下图这样的组件 还有场景的材质最好用Mobile Diffuse 它会比Diffu
  • SQL注入联合注入

    SQL注入定义 SQL是操作数据库数据的结构化查询语言 网页的应用数据和后台数据库中的数据进行交互时会采用SQL SQL注入是指将Web页面的原URL 表单域或数据包输入的参数 修改拼接成SQL语句 传递给Web服务器 进而传给数据库服务器
  • fopen与fopen_s的区别

    在定义FILE fp 之后 fopen的用法是 fp fopen filename w 而对于fopen s来说 还得定义另外一个变量errno t err 然后err fopen s fp filename w 返回值的话 对于fopen
  • 中国移动智能家庭网关(类型二)默认账号和密码

    超级账号 CMCCAdmin 超级密码 aDm8H MdA 超级用户名 telecomadmin 超级密码 nE7jA 5m 用户名 telecomadmin 密码 admintelecom 超级用户名 fiberhomehg2 0 超级密
  • Win10更新后开机变得很慢怎么办?Win10更新后开机变得很慢解决方法

    Win10更新后开机变得很慢怎么办 尽管Win10提供了许多强大的功能和改进 但有些用户在系统升级后可能会遇到开机变慢的问题 让用户们感到困扰 因为开机速度直接关系到使用计算机的效率和便捷性 以下小编将给用户们介绍Win10更新后开机变得很
  • Ancona虚拟环境创建失败

    anaconda虚拟环境创建失败 报错信息如最下 参考了这篇解决方法 先输入conda clean i 再创建虚拟环境就成功了 conda clean i Solving environment failed gt gt gt gt gt
  • 七位高僧大德的临终开示,非大福报者不得见

    http www xuefo net nr article47 465546 html 一 印光大师 印光大师临终时当晚对身边的弟子说 净土法门 别无奇特 只要恳切至诚 没有不蒙佛接引 带业往生 此后精神逐渐疲惫 体温降低 夜里一时半 大师
  • 仿函数(functors)

    functor 仿函数 或者称之为function object 函数对象 是STL的四大组件之一 什么是仿函数呢 一个函数对象是封装在类中 从而看起来更像是一个对象 这个类只有一个成员函数 即重载了 括号 的运算符 它没有任何数据 该类被
  • 工频干扰频谱测量_经验分享

    正文 2219 字 丨 7 分钟阅读 导读 本文的内容是关于转动设备常见振动故障频谱特征及案例分析 非常实用的经验总结 希望对你的工作和学习有所帮助 一 不平衡 转子不平衡是由于转子部件质量偏心或转子部件出现缺损造成的故障 它是旋转机械最常
  • WinCE系统下基于DirectShow的摄像头应用编程

    大家可以对比我的另一篇文章学习 XP下基于DirectShow的摄像头采集 转载自 http blog csdn net northcan article details 7268745 在WinCE设备上使用摄像头时 一般都是向厂家索要驱
  • CentOS离线安装PostgreSQL12.4及PostGIS30_12

    PostgreSQL12 4及PostGIS3 0安装 一 安装PostgreSQL12 4 1 下载rpm安装包 用rpm ivh命令依次安装 2 查看安装信息 3 初始化数据库 4 配置开机启动 5 修改密码 6 查看数据存储路 7 查
  • mysql如何快速生成百万条测试数据

    想要在mysql中快速生成百万条测试数据如果使用SQL批量插入显然工作量会很大 可以利用内存表插入数据快的特点 再调用存储过程往内存表插入数据 从内存表中查询数据插入到普通表的思路来解决问题 1 创建内存表 CREATE TABLE vot
  • 2023金九银十软件测试面试题(800道)

    今年你的目标是拿下大厂offer 还是多少万年薪 其实这些都离不开日积月累的过程 为此我特意整理出一份 超详细笔记 面试题 它几乎涵盖了所有的测试开发技术栈 非常珍贵 人手一份 肝完进大厂 妥妥的 由于细节内容实在太多啦 所以只把部分知识点
  • xgboost优化_什么是xgboost以及如何对其进行优化

    xgboost优化 介绍 Introduction Like many data scientists XGBoost is now part of my toolkit This algorithm is among the most p