Skip to content

0.33.0

Choose a tag to compare

@bbstats bbstats released this 24 Sep 13:03
· 62 commits to main since this release

Better predictive distributions, a rarity signal for high-cardinality categoricals, and faster fits.

Quantile regression now leads the field

ChimeraBoostQuantileRegressor changes three defaults.

  • Calibrated intervals. After the fit, the intervals are rescaled on the rows early stopping already held out (conformalize="auto"). A nominal 90% interval now covers about 90% on average, where it used to cover 87%, and no extra rows are spent.
  • Deeper trees. depth is now 6 (it was 4).
  • Three candidates, one kept (audition=True). The fit builds the model as configured, the same model with 254 histogram bins, and the model's shape moved onto the median of an ordinary squared-error ChimeraBoostRegressor. It keeps whichever scores the best CRPS on the held-out rows.
model = ChimeraBoostQuantileRegressor().fit(X, y)
model.audition_["selected"]     # "head", "bins" or "recentred"

On the 36 Grinsztajn regression datasets it now beats CatBoost's MultiQuantile on CRPS on 27, in about a seventh of CatBoost's fit time. It beats LightGBM's per-level quantile boosters on 30. Every prediction method and shap_values serve the chosen candidate. The fit takes about 2.35 times longer than 0.32.0's single model; audition=False gives a single model back.

Count columns for high-cardinality categoricals

cat_count_features=True, the new default, adds one numeric column for each categorical column with at least 256 training categories: the category's training-row count. It is the part of CatBoost's categorical encoding that our target statistic did not carry. Where it engages, it wins 6 of 7 datasets on the high-cardinality benchmark suite and 5 of 6 on the public validation suite. Data without such a column fits exactly as before.

Faster, with identical predictions

  • Multiclass fits are 3–6% faster, then another 4–6%.
  • Binary classification fits are 4–6% faster.
  • Fits on data with categorical columns are 8–19% faster, and another 3–9% when there are many numeric columns too.

New, opt-in

  • Random intercepts for grouped regression data (#109, first slice): ChimeraBoostRegressor(random_effects=True) with fit(X, y, groups=...).
  • predict_thresh on the quantile regressor (#106): exceedance probabilities P(y > t) read off the fitted grid.
  • cross_features="always" on the classifier.

Behaviour changes

  • Predictions change on data with a categorical column of 256 or more categories. cat_count_features=False restores 0.32.0.
  • ChimeraBoostQuantileRegressor predictions change. depth=4, conformalize=False, audition=False reproduces 0.32.0 exactly.
  • Nothing else changes: other regressors and classifiers give the same predictions as 0.32.0.

Full notes: CHANGELOG.