How training works
Heimdall ML trains a gradient-boosted tree (XGBoost) for classification or regression. Search effort in the wizard (auto / faster / deeper) controls how long Bayesian hyperparameter search runs — not a menu of unrelated algorithms.
From gold to API
- You pick a gold dataset (or a sample) and a target column.
- Heimdall holds out a test split before filling missing values or encoding categories, so reported metrics are not scored on data the transforms already saw.
- Numeric gaps use the train-set median; categoricals use the train-set mode. High-missing columns (about 40%+ null on train) are dropped.
- Categories stay as categories inside XGBoost (native categorical splits). New values at predict time map to an unseen bucket instead of breaking column layout.
- Optuna (Bayesian TPE) searches tree hyperparameters on the training data. The held-out test set is scored once.
- The fitted preprocessing + model pipeline is stored and used as-is by the predict API. Training and serving share the same transforms.
What you see after training
| Output | Meaning |
|---|---|
| Accuracy, precision, recall, F1 | Classification on the holdout set |
| ROC-AUC / PR-AUC | Ranking quality (binary classification) |
| R², MAE, MSE, RMSE | Regression on the holdout set |
| Feature importance | Permutation importance on original columns (holdout) |
Search mode auto spends more trials on wider or more imbalanced tables. Ultrafast is for a quick pass (and skips search entirely on very small samples).
Models trained before this pipeline
Older models still serve through the same predict URL. New models store a versioned pipeline so encoding cannot drift between train and serve.