FAQ¶
Does it use the GPU?¶
No.
How does it compare to CatBoost, LightGBM, and XGBoost?¶
On defaults, it scores around LightGBM and XGBoost or better, and it is much faster
than CatBoost. Setting n_ensembles=8 bags the model, which is the strongest setting
short of adding refit_members=True, and beats CatBoost on accuracy at well under half its fit cost on
high-cardinality categorical data.
Do I need to one-hot encode categoricals or impute missing values?¶
No.
Pass your categorical columns to fit(..., cat_features=[...]), by integer position or
by column name. NaNs route to their own bin at fit and predict time, so no imputation
is needed. pandas nullable dtypes (Int64, Float64, boolean) and pd.NA are
accepted and treated as missing.
How can I make inference faster?¶
If your serving data is already validated, skip scikit-learn's finiteness check with
assume_finite:
import sklearn
with sklearn.config_context(assume_finite=True):
preds = model.predict(X) # finiteness scan skipped
Why is the very first fit or predict slow?¶
That is numba compiling the kernels, once, cached on disk per user. Run
chimeraboost-warmup after installing to pay it up front, or call
chimeraboost.warmup() or set CHIMERABOOST_WARMUP=1 to pay it at import time. See
Deployment for timings and patterns for short-lived workers.
Why did it get slow again after I upgraded?¶
Numba stamps each cached kernel with its source file's timestamp and size, so
installing a new ChimeraBoost version invalidates the cache and the next run
recompiles. Put chimeraboost-warmup in the same script as your pip install -U.
Why oblivious (symmetric) trees?¶
They make prediction extremely fast and provide strong built-in regularization, at some cost to per-tree sharpness. The design is CatBoost's, not ours. See How it works.
Does SHAP support multiclass?¶
Yes. shap_values returns (n_samples, n_features, n_classes), attributing each
class's raw softmax score. Quantile models are covered too, with a channel per
level. See SHAP explanations.
How do I save and load a model?¶
A fitted estimator pickles like any scikit-learn object:
What exactly does it depend on?¶
NumPy, numba, scikit-learn, and SciPy. pandas is not required. DataFrames are consumed through their own conversion methods, so passing them works whenever you have pandas (or polars) installed yourself.
How do I tune it?¶
Mostly, you don't. The defaults are benchmark-tuned, and in our experiments broad
hyperparameter search bought little that generalized. Two settings address specific
situations rather than general tuning: n_ensembles=8 with refit_members=True is the
maximum-accuracy mode, at several times the fit cost, and depth=8 to 10 suits large, interaction-heavy
regression. Parameters documents every option.
Is the API stable?¶
ChimeraBoost is beta (0.x). Breaking API or behavior changes bump the minor version and are recorded in the CHANGELOG; patch releases are fixes only. Pickled models are not guaranteed to load across versions, so store the version next to the model and re-fit after upgrading.