公众号:尤而小屋 作者:Peter 编辑:Peter
XGBoost是Extreme Gradient Boosting的缩写,是一个非常流行的开源机器学习库,以其高性能和出色的准确性而闻名。它已广泛应用于各个领域,包括数据科学、金融和在线广告。
最近,XGBoost 发布了备受期待的新版本 XGBoost 2.0,它引入了一系列令人兴奋的功能和增强功能。在这篇博文中,我们将探讨这些新功能,并提供代码示例来展示它们的功能。
原文链接:https://medium.com/@thedatabeast/xgboost-2-0-unleashing-new-features-and-code-examples-ae161bcd74e1
GPU 支持:释放 GPU 的力量
XGBoost 2.0 最重要的进步之一是引入了 GPU 支持。此功能允许用户利用 GPU 的计算能力来加速训练和推理过程。
与 CPU 实现相比,通过利用 GPU,XGBoost 可以处理更大的数据集并实现更快的处理时间。在 XGBoost 中启用 GPU 支持就像指定tree_method
参数一样简单'gpu_hist'
:
import xgboost as xgb
# 启用 GPU 训练
params = { 'tree_method' : 'gpu_hist' }
model = xgb.train(params, dtrain)
近似算法:加速训练
XGBoost 2.0引入了近似树构建算法,在不牺牲模型精度的情况下显着提高了训练速度。近似算法利用一种称为“块坐标下降”的技术来有效地估计树节点的最佳分割。
这种优化使得 XGBoost 能够更高效地处理大型数据集,使其成为处理大数据问题的理想选择。启用近似算法就像将tree_method
参数设置为一样简单'approx'
:
import xgboost as xgb
# 启用近似算法
params = { 'tree_method' : 'approx' }
model = xgb.train( params , dtrain)
改进稀疏数据处理:高效处理稀疏数据
XGBoost 2.0 采用优化来增强稀疏数据的处理,从而缩短训练和推理时间。这种改进对于涉及文本数据、网络分析和推荐系统的任务特别有益,这些任务中稀疏矩阵很常见。下面是如何在 XGBoost 中处理稀疏数据的示例:
代码语言:txt复制import xgboost as xgb
from scipy.sparse import csr_matrix
# 将数据转换为稀疏矩阵
稀疏数据 = csr_matrix(data)
# 用稀疏数据训练 XGBoost 模型
dtrain = xgb.DMatrix(sparse_data, label=labels)
model = xgb.train(params,火车)
增强正则化技术:控制模型复杂性
正则化对于防止过度拟合和提高模型泛化至关重要。XGBoost 2.0 引入了新的正则化技术,包括鼓励模型使用更少特征的“稀疏感知”正则化。
该技术降低了模型复杂性并增强了可解释性,特别是在特征选择至关重要的场景中。以下是在 XGBoost 中应用 L1 正则化的示例:
代码语言:txt复制import xgboost as xgb
# 启用 L1 正则化
params = { 'alpha' : 1 }
model = xgb.train( params , dtrain)
高级功能交互:捕捉复杂关系
XGBoost 2.0 为捕获复杂的特征交互提供了增强的支持。新版本引入了“交互约束”,允许用户定义功能之间交互的约束。此功能对于已知特定功能组合很重要或具有特定关系的任务非常有价值。以下是在 XGBoost 中定义交互约束的示例:
代码语言:txt复制import xgboost as xgb
# 定义交互约束
interaction_constraints = [[ 0 , 1 ], [ 2 , 3 ]]
# 启用交互约束
params = { 'interaction_constraints' : interaction_constraints}
model = xgb.train(params, dtrain)
XGBoost 2.0 的其他令人兴奋的功能
除了上述功能之外,XGBoost 2.0还引入了其他几个强大的功能。虽然我们不会详细介绍每个功能,但以下是功能列表及其主要亮点:
- 加速故障时间的生存分析
- 分类数据处理
- 多个输出
- XGBoost 中的随机森林 (TM)
- Kubernetes 上的分布式 XGBoost
- 带有 XGBoost4J-Spark 的分布式 XGBoost
- 带有 XGBoost4J-Spark-GPU 的分布式 XGBoost
- 带有 Dask 的分布式 XGBoost
- 使用 PySpark 的分布式 XGBoost
- 带有 Ray 的分布式 XGBoost
- XGBoost 外部存储器版本等
更多案例参考官方 XGBoost 文档:https://xgboost.readthedocs.io/en/stable/