--- myst: html_meta: description: "Choose CBaseline reference outputs for regression, binary classification, and multiclass models on the intended attribution scale." --- # Choosing the reference prediction `f0` is required. It expresses the question: why this output rather than the reference output? Specify the reference population and the output scale before constructing a background. ## Regression A practical model-relative benchmark is the mean fitted prediction on a representative reference sample: ```python predictions = model.predict(X_reference) f0 = float(predictions.mean()) ``` The canonical IG paper motivates the uninformed benchmark as the loss-optimal constant prediction: for squared-error regression, the unconditional mean outcome. The mean model prediction estimates a model-relative benchmark; it need not equal the mean outcome in an uncalibrated model. An externally chosen target is also allowed, subject to support and feasibility. ## Binary classification Use the score being attributed, preferably the logit for logistic models. Do not substitute hard class labels. A library's `decision_function` is not universally a logit: check the model's output convention. For a reference probability `p0` strictly between zero and one, the corresponding logistic score is: ```python import numpy as np p0 = 0.30 # an explicitly chosen reference class probability f0 = float(np.log(p0) - np.log1p(-p0)) ``` The canonical probability benchmark can be estimated from class frequencies in the chosen population, or from mean predicted probabilities for a model-relative comparison. State which estimate you use. For a comparison against the **mean score** instead, use: ```python scores = model.decision_function(X_reference) f0 = float(scores.mean()) ``` These choices differ: `logit(mean probability)` generally does not equal `mean logit`. Matching the mean logit also does not force the mean background probability to equal `p0`. For a decision-boundary question, use the score corresponding to the actual probability threshold. A threshold of 0.5 corresponds to `f0=0.0` for a logistic score; a different threshold gives a different reference. ## Multiclass classification Use a full matrix of logits `L` with shape `(n, K)`, ordered consistently with the model's classes. Center each row to remove the arbitrary common offset: ```python Z = L - L.mean(axis=1, keepdims=True) ``` For a reference class-probability vector `p0`, all entries must be positive and sum to one. Its centered-logit representative is: ```python p0 = np.array([0.2, 0.3, 0.5]) z_star = np.log(p0) - np.log(p0).mean() ``` This is the probability-neutral benchmark used in the canonical IG paper. Zero-frequency classes require an explicit population or smoothing decision; there is no finite logit for a zero probability. Do not silently clip it. For the distinct comparison against mean centered model scores, use `z_star = Z.mean(axis=0)`. In general, this is not the centered logarithm of the mean predicted probability vector. See [the IG paper, Section 2.1](references.md). Construct **one joint background**, retaining the class coordinates: ```python from cbaseline import background bg = background(Z, z_star, X_reference, weighting="equal", size=200) ``` Use at least 200 reference rows for this example. A calibrated alternative uses `weighting="calibrated"` without `size`, provided the target is feasible. The metric removes the redundant common direction, giving at most `K-1` independent dimensions; other rank deficiencies can reduce this further. Separate scalar backgrounds for each class would change the reference population across outputs. Reuse the joint background for all classes. The attribution engine must explain the **same centered scores**. For an engine that returns all raw-logit attributions, centering across its class axis can give centered-logit attributions by linearity, but center base values and output predictions as well and check the engine's array conventions. Do not assume `predict` or `predict_proba` returns centered logits. ## Feasibility and contextual questions A mean prediction from the reference sample lies in its convex hull. An external target or a transformed probability benchmark need not. Localized support may be narrower still; calibration may need to widen or may fail. See [diagnostics](diagnostics.md). A subgroup comparison should use that subgroup as the reference sample and an appropriate subgroup target. This is a contextual question incorporating additional information. Record it as such rather than silently changing the population behind the unconditional benchmark.