triadxai¶
TRIAD splits every feature's contribution to a model score into three signed channels that sum back exactly:
- I — Information: the part supported by training data,
- D — Density / epistemic: the under-supported part — where the model guesses,
- M — Missingness: the part routed through missing-value handling.
The identity I + D + M = f_j(x_j) holds per feature (C1) and channel totals
reconcile exactly to the model score (C2). This separates "denied because of
bad information" from "denied because we lack information" — aligned with
the Reg B adverse-action reason-code taxonomy that distinguishes derogatory
from insufficient-information reasons.
Two modes, one API¶
| Exact mode | Approximate mode | |
|---|---|---|
| Models | Additive: fit_lgbm_gam boosters, EBM (triadxai[ebm]) |
Any LightGBM booster |
| Attribution | Exact term contributions from bin tensors | Native TreeSHAP (pred_contrib) |
| Support weight | Per-bin empirical-Bayes shrinkage w = τ²/(τ²+v) |
Per-instance, from bag-replica disagreement |
| Guarantees | C1–C8 exact | C1–C8 hold; interaction effects leak into per-feature channels |
See Design decisions for what "approximate" gives up and why bag disagreement doubles as a density signal.
Where to start¶
Getting started walks through fitting an additive-constrained LightGBM, reading the channels frame, epistemic scores (ES / KR), reason codes, and the three-channel waterfall.
The Guidebook runs the same workflow end to end on synthetic data with known ground truth, including the density-gap and approximate-mode studies.