Skip to content

Channels and guarantees

TRIAD reallocates each feature's exact contribution \(f_j(x_j)\) into three signed channels:

Channel Meaning Value
I — Information supported by training data \(w f\) on observed rows, else 0
D — Density / epistemic under-supported — the model's guess residual \(f - w f\)
M — Missingness routed through missing-value handling \(w f\) on missing rows, else 0

\(w \in [0, 1]\) is the support weight. D is computed as the residual \(f - wf\) — never as \((1-w)f\) — so the three channels sum back to \(f\) to float roundoff (decision 11).

The invariant suite

The properties below are asserted by the test battery over both modes (exact and approximate), several synthetic DGPs and multiple seeds:

Property Statement
C1 — completeness \(I + D + M = f\) per term (atol=1e-12)
C2 — reconciliation channel totals + intercept = the model's raw score
C3 — vanishing epistemic \(v \to 0 \Rightarrow D \to 0\): well-supported bins carry no epistemic mass
C4 — missingness exclusivity missing value ⇒ \(I = 0\); observed value ⇒ \(M = 0\)
C5 — sign preservation every nonzero channel shares the sign of the feature's total contribution
C7 — scale equivariance scaling \(f\) by \(c\) (and \(v\), \(\tau^2\) by \(c^2\)) scales every channel by \(c\)
C8 — null feature a feature the model never splits on gets all channels 0

Beyond the suite, explain guards C2 at runtime on every call — a discrepancy beyond 1e-6 raises RuntimeError — and reconciliation_error / channel_mass in triadxai.metrics verify and summarize the identity externally.

Caveats worth knowing

  • Pair terms (EBM interactions) split their channels equally between the two participating features (pair_split="half"). Half of a missing-partner pair's M then lands on the observed feature, so C4 holds at term level, not feature level, for pair-bearing models. LightGBM exact mode has no pairs, so its feature-level C4 is exact (decision 14).
  • C8 in approximate mode has one nuance: a feature absent from all trees gets \(\phi \equiv 0\) and hence all channels 0; a pure-noise feature that does get trees is instead handled by \(\hat\tau^2 = 0\), which routes its entire contribution to D (decision 5).
  • Attribution vs variance provenance: attributions come from the single deployed model; variance comes from bag replicas. C1/C2 therefore hold exactly on the deployed model's attributions — the replicas enter only through \(w\) (decision 4).