Repository navigation
v0.4.3
·
11 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
hessboost v0.4.3
Adds calendar-aligned purged forward cross-validation folds and a Student-t distributional family (dist:student_t), plus two XGBoost-parity fixes and a substantially faster CI.
Full Changelog: v0.4.2...v0.4.3
Highlights Since v0.4.2
Cross-validation
- New
Fold::purged_forward_at(decision_at, label_end, block_starts, min_train)and its Python wrapperhessboost.folds.purged_forward_at(decision_at, label_end, block_starts, *, min_train=1)build walk-forward folds from caller-supplied block starts, so a test block can be one day, week, month or quarter instead of an equal count of distinct decision times. - Fold
jtests rows decided in[block_starts[j], block_starts[j + 1])(the last block runs to the end) and trains on rows decided before the block whoselabel_endis at or before the block start — exactlypurged_forward's purge rule. Rows decided before the first start are only ever trained on; a block with no test rows or too few purged training rows is refused with a message naming the block. Folds plug intohessboost.cv(..., folds=...);purged_forwarditself is unchanged.
Distributional objectives
objective = "dist:student_t"fits a Student-t with natural parameters(loc, scale, df)and learned degrees of freedom, so heavy-tailed targets no longer under-predict tail exceedance probabilities the waydist:normaldoes.- Fitted
dfis always> 1; CDF, quantile, log density and CRPS are available in closed form, andDist::new(DistFamily::StudentT, &[loc, scale, df])accepts anydf > 0.
XGBoost parity
- gblinear now refuses categorical features (
InvalidDataonfeature_types, naming the dataset), matching XGBoost's "gblineardoesn't support categorical features" across training, eval sets, cross-validation, continuation and online updates. Numerically typed category codes still train as before. verbosity = 0is accepted as a parameter (hessboost writes no log output); other values are refused like other fixed settings.
CI and packaging
- CI reuses cached builds and packages instead of rebuilding: lavapipe
.debs are cached per runner image, Rust jobs use an objects cache covering all features, the uv cache key includes the uv version,fuzz/targetis cached, and Python wheels, the sdist round trip and the CUDA runtime build through the compiler cache. Median wall time dropped from 591 s to 443 s, with the parity job at 124 s versus a 344 s median.
Pull Requests by Category
Features
- feat(training): purged forward folds at given block starts (#183)
- feat(objective):
dist:student_t, a heavy-tailed distributional family (#185)
Bug Fixes
- fix: match XGBoost on gblinear categoricals and
verbosity(#184)