A self-generalizing gradient boosting machine which doesn't need hyperparameter optimization
Project description
Perpetual
PerpetualBooster is a gradient boosting machine (GBM) algorithm which doesn't need hyperparameter optimization unlike other GBM algorithms. Similar to AutoML libraries, it has a budget
parameter. Increasing the budget
parameter increases the predictive power of the algorithm and gives better results on unseen data. Start with a small budget (e.g. 1.0) and increase it (e.g. 2.0) once you are confident with your features. If you don't see any improvement with further increasing the budget
, it means that you are already extracting the most predictive power out of your data.
Benchmark
Hyperparameter optimization usually takes 100 iterations with plain GBM algorithms. PerpetualBooster achieves the same accuracy in a single run. Thus, it achieves up to 100x speed-up at the same accuracy with different budget
levels and with different datasets.
The following table summarizes the results for the California Housing dataset (regression):
Perpetual budget | LightGBM n_estimators | Perpetual mse | LightGBM mse | Speed-up wall time | Speed-up cpu time |
---|---|---|---|---|---|
1.0 | 100 | 0.192 | 0.192 | 54x | 56x |
1.5 | 300 | 0.188 | 0.188 | 59x | 58x |
2.1 | 1000 | 0.185 | 0.186 | 42x | 41x |
The following table summarizes the results for the Cover Types dataset (classification):
Perpetual budget | LightGBM n_estimators | Perpetual log loss | LightGBM log loss | Speed-up wall time | Speed-up cpu time |
---|---|---|---|---|---|
0.9 | 100 | 0.091 | 0.084 | 72x | 78x |
You can reproduce the results using the scripts in the examples folder.
Usage
You can use the algorithm like in the example below. Check examples folders for both Rust and Python.
from perpetual import PerpetualBooster
model = PerpetualBooster(objective="SquaredLoss")
model.fit(X, y, budget=1.0)
Documentation
Documentation for the Python API can be found here and for the Rust API here.
Installation
The package can be installed directly from pypi.
pip install perpetual
Using conda-forge:
conda install conda-forge::perpetual
To use in a Rust project, add the following to your Cargo.toml file to get the package from crates.io.
perpetual = "0.7.3"
Contribution
Contributions are welcome. Check CONTRIBUTING.md for the guideline.
Paper
PerpetualBooster prevents overfitting with a generalization algorithm. The paper is work-in-progress to explain how the algorithm works. Check our blog post for a high level introduction to the algorithm.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file perpetual-0.7.3.tar.gz
.
File metadata
- Download URL: perpetual-0.7.3.tar.gz
- Upload date:
- Size: 147.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c1285d4b8f3511bb0511190a5f3d5dc0fa728dd95828084816adc5b61f440c20 |
|
MD5 | 6f151d916ff47283f4c64eb7ecc26447 |
|
BLAKE2b-256 | 1efacbdc312558d90aec3b9b536675f548e997633385ef72a772389a3b2ee048 |
Provenance
The following attestation bundles were made for perpetual-0.7.3.tar.gz
:
Publisher:
CI.yml
on perpetual-ml/perpetual
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
perpetual-0.7.3.tar.gz
- Subject digest:
c1285d4b8f3511bb0511190a5f3d5dc0fa728dd95828084816adc5b61f440c20
- Sigstore transparency entry: 149135091
- Sigstore integration time:
- Predicate type:
File details
Details for the file perpetual-0.7.3-cp312-none-win_amd64.whl
.
File metadata
- Download URL: perpetual-0.7.3-cp312-none-win_amd64.whl
- Upload date:
- Size: 622.6 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7fa4847908ad7234eabb2ac997c0bc7627c3b450c1b5dbad585ce064185e0ee |
|
MD5 | 54971dffcc6653fd33921a398dfeb89c |
|
BLAKE2b-256 | 6b5c33ff568d742768c2f00ae07027a5fbcf470eaf6c256c7df1634b3b35a60a |
Provenance
The following attestation bundles were made for perpetual-0.7.3-cp312-none-win_amd64.whl
:
Publisher:
CI.yml
on perpetual-ml/perpetual
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
perpetual-0.7.3-cp312-none-win_amd64.whl
- Subject digest:
f7fa4847908ad7234eabb2ac997c0bc7627c3b450c1b5dbad585ce064185e0ee
- Sigstore transparency entry: 149135115
- Sigstore integration time:
- Predicate type:
File details
Details for the file perpetual-0.7.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: perpetual-0.7.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 884.5 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6081680e3227e5475b4a356a3ae8621c08d4aefa3c028c01cd0a2cd4a6d9aa49 |
|
MD5 | ef68b733a20e69adf4cb609b0b01d802 |
|
BLAKE2b-256 | e99839f01541f35cf8dd1c29c80d78b729a1b031bfa4d2c8931dac3505d07ce5 |
Provenance
The following attestation bundles were made for perpetual-0.7.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
:
Publisher:
CI.yml
on perpetual-ml/perpetual
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
perpetual-0.7.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Subject digest:
6081680e3227e5475b4a356a3ae8621c08d4aefa3c028c01cd0a2cd4a6d9aa49
- Sigstore transparency entry: 149135095
- Sigstore integration time:
- Predicate type:
File details
Details for the file perpetual-0.7.3-cp312-cp312-macosx_11_0_arm64.whl
.
File metadata
- Download URL: perpetual-0.7.3-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 624.1 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 758de614efc1cd95f19e9f583e1426c828b156ad676f170e6159573677852cd8 |
|
MD5 | 8139540dd8b979c5efcad1314eaa921a |
|
BLAKE2b-256 | 695dc103763e03707eb0a4cd6b18aa311ca2d1e322884dfb0fb9683c87279826 |
Provenance
The following attestation bundles were made for perpetual-0.7.3-cp312-cp312-macosx_11_0_arm64.whl
:
Publisher:
CI.yml
on perpetual-ml/perpetual
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
perpetual-0.7.3-cp312-cp312-macosx_11_0_arm64.whl
- Subject digest:
758de614efc1cd95f19e9f583e1426c828b156ad676f170e6159573677852cd8
- Sigstore transparency entry: 149135105
- Sigstore integration time:
- Predicate type:
File details
Details for the file perpetual-0.7.3-cp312-cp312-macosx_10_12_x86_64.whl
.
File metadata
- Download URL: perpetual-0.7.3-cp312-cp312-macosx_10_12_x86_64.whl
- Upload date:
- Size: 658.0 kB
- Tags: CPython 3.12, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc0d8b8a09bd587760ac881a369b1377157e58decde884731333bb0120154e2e |
|
MD5 | f0c9213cb8f76bccee583957fd118661 |
|
BLAKE2b-256 | 9f917d304808b58e945428f04ad9dd3029fb339ab006d37a5626f0ee88e0db68 |
Provenance
The following attestation bundles were made for perpetual-0.7.3-cp312-cp312-macosx_10_12_x86_64.whl
:
Publisher:
CI.yml
on perpetual-ml/perpetual
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
perpetual-0.7.3-cp312-cp312-macosx_10_12_x86_64.whl
- Subject digest:
cc0d8b8a09bd587760ac881a369b1377157e58decde884731333bb0120154e2e
- Sigstore transparency entry: 149135119
- Sigstore integration time:
- Predicate type:
File details
Details for the file perpetual-0.7.3-cp311-none-win_amd64.whl
.
File metadata
- Download URL: perpetual-0.7.3-cp311-none-win_amd64.whl
- Upload date:
- Size: 623.4 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 466bbadb41fa25e7cfee802e0621a9fd95431cb6def94c4944ae11cfe54bd7a7 |
|
MD5 | 308028fdeba2297f11ba21ebc1b1debf |
|
BLAKE2b-256 | cef7641f07f5ec796c90b115590969aaafb786bd0eac2793fc8f207a744be8b3 |
Provenance
The following attestation bundles were made for perpetual-0.7.3-cp311-none-win_amd64.whl
:
Publisher:
CI.yml
on perpetual-ml/perpetual
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
perpetual-0.7.3-cp311-none-win_amd64.whl
- Subject digest:
466bbadb41fa25e7cfee802e0621a9fd95431cb6def94c4944ae11cfe54bd7a7
- Sigstore transparency entry: 149135104
- Sigstore integration time:
- Predicate type:
File details
Details for the file perpetual-0.7.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: perpetual-0.7.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 884.1 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d7021fe4e2a34385674296e2c05b38e4758bcfe0b582dfa0e511871e76c98e30 |
|
MD5 | 2f4a8308a1dd51fc3105a8bdd9128d22 |
|
BLAKE2b-256 | 80c9a6e9c8884ceabc97c8601cf9987158bed407908b3e6ab47bc4c759fcff4e |
Provenance
The following attestation bundles were made for perpetual-0.7.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
:
Publisher:
CI.yml
on perpetual-ml/perpetual
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
perpetual-0.7.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Subject digest:
d7021fe4e2a34385674296e2c05b38e4758bcfe0b582dfa0e511871e76c98e30
- Sigstore transparency entry: 149135101
- Sigstore integration time:
- Predicate type:
File details
Details for the file perpetual-0.7.3-cp311-cp311-macosx_11_0_arm64.whl
.
File metadata
- Download URL: perpetual-0.7.3-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 624.4 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2e2094404882ad14423df212adf00d222451ceca668d98784649b2d416160ca |
|
MD5 | b63daee8d4f7299381fae44f60ad55af |
|
BLAKE2b-256 | 3e9da57e279699a1e9346c8903bc8417274524a373c204559a99b997fbd45bde |
Provenance
The following attestation bundles were made for perpetual-0.7.3-cp311-cp311-macosx_11_0_arm64.whl
:
Publisher:
CI.yml
on perpetual-ml/perpetual
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
perpetual-0.7.3-cp311-cp311-macosx_11_0_arm64.whl
- Subject digest:
b2e2094404882ad14423df212adf00d222451ceca668d98784649b2d416160ca
- Sigstore transparency entry: 149135109
- Sigstore integration time:
- Predicate type:
File details
Details for the file perpetual-0.7.3-cp311-cp311-macosx_10_12_x86_64.whl
.
File metadata
- Download URL: perpetual-0.7.3-cp311-cp311-macosx_10_12_x86_64.whl
- Upload date:
- Size: 659.5 kB
- Tags: CPython 3.11, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 26765f6042131c93a5191a13157859d582169676540ca96d80ebd509798c4898 |
|
MD5 | 593b5b9e177b47d9a8e9c15d64eefc76 |
|
BLAKE2b-256 | 83bc5e5cebbe0fce1d81515e779bca3c77f3b03f44ce8794254f03ce648cccd3 |
Provenance
The following attestation bundles were made for perpetual-0.7.3-cp311-cp311-macosx_10_12_x86_64.whl
:
Publisher:
CI.yml
on perpetual-ml/perpetual
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
perpetual-0.7.3-cp311-cp311-macosx_10_12_x86_64.whl
- Subject digest:
26765f6042131c93a5191a13157859d582169676540ca96d80ebd509798c4898
- Sigstore transparency entry: 149135113
- Sigstore integration time:
- Predicate type:
File details
Details for the file perpetual-0.7.3-cp310-none-win_amd64.whl
.
File metadata
- Download URL: perpetual-0.7.3-cp310-none-win_amd64.whl
- Upload date:
- Size: 623.0 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64a83a3468654e21d7ac3ab7bd621af9451cd39f2af31fb73e91cd9b77545a0c |
|
MD5 | 1d53a4e6c80af0676e4ec1317806cf56 |
|
BLAKE2b-256 | 006d479bf85335eee36af1d4a7a301867644a3b130ca0e16974b96c456f945b3 |
Provenance
The following attestation bundles were made for perpetual-0.7.3-cp310-none-win_amd64.whl
:
Publisher:
CI.yml
on perpetual-ml/perpetual
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
perpetual-0.7.3-cp310-none-win_amd64.whl
- Subject digest:
64a83a3468654e21d7ac3ab7bd621af9451cd39f2af31fb73e91cd9b77545a0c
- Sigstore transparency entry: 149135103
- Sigstore integration time:
- Predicate type:
File details
Details for the file perpetual-0.7.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: perpetual-0.7.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 884.2 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dd8ba3ee7620283ac87930bcef6f02f99d421b1a6c43a6aae2b562db1b2f69c3 |
|
MD5 | ea863eaa6fa588625f0bd081fba0afda |
|
BLAKE2b-256 | 863eb81c95a5186d65c6b5ef19a86fc3db829e2f72f76f1e319fb37e9b531cef |
Provenance
The following attestation bundles were made for perpetual-0.7.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
:
Publisher:
CI.yml
on perpetual-ml/perpetual
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
perpetual-0.7.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Subject digest:
dd8ba3ee7620283ac87930bcef6f02f99d421b1a6c43a6aae2b562db1b2f69c3
- Sigstore transparency entry: 149135110
- Sigstore integration time:
- Predicate type:
File details
Details for the file perpetual-0.7.3-cp39-none-win_amd64.whl
.
File metadata
- Download URL: perpetual-0.7.3-cp39-none-win_amd64.whl
- Upload date:
- Size: 623.9 kB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 43f8f024768af4acf9f314352e23bcd15b6a5acb85cf37efe702a1b4f931ed1b |
|
MD5 | 7a4567c4196e5546e3c804d67be5b58c |
|
BLAKE2b-256 | 8cc55dc133c4603cd0d22e13acb135c883b2fb1dc0cee4579d4e9b4c34117e08 |
Provenance
The following attestation bundles were made for perpetual-0.7.3-cp39-none-win_amd64.whl
:
Publisher:
CI.yml
on perpetual-ml/perpetual
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
perpetual-0.7.3-cp39-none-win_amd64.whl
- Subject digest:
43f8f024768af4acf9f314352e23bcd15b6a5acb85cf37efe702a1b4f931ed1b
- Sigstore transparency entry: 149135098
- Sigstore integration time:
- Predicate type:
File details
Details for the file perpetual-0.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: perpetual-0.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 884.6 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56a9d5dcdd8f4a09f00bdd90c83b47fd3542a20402e7ff22e9d6efdfa79821ae |
|
MD5 | 8e7854786edfe168352c311aadd5d44b |
|
BLAKE2b-256 | 19f7f40e78303ff9ab0234bbe61cbd98b751776831dc94d4ba2bea2d1f8c10d8 |
Provenance
The following attestation bundles were made for perpetual-0.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
:
Publisher:
CI.yml
on perpetual-ml/perpetual
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
perpetual-0.7.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Subject digest:
56a9d5dcdd8f4a09f00bdd90c83b47fd3542a20402e7ff22e9d6efdfa79821ae
- Sigstore transparency entry: 149135117
- Sigstore integration time:
- Predicate type: