The rejected splits
Description
The third component of effector's report: the REJECTED SPLITS table. Every split that was considered and refused, with the reason. The report shows its work.
Reading time
Approx. 4' to read.
What you see
In report.show(), right under the
explained variance ledger:
REJECTED SPLITS min gain 1.0%
────────────────────────────────────────────────────────────────────────
feature split on solo ΔR² reason
──────────────────────────────────────────────────────────────────────
✗ temp hr, hum +1.7% +0.9% below threshold
✗ yr hr, hum +1.5% -0.1% redundant
✗ workingday hr, yr +4.9% -4.3% redundant
✗ redundant: it would explain variance on its own (see solo),
but the accepted splits already account for it.
On the HTML page the same rows appear dimmed inside the decision sequence
table, one rejected · <feature> (on ...) row each, with the candidate's
region count and its heterogeneity before → after.
The section exists only when something was rejected; a run where every candidate is accepted (or none is proposed) prints nothing here.
Why show refusals at all
Because "why is workingday not split?" deserves a row, not a shrug. The
selection is greedy and it stops; everything it left behind is listed with
the number that condemned it. Nothing is silently dropped, so the report can
be audited, not just believed.
The two reasons
Both columns come from the same round: the moment the selection stopped, every remaining candidate was measured once more, on top of everything already accepted.
below threshold: the split still adds real variance (ΔR²positive), just less thanmin gain(the header repeats the cut:min gain 1.0%, frommin_r2_gain=0.01). Lower the threshold and these are the rows that would enter the ledger next.redundant: the split adds nothing, or even hurts (ΔR²zero or negative), because the accepted splits already explain its variance.
Read solo against ΔR²
workingday would have been worth +4.9% on its own: the second
strongest split in the model. But once hr is split (and hr's split
already conditions on workingday), it adds −4.3%. It is not
useless; it is redundant. The solo column is what separates the
two verdicts, and it is why the column exists.
How can ΔR² be negative?
Two splits explaining the same variance double count it: the summed
surrogate moves twice for one underlying pattern, and its R² drops. A
negative ΔR² is the selection catching that overlap, not a numerical
accident.
Rejected does not mean fake
Every rejected split is a real split: find_regions proposed it because it
genuinely reduces its feature's heterogeneity. The lesson of this table is
that a heterogeneity drop and an explained-variance gain are different
currencies: a split can resolve real spread inside its own feature while
adding nothing to what the accepted splits already explain of the model.
In the regional analysis section of the HTML page, a rejected feature stays global, with a note pointing back at this table; its found partition is not drawn as if it had been accepted.
Where to next
- The ranked features: the next component
- effector's report: back to the guide's map
- The explained variance ledger: the accepted rows