Limitations

SnapBoost is a scikit-learn realization of the NeurIPS 2020 HNBM idea, not a drop-in replacement for IBM Snap ML or XGBoost. The following constraints are part of the 1.x contract.

No multilabel or multioutput targets

SnapBoostClassifier supports binary logistic loss and multiclass softmax. Binary models keep a scalar decision_function. Multiclass models return shape (n_samples, n_classes) and store one scalar learner per class in each boosting round. Multilabel and multioutput targets raise ValueError.

No monotonic constraints under softmax

monotonic_cst is rejected with ValueError when fit receives more than two classes. Constraints would bind each class score separately, and every score can rise with a feature while no class probability does, so the constraint would not mean what it appears to mean. scikit-learn rejects the same combination. Binary classification and regression are unaffected.

Multiclass also takes a longer Newton step than XGBoost at the same learning_rate, because the softmax Hessian keeps the undamped diagonal. Tune learning_rate separately for multiclass instead of reusing binary settings, or guard the run with early_stopping_rounds. See MATH.md 4.2.1.

Dense numeric inputs

Training and prediction accept dense numeric arrays. Sparse matrices, native NaNs, and native categorical splits are not supported inside the booster. Use make_tabular_preprocessor (or any sklearn Pipeline) for missing values and categoricals before fit.

CART trees, not histogram BDTs

Tree learners are scikit-learn DecisionTreeRegressor objects. The original SnapBoost paper used histogram-based binary decision trees in C++. Accuracy can still match a heterogeneous ensemble; wall-clock performance will not match Snap ML or XGBoost on large data.

Exact kernel ridge is specialized

SnapBoostKernelRidgeClassifier and SnapBoostKernelRidgeRegressor keep a frozen constructor surface without greedy selection, line search, subsampling, or early stopping. They inherit binary and multiclass classification from HNBM but have quadratic memory cost. Prefer the default RFF path unless the dataset is small and an exact RBF kernel is required.

At least two classes are required

Classifiers raise ValueError when y contains a single class. Fit a DummyClassifier for degenerate targets.

Sample-weight equivalence

Fitting with integer sample_weight is not equivalent to repeating rows. Hessian-weighted Newton updates and ridge regularization both depend on the weight scale. sklearn’s check_sample_weight_equivalence_on_dense_data is an expected failure of this estimator family.