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 在 机器学习
888 每月下载量
315KB
7K SLoC
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