> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.umnai.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.umnai.com/_mcp/server.

# Justifying attribution explanations

Attribution explanations have two parts: how and why.

Attributions explain how a prediction was built. They show how much each feature, interaction, or module contributed to the prediction. Activated rules explain why those attributions were produced by showing the conditions and local behaviour behind them.

## How and why

When explaining a [prediction](../explanations/local-explanations/predictions-and-attributions#prediction) with [attributions](../explanations/local-explanations/predictions-and-attributions), the attribution values explain:

| Part                                | Explanation                                                    |
| ----------------------------------- | -------------------------------------------------------------- |
| How the prediction was built        | The prediction is built from the sum of its attributions.      |
| How much each component contributed | Each feature, interaction, or module has an attribution value. |

The [activated rules](../explanations/local-explanations/predictions-and-attributions#activations) explain why those attribution values were produced.

Each activated [rule](../explainable-neural-net-xnn#rule) contains:

| Rule expression          | Role                                                                           |
| ------------------------ | ------------------------------------------------------------------------------ |
| `conditional_expression` | Identifies the data segment or group that triggered the rule.                  |
| `then_expression`        | Describes the behaviour of that segment and how the attribution is calculated. |

In many cases, the `conditional_expression` is enough to justify the attribution. When more detail is needed, the `then_expression` can be used to explain the behaviour of the segment.

## Example

Suppose the `Age` module attributed `0.15` for a query where `Age = 10`.

The activated rule in the `Age` module is:

> IF `(0 < Age ≤ 18)` THEN `attribution(Age) = 0.05 + (0.01 * Age)`

The attribution can then be justified at different levels of detail.

### Basic justification

> `Age` attributed `0.15` because `Age` is between `0` and `18`.

This uses the `conditional_expression` to explain which segment triggered the attribution.

### Detailed justification

> `Age` attributed `0.15` because `Age` is between `0` and `18`, and the behaviour of that segment follows the equation `0.05 + (0.01 * Age)`.

This adds the `then_expression`, which explains how the attribution is calculated for the activated segment.

### Human-friendly justification

> `Age` attributed `0.15` because `Age` is between `0` and `18`, and for that age group the attribution increases linearly with `Age`, from `0.05` up to `0.23`.

This keeps the same information but presents it in a more natural way for a non-technical reader.

## When to use each level

Different audiences need different levels of justification.

| Level                        | Best for                                                             |
| ---------------------------- | -------------------------------------------------------------------- |
| Basic justification          | Explaining the segment or condition that caused an attribution.      |
| Detailed justification       | Debugging, audit, technical review, or model validation.             |
| Human-friendly justification | User-facing explanations, operational workflows, or business review. |

The important point is that each level is grounded in the same activated rule. The explanation can be shortened or translated into friendlier language without losing its connection to the model structure.