Skip to main content

NGBoost Regression

Natural Gradient Boosting — distributional regression (mean + std) with optional conformal intervals


Overview

  • Model ID: ngboost-regression
  • Framework: ngboost
  • Best for: Tabular regression where you need calibrated uncertainty, not just a point
  • GPU required: No (CPU-only)
  • Specialist: tabular

NGBoost is "XGBoost with uncertainty": it predicts a full predictive distribution (mean and standard deviation), enabling conviction-based sizing and abstention on flat/low-edge bars. It plugs into the same tabular pipeline as XGBoost/LightGBM and can optionally emit distribution-free split-conformal prediction intervals.


When to Use

Perfect for:

  • Tabular regression where predictive uncertainty matters (sizing by edge, risk gating)
  • Probabilistic targets (expected move ± uncertainty)
  • A drop-in uncertainty-aware upgrade over XGBoost/LightGBM

Not ideal for:

  • Pure point-accuracy contests where uncertainty is irrelevant (XGBoost may be faster)
  • Time-series forecasting (use the forecasting models)

Quick Start

job = client.training.create(
model="ngboost-regression",
dataset_id=dataset.id,
hyperparameters={
"target_columns": ["target"],
"n_estimators": 500,
"conformal_alpha": 0.1, # 90% prediction intervals (0 disables)
},
)
job.wait()

Dataset Format

Standard tabular CSV — feature columns plus one target column (categoricals are one-hot encoded):

f1,f2,f3,cat,target
1.02,-0.4,3,A,2.13
-0.5,1.2,1,B,-0.88
...

Hyperparameters

ParameterDefaultDescription
n_estimators500Boosting stages
learning_rate0.01Learning rate
minibatch_frac1.0Row subsample fraction per stage
dist"Normal"Predictive distribution (Normal / LogNormal)
conformal_alpha0.0Miscoverage for conformal intervals (e.g. 0.1 → 90%). 0 disables
target_columns[]Target column (single; empty = auto-detect last numeric)

Inference

result = client.endpoints.infer(endpoint_id=ep, input_data={"instances": [
{"f1": 1.0, "f2": 0.5, "f3": 2, "cat": "A"},
]})

In addition to predictions, the response carries native uncertainty (additive fields, present only when available):

{
"predictions": [2.04],
"std": [0.71],
"interval_lower": [1.18],
"interval_upper": [2.90],
"interval_meta": {"method": "conformal", "alpha": 0.1, "coverage": 0.9}
}

std comes from NGBoost's predictive distribution. Intervals are conformal (valid, distribution-free) when the model was trained with conformal_alpha > 0, otherwise a Gaussian interval derived from std.

The conformal interval read-path applies to any regressor that ships a conformal.json, so the same uncertainty plumbing extends beyond NGBoost.