Perpetual
一种无需超参数优化的自我泛化梯度提升机
PerpetualBooster 是一种无需超参数优化的梯度提升机(GBM)算法,与其他 GBM 算法不同。类似于 AutoML 库,它有一个 budget
参数。增加 budget
参数可以提高算法的预测能力,并在未见数据上获得更好的结果。从小预算开始(例如 1.0),当您对特征有信心时再增加(例如 2.0)。如果进一步增加 budget
没有看到任何改进,这意味着您已经从数据中提取出最大的预测能力。
基准测试
超参数优化通常需要普通 GBM 算法进行 100 次迭代。PerpetualBooster 在单次运行中就能达到相同的准确度。因此,在不同的 budget
水平和不同的数据集上,它在相同准确度下实现了约 100 倍的速度提升。根据数据集的不同,速度提升可能略低于或显著高于 100 倍。
下表总结了加利福尼亚房价数据集(回归)的结果:
Perpetual budget | LightGBM n_estimators | Perpetual mse | LightGBM mse | Perpetual cpu 时间 | LightGBM cpu 时间 | 速度提升 |
---|---|---|---|---|---|---|
1.0 | 100 | 0.192 | 0.192 | 7.6 | 978 | 129x |
1.5 | 300 | 0.188 | 0.188 | 21.8 | 3066 | 141x |
2.1 | 1000 | 0.185 | 0.186 | 86.0 | 8720 | 101x |
下表总结了覆盖类型数据集(分类)的结果:
Perpetual budget | LightGBM n_estimators | Perpetual 对数损失 | LightGBM 对数损失 | Perpetual cpu 时间 | LightGBM cpu 时间 | 速度提升 |
---|---|---|---|---|---|---|
1.0 | 100 | 0.089 | 0.084 | 1653 | 124958 | 76x |
您可以使用 examples 文件夹中的脚本重现这些结果。
使用方法
您可以像下面的例子那样使用该算法。请查看 Rust 和 Python 的示例文件夹。
from perpetual import PerpetualBooster
model = PerpetualBooster(objective="SquaredLoss")
model.fit(X, y, budget=1.0)
文档
Python API 的文档可以在这里找到,Rust API 的文档在这里。
安装
可以直接从 pypi 安装该包。
pip install perpetual
要在 Rust 项目中使用,请在 Cargo.toml 文件中添加以下内容,以从 crates.io 获取包。
perpetual = "0.3.8"
论文
PerpetualBooster 通过泛化算法防止过拟合。正在撰写的论文将解释该算法的工作原理。请查看我们的博客文章,了解该算法的高级介绍。