XGB-1:XGBoost安装及快速上手

XGBoost是“Extreme Gradient Boosting”的缩写,是一种高效的机器学习算法,用于分类、回归和排序问题。它由陈天奇(Tianqi Chen)在2014年首次提出,并迅速在数据科学竞赛和工业界获得广泛应用。XGBoost基于梯度提升框架,但通过引入一系列优化来提升性能和效率。

XGBoost的主要特点:

  1. 性能高效:XGBoost通过并行处理和核外计算来优化计算速度,同时保持高预测精度。
  2. 灵活性:支持自定义目标函数和评估准则,适用于多种类型的问题。
  3. 鲁棒性:包括处理缺失值的功能,能够处理不完整的数据。
  4. 正则化:通过L1和L2正则化避免过拟合,提高模型的泛化能力。
  5. 剪枝:在树构建过程中进行预剪枝和后剪枝,减少过拟合的风险。
  6. 稀疏意识:在处理稀疏数据时更加高效,减少计算量。

应用场景:

  • 分类问题:如邮件分类(垃圾邮件/非垃圾邮件)、图像识别等。
  • 回归问题:如房价预测、股票价格预测等。
  • 排序问题:如搜索引擎结果排序、推荐系统等。

如何使用XGBoost:

  1. 安装:通过Python的pip安装xgboost库。
  2. 数据准备:准备训练数据和标签。
  3. 模型训练:使用xgboost库中的XGBClassifierXGBRegressor进行模型训练。
  4. 模型评估:使用交叉验证等方法评估模型性能。
  5. 参数调优:通过调整学习率、树的数量和深度等参数来优化模型。

XGBoost因其强大的功能和优异的性能,在众多机器学习算法中脱颖而出,成为解决复杂数据问题的有力工具。

安装指南

XGBoost提供了一些语言绑定的二进制软件包,这些二进制软件包支持在具有NVIDIA GPU的机器上使用GPU算法(设备为cuda:0)。请注意,仅在Linux平台上支持使用多个GPU进行训练。

Python

已经上传了预先构建的二进制软件包到PyPI(Python Package Index)以供每个发布版本使用。支持的平台包括Linux(x86_64、aarch64)、Windows(x86_64)和MacOS(x86_64、Apple Silicon)。

# 需要 Pip 21.3+
pip install xgboost

如果遇到权限错误,可能需要使用 --user 标志运行该命令,或者在虚拟环境中运行。

注意

Windows用户需要安装Visual C++ Redistributable

XGBoost需要Visual C++ Redistributable中的DLL文件才能正常运行,请确保安装它。例外情况:如果您已安装了Visual Studio,则已经可以访问必要的库,因此无需安装Visual C++ Redistributable。

每个平台的二进制软件包的功能:

xRKIC.png

Conda

可以使用Conda包管理器安装XGBoost:

conda install -c conda-forge py-xgboost

Conda应该能够检测到机器上是否存在GPU,并安装XGBoost的正确变体。如果遇到问题,请尝试明确指定变体:

# 仅CPU
conda install -c conda-forge py-xgboost-cpu
# 使用NVIDIA GPU
conda install -c conda-forge py-xgboost-gpu

请访问Miniconda网站获取Conda。

注意

在Windows上不提供py-xgboost-gpu

py-xgboost-gpu目前在Windows上不可用。如果使用Windows,请使用pip安装具有GPU支持的XGBoost

R

从CRAN:

install.packages("xgboost")

注意

在Mac OSX上使用所有CPU核心(线程)

如果使用的是Mac OSX,应该首先安装OpenMP库(libomp),方法是运行

brew install libomp

然后运行 install.packages("xgboost")。没有安装OpenMP,XGBoost将仅使用单个CPU核心,导致训练速度不理想。

还提供了带有GPU支持的实验性预构建二进制文件。使用此二进制文件,将能够在不从源代码构建XGBoost的情况下使用GPU算法。从Releases页面下载二进制软件包。文件名将采用xgboost_r_gpu_[os]_[version].tar.gz 的形式,其中[os]可以是linuxwin64,然后通过运行以下命令安装XGBoost:

# 安装依赖项
R -q -e "install.packages(c('data.table', 'jsonlite'))"
# 安装XGBoost
R CMD INSTALL ./xgboost_r_gpu_linux.tar.gz
JVM
  • XGBoost4j/XGBoost4j-Spark

Maven

<properties>
  ...
  <!-- 在包名中指定 Scala 版本 -->
  <scala.binary.version>2.12</scala.binary.version>
</properties>

<dependencies>
  ...
  <dependency>
      <groupId>ml.dmlc</groupId>
      <artifactId>xgboost4j_${scala.binary.version}</artifactId>
      <version>latest_version_num</version>
  </dependency>
  <dependency>
      <groupId>ml.dmlc</groupId>
      <artifactId>xgboost4j-spark_${scala.binary.version}</artifactId>
      <version>latest_version_num</version>
  </dependency>
</dependencies>

sbt

libraryDependencies ++= Seq(
  "ml.dmlc" %% "xgboost4j" % "latest_version_num",
  "ml.dmlc" %% "xgboost4j-spark" % "latest_version_num"
)
  • XGBoost4j-GPU/XGBoost4j-Spark-GPU

Maven

<properties>
  ...
  <!-- 在包名中指定 Scala 版本 -->
  <scala.binary.version>2.12</scala.binary.version>
</properties>

<dependencies>
  ...
  <dependency>
      <groupId>ml.dmlc</groupId>
      <artifactId>xgboost4j-gpu_${scala.binary.version}</artifactId>
      <version>latest_version_num</version>
  </dependency>
  <dependency>
      <groupId>ml.dmlc</groupId>
      <artifactId>xgboost4j-spark-gpu_${scala.binary.version}</artifactId>
      <version>latest_version_num</version>
  </dependency>
</dependencies>

sbt

libraryDependencies ++= Seq(
  "ml.dmlc" %% "xgboost4j-gpu" % "latest_version_num",
  "ml.dmlc" %% "xgboost4j-spark-gpu" % "latest_version_num"
)

这将从 Maven 中央仓库获取最新的稳定版本。

要启用 GPU 算法(device='cuda'),改用 xgboost4j-gpu_2.12xgboost4j-spark-gpu_2.12 这两个构件(请注意 gpu 后缀)。

注意

不支持 Windows 的 JVM 包

目前,XGBoost4J-Spark 不支持 Windows 平台,因为 Windows 上的分布式训练算法无法正常运行


快速开始

这是一个快速入门教程,其中包含一些片段,让您可以快速尝试在二分类任务的演示数据集上使用 XGBoost。

Python
from xgboost import XGBClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report


data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data['data'], data['target'], test_size=.2)

# create model instance
bst = XGBClassifier(
    n_estimators=2, max_depth=2, learning_rate=1, objective='binary:logistic')

# fit model
bst.fit(X_train, y_train)

# make predictions
preds = bst.predict(X_test)

classification_report(preds, y_test)

xcPSs.png

R
# load data
data(agaricus.train, package='xgboost')
data(agaricus.test, package='xgboost')
train <- agaricus.train
test <- agaricus.test
# fit model
bst <- xgboost(data = train$data, label = train$label, max.depth = 2, eta = 1, nrounds = 2,
               nthread = 2, objective = "binary:logistic")
# predict
pred <- predict(bst, test$data)
Julia
using XGBoost
# read data
train_X, train_Y = readlibsvm("demo/data/agaricus.txt.train", (6513, 126))
test_X, test_Y = readlibsvm("demo/data/agaricus.txt.test", (1611, 126))
# fit model
num_round = 2
bst = xgboost(train_X, num_round, label=train_Y, eta=1, max_depth=2)
# predict
pred = predict(bst, test_X)
Scala
import ml.dmlc.xgboost4j.scala.DMatrix
import ml.dmlc.xgboost4j.scala.XGBoost

object XGBoostScalaExample {
  def main(args: Array[String]) {
    // read trainining data, available at xgboost/demo/data
    val trainData =
      new DMatrix("/path/to/agaricus.txt.train")
    // define parameters
    val paramMap = List(
      "eta" -> 0.1,
      "max_depth" -> 2,
      "objective" -> "binary:logistic").toMap
    // number of iterations
    val round = 2
    // train the model
    val model = XGBoost.train(trainData, paramMap, round)
    // run prediction
    val predTrain = model.predict(trainData)
    // save model to the file.
    model.saveModel("/local/path/to/model")
  }
}

参考

  • Awesome XGBoost
  • awesome-machine-learning
  • https://xgboost.readthedocs.io

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

10个React状态管理库推荐

本文将为您推荐十款实用的React状态管理库&#xff0c;帮助您打造出高效、可维护的前端应用。让我们一起看看这些库的魅力所在&#xff01; 在前端开发中&#xff0c;状态管理是至关重要的一环。React作为一款流行的前端框架&#xff0c;其强大的状态管理功能备受开发者青睐。…

撰写出色的时事政治新闻资讯稿:窍门和技巧

撰写出色的时事政治新闻资讯稿&#xff1a;窍门和技巧 文章大纲写新闻/资讯&#xff08;结构部分&#xff09;较为复杂的标题&#xff08;额外扩展&#xff09;相关案例去除引题去除引题和副题注意事项讲一下什么叫导语。叙述式结论式描写式提问式摘要式 主体一要新二要“小”三…

当人工智能遇上教育,会擦出怎样的火花?

在这个时代&#xff0c;科技的风暴正以前所未有的速度席卷全球。其中&#xff0c;人工智能&#xff0c;这个被誉为21世纪的“科技之星”&#xff0c;正悄然改变着我们的生活。但是&#xff0c;当人工智能遇上传统教育领域时&#xff0c;你猜会发生什么&#xff1f; 有人说&…

宠物商业数据分析

一、宠物热销品类分布 欧睿国际更有一份数据表明&#xff0c;宠物食品在所有“它经济”中占比是最大&#xff0c;仅仅是猫狗食品就达到了59.1%&#xff0c;增速也远高于其他宠物用品。 2018年&#xff0c;中国就已经有超7700万独居成年人口&#xff0c;国内养宠主力军中90后占…

Shopee越南本土店好做吗?越南本土Shopee店家如何收款?站斧浏览器

Shopee越南本土店好做吗&#xff1f; 对于越南本土的Shopee店家来说&#xff0c;他们可能会关心Shopee平台的运营情况和是否适合他们开展电商业务。那么&#xff0c;Shopee好做吗&#xff1f;以下是一些相关的讨论点。 用户基础和市场规模 作为东南亚地区最大的电商平台之一…

10 排序的概念

目录 1.排序的概念和运用 2.排序的分类 1. 排序的概念及运用 1.1 排序的概念 排序: 所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在…

Transformer 自然语言处理(四)

原文&#xff1a;Natural Language Processing with Transformers 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十章&#xff1a;从头开始训练变换器 在本书的开头段落中&#xff0c;我们提到了一个名为 GitHub Copilot 的复杂应用&#xff0c;它使用类似 GPT 的…

护林防火人人有责!无人机+智能网关V4烟火检测算法助力森林防火

一年一度的春节即将来临&#xff0c;人们在欢度节日的同时&#xff0c;一种危险也悄然来临。随着2008年《森林防火条例》的颁发&#xff0c;护林防火也逐渐被人们了解。特别是在春节时期&#xff0c;山区山高林密&#xff0c;且冬季树木干燥&#xff0c;一旦有人在燃放烟花爆竹…

vue中的async和await

目录 一. 错误处理和重试逻辑 二. 并发请求 三. 条件逻辑 四. 异步初始化 五. 使用 Vuex 和异步操作 在 Vue.js 中&#xff0c;async 和 await 的高级用法通常涉及更复杂的异步逻辑处理&#xff0c;包括错误处理、条件逻辑、并发请求等。以下是一些高级用法的示例&#xf…

MySQL-运维-主从复制

一、概述 二、原理 三、搭建 1、服务器准备 2、主库配置 &#xff08;1&#xff09;、修改配置文件/etc/my.cnf &#xff08;2&#xff09;、重启MySQL服务器 &#xff08;3&#xff09;、登录mysql&#xff0c;创建远程链接的账号&#xff0c;并授予主从复制权限 &#xff0…

微调实操一: 增量预训练(Pretraining)

1、前言 《微调入门篇:大模型微调的理论学习》我们对大模型微调理论有了基本了解,这篇结合我们现实中常见的场景,进行大模型微调实操部分的了解和学习,之前我有写过类似的文章《实践篇:大模型微调增量预训练实践(二)》利用的MedicalGPT的源码在colab进行操作, 由于MedicalGPT代…

【JS】基于React的Next.js环境配置与示例

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍基于React的Next.js环境配置与示例。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下…

小迪安全24WEB 攻防-通用漏洞SQL 注入MYSQL 跨库ACCESS 偏移

#知识点&#xff1a; 1、脚本代码与数据库前置知识 2、Access 数据库注入-简易&偏移 3、MYSQL 数据库注入-简易&权限跨库 #前置知识&#xff1a; -SQL 注入漏洞产生原理分析 -SQL 注入漏洞危害利用分析 -脚本代码与数据库操作流程 -数据库名&#xff0c…

D3842——三极管驱动,专为脱线和Dc-Dc开关电源应用设计的保护电路芯片,具有 DIP8、 SOP8两种封装形式

B3842/43/44是专为脱线和Dc-Dc开关电源应用设计的恒频电流型Pwd控制器内部包含温度补偿精密基准、供精密占空比调节用的可调振荡器、高增益混放大器、电流传感比较器和适合作功率MOST驱动用的大电流推挽输出颇以及单周期徊滞式限流欠压锁定、死区可调、单脉冲计数拴锁等保护电路…

MySQL原理(三)锁定机制(2)表锁行锁与页锁

前面提到&#xff0c;mysql锁按照操作颗粒分类&#xff0c;一般认为有表级锁、行级锁、页面锁三种。其实还有一种特殊的全局锁。 锁场景问题全局锁全库逻辑备份加了全局锁之后&#xff0c;整个数据库都是【只读状态】&#xff0c;如果数据库里有很多数据&#xff0c;备份就会花…

基于springboot校园二手书交易管理系统源码和论文

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括乐校园二手书交易管理系统的网络应用&#xff0c;在外国二手书交易管理系统已经是很普遍的方式&#xff0c;不过国内的管理系统可能还处于起步阶段。乐校园二手书交易管理系统…

Python 生成图片验证码

图片验证码&#xff08;CAPTCHA&#xff09;是一种区分用户是计算机还是人的公共全自动程序。这种验证码通常以图片的形式出现&#xff0c;其中包含一些扭曲的字符或对象&#xff0c;用户需要识别这些字符或对象并输入正确的答案以通过验证。 通常情况下&#xff0c;图片验证码…

k8s中调整Pod数量限制的方法

一、介绍 Kubernetes节点每个默认允许最多创建110个pod&#xff0c;有时可能由于主机配置扩容的问题&#xff0c;从而需要修改节点pod运行数量的限制。 即&#xff1a;需要调整Node节点的最大可运行Pod数量。 一般来说&#xff0c;只需要在kubelet启动命令中增加–max-pods参数…

伯克利DeepMind联合研究,RaLMSpec让检索增强LLM速度提升2-7倍!

引言&#xff1a;知识密集型NLP任务中的挑战与RaLM的潜力 在知识密集型自然语言处理&#xff08;NLP&#xff09;任务中&#xff0c;传统的大语言模型面临着将海量知识编码进全参数化模型的巨大挑战。这不仅在训练和部署阶段需要大量的努力&#xff0c;而且在模型需要适应新数…

五款好用的在线去水印工具

我们都知道今年是AI大爆发的一年。在日常生活中&#xff0c;你是否经常在拍照时遇到照片中出现一些不必要的路人或其他元素的情况&#xff1f;通常&#xff0c;我们会使用PS软件或其他APP来处理这些问题。但是&#xff0c;对于一些不熟悉PS的朋友来说&#xff0c;这可能会是一种…
最新文章