#机器学习 #AI

perpetual

一种不需要超参数优化的自泛化梯度提升机

15个不稳定版本 (3个破坏性版本)

0.3.8 2024年8月1日
0.3.7 2024年8月1日
0.2.0 2024年7月17日
0.1.0 2024年6月14日
0.0.5 2024年6月8日

#89机器学习

Download history 386/week @ 2024-06-03 127/week @ 2024-06-10 18/week @ 2024-06-17 65/week @ 2024-07-01 110/week @ 2024-07-15 3/week @ 2024-07-22 726/week @ 2024-07-29

888 每月下载量

自定义许可证

315KB
7K SLoC

Python Versions PyPI Version Crates.io Version Discord

Perpetual

一种不需要超参数优化的自泛化梯度提升机

PerpetualBooster是一种梯度提升机(GBM)算法,与其他GBM算法不同,它不需要超参数优化。类似于AutoML库,它有一个budget参数。增加budget参数会增加算法的预测能力,并在未见数据上给出更好的结果。从一个小的预算(例如1.0)开始,一旦你对特征有信心,就增加它(例如2.0)。如果你进一步增加budget没有看到任何改进,这意味着你已从你的数据中提取了最大的预测能力。

基准测试

超参数优化通常需要纯GBM算法100次迭代。PerpetualBooster在单次运行中就能达到相同的精度。因此,它在不同的budget级别和不同的数据集上,以相同的精度实现了大约100倍的速度提升。根据数据集的不同,速度提升可能略低于100倍,也可能显著高于100倍。

以下表格总结了针对加州住房数据集(回归)的结果

Perpetual预算 LightGBM n_estimators Perpetual mse LightGBM mse Perpetual cpu时间 LightGBM cpu时间 速度提升
1.0 100 0.192 0.192 7.6 978 129倍
1.5 300 0.188 0.188 21.8 3066 141倍
2.1 1000 0.185 0.186 86.0 8720 101倍

以下表格总结了针对覆盖类型数据集(分类)的结果

Perpetual预算 LightGBM n_estimators Perpetual log loss LightGBM log loss Perpetual cpu时间 LightGBM cpu时间 速度提升
1.0 100 0.089 0.084 1653 124958 76倍

您可以使用示例文件夹中的脚本来重现这些结果。

用法

您可以使用此算法,如下例所示。检查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使用泛化算法来防止过拟合。该论文正在完善,以解释算法的工作原理。请查看我们的博客文章,了解算法的高级介绍。

依赖项

~3.5-5MB
~89K SLoC