Skip to main content
Open llms.txtCopy tools

N-BEATS And N-HiTS

NBeatsForecaster and NHiTSForecaster are deterministic neural forecasting experts for regular forecast windows. Use them when you want a neural baseline for a clean, evenly spaced series or panel, and compare them against seasonal naive, local statistical models, and CartoBoostLagForecaster on the same rolling-origin split.

When To Use​

  • The series is regular enough to form fixed history windows.
  • You want a neural window model, not an interpretable component model.
  • The training set is large enough that a small neural expert is meaningful.
  • You can report rolling-origin metrics against simpler baselines.

Use NBeatsForecaster first when recent history should be projected directly. Use NHiTSForecaster when pooled history windows may be useful for smoother or longer-horizon structure.

Python Example​

from cartoboost.forecasting import ForecastFrame, NBeatsForecaster, NHiTSForecaster

frame = ForecastFrame.from_pandas(
hourly_demand,
timestamp_col="timestamp",
target_col="demand",
series_id_col="series_id",
freq="h",
)

nbeats = NBeatsForecaster(
input_size=24,
hidden_size=32,
epochs=80,
learning_rate=0.01,
)
nbeats.fit(frame)
nbeats_forecast = nbeats.predict(12)

nhits = NHiTSForecaster(
input_size=48,
hidden_size=32,
epochs=80,
learning_rate=0.01,
pooling_size=2,
)
nhits.fit(frame)
nhits_forecast = nhits.predict(12)

Browser WASM Example​

N-BEATS browser forecast

Runs nbeats against a bundled route-demand sample.

Ready to run in this page.

N-HiTS browser forecast

Runs nhits against a bundled route-demand sample.

Ready to run in this page.

CPU is the default backend for ordinary runs. On Apple-platform wheels built with the native Metal feature, backend="metal" routes the deterministic dense inference layers through CartoBoost's shared Metal backend. On Linux or WSL wheels built with ROCm support, backend="rocm" routes the same dense inference layers through CartoBoost's shared HIP backend. On builds with CUDA support, backend="cuda" routes the same dense inference layers through CartoBoost's shared CUDA backend. Invalid or unavailable accelerator requests fail instead of silently falling back to CPU.

Use When​

SituationBetter first choice
You need an explainable level/trend/seasonality decomposition.ThetaForecaster, ETSForecaster, or PiecewiseLinearSeasonalForecaster
You need a guarded default over several forecast families.AutoForecaster
You have many aligned panels and want tabular lag features.CartoBoostLagForecaster
You want a compact neural expert for fixed windows.NBeatsForecaster or NHiTSForecaster

Parameters​

ParameterApplies toNotes
input_sizeBothNumber of historical observations used for each training window.
hidden_sizeBothWidth of the internal neural representation.
epochsBothNumber of deterministic training passes.
learning_rateBothOptimization step size.
pooling_sizeNHiTSForecasterPooling factor for compressed history windows.
backendBoth"cpu" by default, "auto" as a CPU-resolving alias, or an available accelerator such as "metal", "rocm", or "cuda" for backend-dispatched dense prediction kernels.

Validation​

These models can look strong when a random split leaks nearby time windows. Use rolling-origin validation and keep the baseline table visible:

from cartoboost.forecasting import RollingOriginBacktester, RollingOriginSplitter

splitter = RollingOriginSplitter(horizon=12, step=12, min_train_size=96)
backtester = RollingOriginBacktester(splitter=splitter)

nbeats_result = backtester.evaluate(NBeatsForecaster(input_size=24), frame)
nhits_result = backtester.evaluate(NHiTSForecaster(input_size=48, pooling_size=2), frame)

Report RMSE, MAE, WAPE, horizon metrics, train time, prediction time, and the same seasonal naive and CartoBoostLagForecaster comparison used for the rest of the forecasting family.

Limitations​

  • Neural basis models need more history and tuning than local statistical baselines.
  • Small panels can produce unstable rankings across seeds and cutoffs.
  • Spatial or graph structure is used only when supplied through documented inputs.
  • Report compute backend and resource use with timing results.