PDP report

target income>50K · 12 features · 6 plotted

data 5,000 × 124 continuous · 7 nominal · 1 ordinalmodel output 0.249 ± 0.309 in [0.000225, 0.999]accuracy 0.879 on this subsample
method pdptop_k 5coverage 0.8000heter_threshold 0.0551min_r2_gain 0.0100finder bestnof_instances 5000random_state 21

1 · Overview — where to look

An additive surrogate read off the global curves reproduces 72.5% of the model's predicted variance; adding the regional plots kept by the decision sequence, 86.0%.

explained-variance ledger

Each point is a feature: importance (x) against heterogeneity (y). Bottom-left is ignorable; bottom-right is important and fully described by its mean effect; the top-right corner — important and heterogeneous — is where the mean hides something. An arrow marks each split the decision sequence accepted: from the feature's global point to its weighted-mean point across the subregions.

feature triage
#featureimportanceheterogeneity#regionsregional analysis
1capital-gain0.10960.16217split into 4 regions →
2age0.07090.08625split found — rejected by the decision sequence →
3education-num0.06990.04047split into 4 regions →
4capital-loss0.06590.08367split into 4 regions →
5relationship0.05250.05615split found — rejected by the decision sequence →
6marital-status0.05180.0542·not plotted (below the coverage cut)
7occupation0.04010.0480·not plotted (below the coverage cut)
8hours-per-week0.03510.04487split into 4 regions →
9sex0.01550.0246·not plotted (below the coverage cut)
10workclass0.01110.0209·not plotted (below the coverage cut)
11race0.00660.0117·not plotted (below the coverage cut)
12native-country0.00590.0109·not plotted (below the coverage cut)

The plotted features carry 75% of the total importance mass (target 80%, ceiling top_k = 5).

The decision sequence. Starting from the global curves, each round applies the split with the largest explained-variance gain, measured on top of the splits above it, and stops when no remaining split adds at least 1.0%. A real split (its heterogeneity does drop) can still add nothing — or even hurt, by double-counting — when its variance is already explained by an earlier split.

stepregionsheterogeneityexplained variance
global effects (GAM)··72.5%
+ split education-num (on age, capital-gain, marital-status)40.069 → 0.040+7.9% → 80.4%
+ split capital-gain (on age, education-num, marital-status)40.254 → 0.162+2.9% → 83.2%
+ split capital-loss (on age, capital-gain, marital-status)40.108 → 0.084+1.7% → 85.0%
+ split hours-per-week (on age, capital-gain, marital-status)40.064 → 0.045+1.0% → 86.0%
rejected · age (on hours-per-week, marital-status)30.086 → 0.055+0.7% — below the 1.0% threshold
rejected · relationship (on age, marital-status)30.056 → 0.046+0.3% — below the 1.0% threshold
Bar view — importance and heterogeneityimportance and heterogeneity

2 · Regional analysis — the final CALM

The selected snapshot: global effects everywhere except the accepted splits. Features in descending importance — a split feature enters as one group at the instance-weighted mean of its subregions. The split features' global counterparts are in the baseline section at the end.

2.1 · capital-gain

importance 0.1096heterogeneity 0.1621regions 4

Split on age, education-num, marital-status into 4 regions — worth +2.9% of explained variance on top of the splits above it; importance and heterogeneity here are the instance-weighted means over the subregions. The global counterpart is in the baseline.

Partition tree

Feature 8 - Full partition tree:
🌳 Full Tree Structure:
───────────────────────
capital-gain 🔹 [id: 0 | heter: 0.25 | inst: 5000 | w: 1.00]
    marital-status = Married-civ-spouse 🔹 [id: 1 | heter: 0.23 | inst: 2319 | w: 0.46]
        education-num = 13.00 🔹 [id: 2 | heter: 0.17 | inst: 436 | w: 0.09]
        education-num ∈ {1.00, 2.00, 3.00, …} (15 levels) 🔹 [id: 3 | heter: 0.22 | inst: 1883 | w: 0.38]
    marital-status ∈ {Divorced, Married-spouse-absent, Never-married, …} (6 levels) 🔹 [id: 4 | heter: 0.21 | inst: 2681 | w: 0.54]
        age < 20.65 🔹 [id: 5 | heter: 0.08 | inst: 304 | w: 0.06]
        age ≥ 20.65 🔹 [id: 6 | heter: 0.12 | inst: 2377 | w: 0.48]
--------------------------------------------------
Feature 8 - Statistics per tree level:
🌳 Tree Summary:
─────────────────
Level 0🔹heter: 0.25
    Level 1🔹heter: 0.22 | 🔻0.04 (14.10%)
        Level 2🔹heter: 0.16 | 🔻0.06 (25.85%)


capital-gain where (marital-status = Married-civ-spouse) and (education-num = 13.00)
heterogeneity 0.1674 · −34% vs global · n=436
capital-gain where (marital-status = Married-civ-spouse) and (education-num ∈ {1.00, 2.00, 3.00, …} (15 levels))
heterogeneity 0.2223 · −13% vs global · n=1,883
capital-gain where (marital-status ∈ {Divorced, Married-spouse-absent, Never-married, …} (6 levels)) and (age < 20.65)
heterogeneity 0.0844 · −67% vs global · n=304
capital-gain where (marital-status ∈ {Divorced, Married-spouse-absent, Never-married, …} (6 levels)) and (age ≥ 20.65)
heterogeneity 0.1234 · −52% vs global · n=2,377

2.2 · age

importance 0.0709heterogeneity 0.0862regions 1

Global effect

age global effect

Regional effects

A split on hours-per-week, marital-status into 3 regions was found (heterogeneity 0.086 → 0.055), but the decision sequence skips it: it adds only +0.7%, below the 1.0% threshold. The regional plots are omitted; reproduce them with find_regions.

2.3 · education-num

importance 0.0699heterogeneity 0.0404regions 4

Split on age, capital-gain, marital-status into 4 regions — worth +7.9% of explained variance on top of the splits above it; importance and heterogeneity here are the instance-weighted means over the subregions. The global counterpart is in the baseline.

Partition tree

Feature 2 - Full partition tree:
🌳 Full Tree Structure:
───────────────────────
education-num 🔹 [id: 0 | heter: 0.07 | inst: 5000 | w: 1.00]
    marital-status = Married-civ-spouse 🔹 [id: 1 | heter: 0.07 | inst: 2319 | w: 0.46]
        capital-gain < 4999.95 🔹 [id: 2 | heter: 0.06 | inst: 2115 | w: 0.42]
        capital-gain ≥ 4999.95 🔹 [id: 3 | heter: 0.01 | inst: 204 | w: 0.04]
    marital-status ∈ {Divorced, Married-spouse-absent, Never-married, …} (6 levels) 🔹 [id: 4 | heter: 0.04 | inst: 2681 | w: 0.54]
        age < 31.60 🔹 [id: 5 | heter: 0.01 | inst: 1319 | w: 0.26]
        age ≥ 31.60 🔹 [id: 6 | heter: 0.05 | inst: 1362 | w: 0.27]
--------------------------------------------------
Feature 2 - Statistics per tree level:
🌳 Tree Summary:
─────────────────
Level 0🔹heter: 0.07
    Level 1🔹heter: 0.05 | 🔻0.02 (27.01%)
        Level 2🔹heter: 0.04 | 🔻0.01 (19.91%)


education-num where (marital-status = Married-civ-spouse) and (capital-gain < 4999.95)
heterogeneity 0.0585 · −15% vs global · n=2,115
education-num where (marital-status = Married-civ-spouse) and (capital-gain ≥ 4999.95)
heterogeneity 0.0124 · −82% vs global · n=204
education-num where (marital-status ∈ {Divorced, Married-spouse-absent, Never-married, …} (6 levels)) and (age < 31.60)
heterogeneity 0.0101 · −85% vs global · n=1,319
education-num where (marital-status ∈ {Divorced, Married-spouse-absent, Never-married, …} (6 levels)) and (age ≥ 31.60)
heterogeneity 0.0457 · −34% vs global · n=1,362

2.4 · capital-loss

importance 0.0659heterogeneity 0.0836regions 4

Split on age, capital-gain, marital-status into 4 regions — worth +1.7% of explained variance on top of the splits above it; importance and heterogeneity here are the instance-weighted means over the subregions. The global counterpart is in the baseline.

Partition tree

Feature 9 - Full partition tree:
🌳 Full Tree Structure:
───────────────────────
capital-loss 🔹 [id: 0 | heter: 0.11 | inst: 5000 | w: 1.00]
    marital-status = Married-civ-spouse 🔹 [id: 1 | heter: 0.10 | inst: 2319 | w: 0.46]
        capital-gain < 4999.95 🔹 [id: 2 | heter: 0.10 | inst: 2115 | w: 0.42]
        capital-gain ≥ 4999.95 🔹 [id: 3 | heter: 0.05 | inst: 204 | w: 0.04]
    marital-status ∈ {Divorced, Married-spouse-absent, Never-married, …} (6 levels) 🔹 [id: 4 | heter: 0.10 | inst: 2681 | w: 0.54]
        age < 24.30 🔹 [id: 5 | heter: 0.05 | inst: 733 | w: 0.15]
        age ≥ 24.30 🔹 [id: 6 | heter: 0.08 | inst: 1948 | w: 0.39]
--------------------------------------------------
Feature 9 - Statistics per tree level:
🌳 Tree Summary:
─────────────────
Level 0🔹heter: 0.11
    Level 1🔹heter: 0.10 | 🔻0.01 (7.28%)
        Level 2🔹heter: 0.08 | 🔻0.02 (16.62%)


capital-loss where (marital-status = Married-civ-spouse) and (capital-gain < 4999.95)
heterogeneity 0.0979 · −9% vs global · n=2,115

the feature is constant inside this region — no curve to draw

heterogeneity 0.0482 · −55% vs global · n=204
capital-loss where (marital-status ∈ {Divorced, Married-spouse-absent, Never-married, …} (6 levels)) and (age < 24.30)
heterogeneity 0.0524 · −51% vs global · n=733
capital-loss where (marital-status ∈ {Divorced, Married-spouse-absent, Never-married, …} (6 levels)) and (age ≥ 24.30)
heterogeneity 0.0834 · −23% vs global · n=1,948

2.5 · relationship

importance 0.0525heterogeneity 0.0561regions 1

Global effect

relationship global effect

Regional effects

A split on age, marital-status into 3 regions was found (heterogeneity 0.056 → 0.046), but the decision sequence skips it: it adds only +0.3%, below the 1.0% threshold. The regional plots are omitted; reproduce them with find_regions.

2.6 · hours-per-week

importance 0.0351heterogeneity 0.0448regions 4

Split on age, capital-gain, marital-status into 4 regions — worth +1.0% of explained variance on top of the splits above it; importance and heterogeneity here are the instance-weighted means over the subregions. The global counterpart is in the baseline.

Partition tree

Feature 10 - Full partition tree:
🌳 Full Tree Structure:
───────────────────────
hours-per-week 🔹 [id: 0 | heter: 0.06 | inst: 5000 | w: 1.00]
    marital-status = Married-civ-spouse 🔹 [id: 1 | heter: 0.07 | inst: 2319 | w: 0.46]
        capital-gain < 4999.95 🔹 [id: 2 | heter: 0.07 | inst: 2115 | w: 0.42]
        capital-gain ≥ 4999.95 🔹 [id: 3 | heter: 0.01 | inst: 204 | w: 0.04]
    marital-status ∈ {Divorced, Married-spouse-absent, Never-married, …} (6 levels) 🔹 [id: 4 | heter: 0.04 | inst: 2681 | w: 0.54]
        age < 24.30 🔹 [id: 5 | heter: 0.00 | inst: 733 | w: 0.15]
        age ≥ 24.30 🔹 [id: 6 | heter: 0.04 | inst: 1948 | w: 0.39]
--------------------------------------------------
Feature 10 - Statistics per tree level:
🌳 Tree Summary:
─────────────────
Level 0🔹heter: 0.06
    Level 1🔹heter: 0.05 | 🔻0.01 (20.00%)
        Level 2🔹heter: 0.04 | 🔻0.01 (12.24%)


hours-per-week where (marital-status = Married-civ-spouse) and (capital-gain < 4999.95)
heterogeneity 0.0676 · −-6% vs global · n=2,115
hours-per-week where (marital-status = Married-civ-spouse) and (capital-gain ≥ 4999.95)
heterogeneity 0.0115 · −82% vs global · n=204
hours-per-week where (marital-status ∈ {Divorced, Married-spouse-absent, Never-married, …} (6 levels)) and (age < 24.30)
heterogeneity 0.0049 · −92% vs global · n=733
hours-per-week where (marital-status ∈ {Divorced, Married-spouse-absent, Never-married, …} (6 levels)) and (age ≥ 24.30)
heterogeneity 0.0384 · −40% vs global · n=1,948

3 · Global baseline — without regions

What you would believe about the split features without the regional analysis: their global mean effects, with the heterogeneity the accepted splits just explained still hiding inside the band. Compare with their subregions in the regional analysis above.

capital-gain

global importance 0.1135global heterogeneity 0.2545
capital-gain global effect (baseline)

education-num

global importance 0.0661global heterogeneity 0.0690
education-num global effect (baseline)

capital-loss

global importance 0.0461global heterogeneity 0.1081
capital-loss global effect (baseline)

hours-per-week

global importance 0.0395global heterogeneity 0.0638
hours-per-week global effect (baseline)