现代梯度提升工具包非常复杂,并且使用低级编程语言编写。因此,
Py-boost 是一个基于 Python 的梯度提升库,旨在克服上述问题。
作者:Anton Vakhrushev、Leonid Iosipoi、Sergey Kupriyanov。
简单。Py-boost 是一个简化的梯度提升库,但它支持其他实现中可用的所有主要功能和超参数。
GPU 加速。尽管 Py-boost 是用 Python 编写的,但它只在 GPU 上运行,并使用 CuPy
和 Numba
等 Python GPU 库。
高效推理。从 v0.4 版本开始,Py-Boost 能够在 GPU 上高效地推理树集成。此外,一旦模型在 GPU 上训练完成,就可以通过转换为 treelite 格式并使用内置包装器在仅 CPU 的机器上进行推理(限制 - 模型必须使用默认的 target_splitter='Single'
进行训练)。
兼容 ONNX 从 v0.5 版本开始,Py-Boost 兼容 ONNX 格式,这为 CPU 推理和模型部署提供了更多选择。
易于定制。即使不熟悉 GPU 编程,也可以轻松定制 Py-boost(只需将 np 替换为 cp)。可以定制什么?通过自定义回调几乎可以定制一切。例如:行/列采样策略、训练控制、损失/指标、多输出处理策略、通过自定义回调定制任何内容。
多输出训练。当前最先进的提升工具包对多输出训练 的支持非常有限。即使有这个选项,多类/多标签分类和多任务回归等任务的训练时间也相当缓慢,因为训练复杂度随输出数量线性增加。为了克服现有限制,我们创建了 SketchBoost 算法,使用近似树结构搜索。正如我们在论文中所展示的,这种策略至少不会导致性能下降,而且通常能够提高准确性。
SketchBoost。你可以使用 SketchBoost
类尝试我们的草图策略,或者如果你想自己实现,可以将其作为 multioutput_sketch
参数传递给 GradientBoosting
构造函数。详情请参见 Tutorial_2_Advanced_multioutput。
通过 pip 安装 py-boost 之前,你应该已经安装了 cupy。你可以使用:
pip install -U cupy-cuda110 py-boost
注意:请替换为你的 CUDA 版本!详情请参见此指南。
Py-boost 易于使用,因为它具有类似于 scikit-learn 的接口。使用示例请参见:
更多示例即将推出