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_reportdata = 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.XGBoostobject XGBoostScalaExample {def main(args: Array[String]) {// read trainining data, available at xgboost/demo/dataval trainData =new DMatrix("/path/to/agaricus.txt.train")// define parametersval paramMap = List("eta" -> 0.1,"max_depth" -> 2,"objective" -> "binary:logistic").toMap// number of iterationsval round = 2// train the modelval model = XGBoost.train(trainData, paramMap, round)// run predictionval 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.hqwc.cn/news/447900.html

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

相关文章

【Git】01 Git介绍与安装

文章目录 一、版本控制系统二、Git三、Windows安装Git3.1 下载Git3.2 安装3.3 检查 四、Linux安装Git4.1 YUM安装4.2 源码安装 五、配置Git5.1 配置用户名和邮箱5.2 配置级别5.3 查看配置 六、总结 一、版本控制系统 版本控制系统&#xff0c;Version Control System&#xff…

Unity中AssetBundle的打包和分包策略

在Unity中&#xff0c;AssetBundle的打包策略主要是针对资源的整理和分组&#xff0c;以做到即方便管理&#xff0c;又能有效优化资源的加载和内存使用。具体来看包括以下几种常见的策略&#xff1a; 打包资源的预处理&#xff1a;为了减小AssetBundle的大小和数量&#xff0c;…

C语言数据结构之两道OJ题带你走近环形链表

倘若南风知我意 莫将晚霞落黄昏 &#x1f3a5;烟雨长虹&#xff0c;孤鹜齐飞的个人主页 &#x1f525;个人专栏 &#x1f3a5;前期回顾-单链表 目录 环形链表 题目描述# 思路# 代码测试# 环形链表II 题目描述# 思路# 代码测试# 环形链表 题目链接&#xff1a;环形链表 题目…

基于极大似然法和最小二乘法系统参数辨识matlab仿真,包含GUI界面

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 1.极大似然法系统参数辨识 2. 最小二乘法系统参数辨识 5.完整程序 1.程序功能描述 分别对比基于极大似然法的系统参数辨识以及基于最小二乘法的系统参数辨识&#xff0c;输出起参数辨识收敛…

linux中vim的操作

(码字不易&#xff0c;关注一下吧w~~w) 命令模式&#xff1a; 当我们按下esc键时&#xff0c;我们会进入命令模式&#xff1b;当使用vi打开一个文件时也是进入命令模式。 光标移动&#xff1a; 1 保存退出&#xff1a;ZZ 2 代码格式化&#xff1a;ggG 3 光标移动&#xff…

(学习日记)2024.02.01:引用变量 / 默认实参 / 一元作用域运算符 / 函数重载

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

Linux一键部署telegraf 实现Grafana Linux 图形展示

influxd2前言 influxd2 是 InfluxDB 2.x 版本的后台进程,是一个开源的时序数据库平台,用于存储、查询和可视化时间序列数据。它提供了一个强大的查询语言和 API,可以快速而轻松地处理大量的高性能时序数据。 telegraf 是一个开源的代理程序,它可以收集、处理和传输各种不…

三.Linux权限管控 1-5.Linux的root用户用户和用户组查看权限控制信息chmod命令chown命令

目录 三.Linux权限管控 1.Linux的root用户 root用户&#xff08;超级管理员&#xff09; su和exit命令 sudo命令 为普通用户配置sudo认证 三.Linux权限管控 2.用户和用户组 用户&#xff0c;用户组 用户组管理 用户管理 getent---查看系统中的用户 三.Linux权限管控…

【2024美赛】F题(中英文):减少非法野生动物贸易Problem F: Reducing Illegal Wildlife Trade

【2024美赛】F题&#xff08;中英文&#xff09;&#xff1a;减少非法野生动物贸易Problem F: Reducing Illegal Wildlife Trade 写在最前面2024美赛翻译 —— 跳转链接 中文赛题问题F&#xff1a;减少非法野生动物贸易你的工作应探讨以下子问题&#xff1a;参考文献词汇表 英文…

XGB-2: Boosted Trees(提升树)简介

XGBoost代表“Extreme Gradient Boosting”&#xff0c;其中术语“Gradient Boosting”来源于Friedman的论文《Greedy Function Approximation: A Gradient Boosting Machine》。 梯度提升树已经存在一段时间&#xff0c;关于这个主题有很多资料。本部分将使用监督学习的元素&…

git小白之路

git是最常用的版本控制工具&#xff0c;我对其进行了整理后续补充&#xff0c;这个文档欢迎大家来讨论&#xff0c;当前我的视频梳理&#xff1a; git小白进阶之路_哔哩哔哩_bilibili&#xff0c;非常希望大佬们能够批评指正&#xff0c;并多多交流。 目录 初始配置 配置账号…

【Linux】线程安全——同步和互斥

需要云服务器等云产品来学习Linux的同学可以移步/–>腾讯云<–/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;优惠多多。&#xff08;联系我有折扣哦&#xff09; 文章目录 引入1. Linux线程互斥1.1 互斥的相关概念1.2 互斥量mutex1.3 mutex的使用1.4 mutex的…