How training works
Heimdall ML trains a gradient-boosted tree (XGBoost) for classification or regression. Search is narrower on small or imbalanced tables. Search effort in the wizard (auto / faster / deeper) controls how long 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 encoding categories, so reported metrics are not scored on data the transforms already saw. Rows that share a file or customer id stay on one side of the split when that column is present.
- Numeric missing values stay missing (XGBoost learns a default direction). Categorical missing values get a dedicated missing level, distinct from new labels at predict time. 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 searches a small gbtree hyperparameter space 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 tables, and keeps search narrow on small or imbalanced ones. 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.