Skip to content

Losses & target transforms

DEUP trains a secondary predictor g on the base model's pointwise error l(y, f(x)). Choose the loss that matches your task.

Registry

Name Task Formula (per row)
squared regression (y - ŷ)²
absolute regression \|y - ŷ\|
pinball / pinball:0.9 quantile regression pinball at quantile q
logloss classification cross-entropy
brier classification Brier score
rank cross-sectional ranking \|rank_pct(y) - rank_pct(ŷ)\| per group
from deup.core import get_loss

loss_fn = get_loss("brier")
loss_fn = get_loss("pinball", q=0.9)
loss_fn = get_loss("pinball:0.75")

Pass a custom callable to get_loss or directly to DEUPRegressor(loss=...).

Target transforms for g

Error targets can be heavy-tailed. Before fitting g, apply:

Transform Forward Inverse
log (default) log(err + ε) exp(g) - ε
asinh asinh(err / ε) sinh(g) × ε
none identity identity
from deup.core import apply_error_transform, inverse_error_transform

t = apply_error_transform(errors, method="asinh", eps=1.0)
back = inverse_error_transform(t, method="asinh", eps=1.0)

In DEUPRegressor, set target_transform="log" | "asinh" | "none".

Task → config cheat sheet

Use case loss cv groups
Tabular regression squared 5 (KFold)
Quantile forecast pinball:0.9 TimeSeriesSplit
Classification (future) logloss / brier StratifiedKFold
Cross-sectional ranker rank PurgedWalkForward dates