Skip to content

v0.4.5

Choose a tag to compare

@github-actions github-actions released this 29 Oct 15:31
· 3 commits to main since this release
Immutable release. Only release title and notes can be modified.
c23b81f

hessboost v0.4.5

hessboost v0.4.5 adds the reg:exceedance objective for predicting $P(y \ge k_j)$ across a threshold ladder in a single model, row-subset purged folds and row-count early-stopping tail cuts, and fast what-if variant scoring and feature-box margin bounds.

Full Changelog: v0.4.4...v0.4.5

Highlights Since v0.4.4

Exceedance Probability Objective

  • objective = "reg:exceedance" with strictly increasing exceedance_threshold = [k_1, …, k_K] trains one model predicting $P(y \ge k_j)$ per threshold, replacing $K$ separate binary:logistic classifiers (#194).
  • Output $j$'s margin is the logit of $P(y \ge k_j)$, and each row's probabilities are rearranged so predictions are monotone (never increasing with $j$).
  • Defaults to the exceedance-logloss metric, works with either one tree per threshold or multi_strategy = multi_output_tree, and exposes thresholds in Python via Booster.exceedance_thresholds.
  • Stored in native and compact formats via a REQUIRED section (older readers refuse to load it); XGBoost export refuses reg:exceedance models.

Purged Folds and Early-Stopping Tails

  • PurgedTail can cut the early-stopping tail by row count (TailCut::Rows; Python PurgedTail(..., cut="rows")) in addition to the default span cut (#193).
  • Fold::purged_forward_rows and Fold::purged_forward_at_rows (Python rows= on purged_forward and purged_forward_at, accepting indices or a boolean mask) build purged folds over selected rows only and return indices in original row numbering.

What-If Variant Predictions and Margin Bounds

  • RowVariants with BoostedModel::predict_margin_variants_into and BoostedModel::predict_variants_into (Python Booster.predict_variants(base, features, values, *, output_margin=False, iteration_range=None)) scores many variants of a few features against one base row without materializing rows, producing results bit-identical to per-row prediction at 1.5×–7.4× the speed of 300 single-row calls depending on model depth and the share of varying splits (#195).
  • BoostedModel::margin_bounds_into (Python Booster.margin_bounds(lower, upper, *, iteration_range=None)) bounds every row's margin within a [lower, upper] feature box in 2–19 µs per call.

Pull Requests by Category

Features

  • feat(training): purged folds over a row subset and row-count early-stopping tails (#193)
  • feat(objective): reg:exceedance, one model of P(y >= k) over a threshold ladder (#194)
  • feat(model): what-if predictions for row variants and margin bounds over a box (#195)

Misc

  • fix(release): sign release tags (#191)