varvar
Python package to model variance in different ways
Multiplicative variance trees and the varvar algorithm
varvar is a greedy algorithm for multiplicative variance trees.
varvar is to variance as lightgbm/xgboost/... are to expectation.
There are currently two implementations of varvar algorithms:
- using quantile search at every split (in
varvar.qtrees) - using histograms, with binning before starting (in
varvar.htrees)
Quantile search is much slower, but can be more accurate.
This is similar to the "exact" and "hist" modes in xgboost, except our "exact" algorithm goes over a small (exact) subset of each feature.
Both implementation modules have a multiplicative_variance_trees function.
Use varvar.predict for prediction.
The trees are returned as plain python types and can be serialized with pickle or even as json.
Here is an example:
from varvar.htrees import multiplicative_variance_trees
from varvar import predict
import numpy as np
random = np.random.RandomState(1729)
n = 200000
x = random.uniform(-1000, 1000, n)
correct_threshold = 300
sigma = 1 * (x <= correct_threshold) + 30 * (x > correct_threshold)
e = sigma * random.randn(n)
trees = multiplicative_variance_trees(
[x], e**2,
num_trees=1, max_depth=1, mingain=1, learning_rate=1,
q=np.linspace(0, 1, 100)[1:-1]
)
preds = predict(trees, [x])
found_threshold = trees[1][0][1]
print(correct_threshold, found_threshold) # 300, 295
print(np.sqrt(min(preds)), np.sqrt(max(preds))) # 1, 30
conversion to xgboost booster
You can convert multiplicative variance trees to an xgboost booster.
This allows you to use xgboost's predict function (which actually seems to be a bit slower), and more importantly to use the shap package to interpret varvar predictions.
from varvar import mvt_to_xgboost
booster = mvt_to_xgboost(trees)
You need xgboost installed to run this code.
Metadata
Release files for varvar 1.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| varvar-1.0.4.tar.gz | 15.3 kB | Without provenance | Details for varvar-1.0.4.tar.gz |
Release files / varvar-1.0.4.tar.gz
| Download URL | varvar-1.0.4.tar.gz |
|---|---|
| Size | 15.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c96584047b56319223f8fd91c4c64593721d685a8de323ae2401cb257b34dd50
|
|
BLAKE2b-256 checksum How to use checksums |
35c94521fec35ebebeb1e578fc206ac40c59d2e3e711f7e05a4bce573db63078
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.8.1 keyring/23.5.0 rfc3986/1.5.0 colorama/0.4.4 CPython/3.8.10
|
Security for varvar 1.0.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.