3.1.0 (2025 年 9 月 22 日)
我们很高兴分享 XGBoost 最新的 3.1.0 更新。
分类重新编码器
此版本通过引入重新编码器对分类数据支持进行了重大更新。此重新编码器将类别保存在训练好的模型中,并在推理过程中对数据进行重新编码,以保持分类编码的一致性。除了整数等基本类型,它还支持基于字符串的类别。此实现适用于所有支持的 Python DataFrame 实现。(#11609、#11665、#11605、#11628、#11598、#11591、#11568、#11561、#11650、#11621、#11611、#11313、#11311、#11310、#11315、#11303、#11612、#11098、#11347) 更多信息请参阅自动重新编码(数据一致性)。(#11297)
此外,现在支持 Polars 数据帧的分类支持(#11565)。
最后,在此版本中,我们移除了分类特征支持的实验性标签。(#11690)
外部内存
我们继续在 3.1 中进行外部内存支持的工作。在此版本中,XGBoost 具有 CUDA 外部内存的自适应缓存。改进后的缓存可以根据底层硬件和数据大小将数据拆分到 CPU 内存和 GPU 内存之间。(#11556、#11465、#11664、#11594、#11469、#11547、#11339、#11477、#11453、#11446、#11458、#11426、#11566、#11497)
此外,还有一个可选支持(选择加入),用于使用 nvcomp
和 GB200 解压引擎处理稀疏数据(需要 nvcomp 作为插件)(#11451、#11464、#11460、#11512、#11520)。我们改进了外部内存下分位数素描的内存使用(#11641),并优化了训练预测器(#11548)。为了帮助确保训练性能,最新的 XGBoost 具有 NUMA(非统一内存访问)节点检测功能(#11538、#11576),用于检查跨套接字数据访问。我们正在开发额外的工具来增强 NUMA 节点性能。除了功能之外,我们还添加了各种文档改进。(#11412、#11631)
最后,已移除文本文件输入的外部内存支持(#11562)。展望未来,我们将专注于迭代器输入。
多目标/多类别截距
从 3.1 开始,当模型有多个输出时,无论是多目标回归还是多类别分类,基线分数(截距)都被估计并存储为向量。这一改变增强了多输出模型的初始估计,并将成为未来向量叶工作的基础。(#11277、#11651、#11625、#11649、#11630、#11647、#11656、#11663)
特点
移除已弃用功能
此版本移除了一些已弃用的功能,特别是二进制 IO 格式,以及在 2.0 中已弃用的功能。
二进制序列化格式已在 3.1 中移除。该格式已在 1.6 中正式弃用。(#11307、#11553、#11552、#11602)
移除了旧的 GPU 相关参数,包括
use_gpu
(pyspark)、gpu_id
、gpu_hist
和gpu_coord_descent
。这些参数已在 2.0 中弃用。请改用device
参数。(#11395、#11554、#11549、#11543、#11539、#11402)移除已弃用的 C 函数:
XGDMatrixCreateFromCSREx
、XGDMatrixCreateFromCSCEx
。(#11514、#11513)XGBoost 开始对文本输入发出警告。(#11590)
优化
修复
Python 包
R 包
鉴于此版本中已移除大部分已弃用的功能,我们将尝试将最新的 R 包重新发布到 CRAN。
JVM 包
文档
一般文档的变更