Learning Auditable Classifier Models: Source-Disjoint Tree Ensembles
Abstract
Predictive models in clinical and regulated settings must be accurate and fully auditable. Tree ensembles deliver strong accuracy on tabular data, but their sequential boosting couples structure discovery with coefficient estimation, making compact per-prediction auditing difficult. Interpretable alternatives impose structural constraints that limit expressiveness: generalized additive models typically restrict interactions to pairwise terms and post-hoc rule extractors produce overlapping rules that hinder compact interpretation. We introduce Residual Pattern Tree Ensemble (RPTE), a three-stage learning approach, that is built on three key principles: bounded feature budget, source disjointness, and separate coefficient estimation. Stage1 builds a supervised symbolic feature vocabulary. Stage2 grows shallow trees under a source-disjointness constraint, where each raw variable is allocated to at most one tree, and retains only the discovered tree structures. Stage~3 solves a single -regularized logistic regression over leaf-region indicators, yielding jointly optimal sparse coefficients. This learning approach ensures that every prediction decomposes into an algebraic sum of named, non-overlapping rule contributions, enabling full auditability by design. Empirical evaluation on twelve clinical-domain binary classification benchmarks using repeated stratified 5-fold cross-validation shows that RPTE performs competitively against tuned opaque ensembles and interpretable baselines. RPTE reduces model inspection units by 9 to 87 relative to XGBoost and maintains lower audit complexity than EBM on all 12 datasets. RuleFit requires comparable or fewer inspection units on three datasets where its rule count is small, but without source-disjointness guarantees. The source code is available at this https URL.
Figures & tables
| Property | RPTE | RuleFit | EBM | FIGS | SIRUS | CORELS | XGBoost |
| Source disjointness | Enforced | No | No | No | No | No | No |
| Exact source decomposition | Yes | No | Term wise | No | No | N/A | No |
| Separate structure/ weight fit | Yes | Yes | No | Optional refit | Fixed average | N/A | No |
| Discovered interactions | max depth | Tree size | Pairwise ∗ | max depth | max depth | Pre-mined | max depth |
| Bounded audit load | Hard | L1/soft | Interaction cap | Hard split cap | Hard rule cap | -implied | Indirect |
| Native contribution unit | Leaf/ direct term | Rule/ linear term | Term score | Leaf | Rule output | First matching rule | Leaf |
| Symbol | Description |
| Number of observations and raw variables | |
| User-specified feature budget | |
| Feature vocabulary, | |
| Source set of column , , | |
| Maximum boosting rounds | |
| Maximum leaves of tree |
| Dataset | Short | Balance | Ratio | Domain | ||
| lupus | lupus | 87 | 3 | 0.40 | 1.5:1 | SLE diagnosis |
| postop. patient data | postop. | 88 | 8 | 0.27 | 2.7:1 | Discharge planning |
| appendicitis | append. | 106 | 7 | 0.20 | 4.0:1 | Appendicitis diagnosis |
| corral | corral | 160 | 6 | 0.44 | 1.3:1 | Structured interaction |
| hepatitis | hepatitis | 155 | 19 | 0.21 | 3.8:1 | Hepatitis survival |
| prnn_crabs | crabs | 200 | 7 | 0.50 | 1.0:1 | Morphological class. |
| Dataset | RPTE | XGBoost | LightGBM | RF | EBM | RuleFit |
| lupus | 0.768 | 0.772 | 0.775 | 0.754 | 0.806 | 0.730 |
| postop. | 0.432 | 0.440 | 0.426 | 0.333 | 0.407 | 0.443 |
| append. | 0.797 | 0.806 | 0.797 | 0.818 | 0.847 | 0.774 |
| corral | 1.000 | 1.000 | 1.000 | 0.998 | 1.000 | 1.000 |
| crabs | 0.974 | 0.976 | 0.977 | 0.967 | 0.983 | 0.997 |
| hepatitis | 0.790 | 0.793 | 0.782 | 0.868 | 0.848 | 0.793 |
| Comparison | Med. AUC | Record | |||
| RPTE vs XGBoost | 0 | 0.001 | 0.005 ∗ | 0-1-11 | |
| RPTE vs LightGBM | 16 | 0.148 | 0.442 | 3-1-8 | |
| RPTE vs RF | 23 | 0.233 | 0.467 | 4-0-8 | |
| RPTE vs EBM | 5 | 0.010 | 0.039 ∗ | 1-1-10 | |
| RPTE vs RuleFit | 28 | 0.700 | 0.700 | 5-1-6 |
| Dataset | RPTE | XGBoost | LightGBM | RF | EBM | RuleFit |
| lupus | 10 | 760 (80 ) | 744 (78 ) | 2,807 (294 ) | 159 (17 ) | 59 (6 ) |
| postop. | 16 | 211 (13 ) | 73 (5 ) | 4,587 (294 ) | 33 (2 ) | 98 (6 ) |
| append. | 20 | 660 (34 ) | 992 (51 ) | 1,607 (82 ) | 657 (34 ) | 75 (4 ) |
| corral | 18 | 1,600 (87 ) | 3,074 (167 ) | 3,455 (188 ) | 32 (2 ) | 51 (3 ) |
| crabs | 39 | 1,894 (49 ) | 4,544 (118 ) | 7,557 (196 ) | 1,033 (27 ) | 55 (1.44 ) |
| hepatitis | 40 | 600 (15 ) | 497 (13 ) | 3,761 (95 ) | 368 (9 ) | 80 (2 ) |
| Metric | RPTE | XGBoost | LightGBM | RF | EBM | RuleFit |
| AUC | 0.830 (.850) | 0.838 (.856) | 0.836 (.851) | 0.837 (.889) | 0.853 (.881) | 0.831 (.845) |
| MIU | 72 (37) | 1,773 (1,034) | 3,244 (1,245) | 8,759 (4,844) | 13,597 (514) | 78 (68) |
| IIU | 30.0 (14.4) | 279.2 (216.9) | 317.5 (180.3) | 341.7 (321.5) | 28.7 (14.5) | 78.1 (67.5) |
| Dataset | AUC | AUC | AUC | MIU | MIU | MIU |
| default | strict | default | strict | |||
| lupus | 0.768 | 0.750 | 10 | 11 | ||
| postop. | 0.432 | 0.454 | 16 | 13 | ||
| append. | 0.797 | 0.751 | 20 | 16 | ||
| corral | 1.000 | 1.000 | 0.000 | 18 | 10 | |
| crabs | 0.974 | 0.927 | 39 | 40 |
| Configuration | AUC | AUC | MIU | IIU |
| RPTE estimator | ||||
| Full RPTE (HUG + augmented pairs) | 0.830 | – | 72 | 30.0 |
| HUG, no augmentation | 0.819 | 0.011 | 62 | 18.8 |
| Frequent top- vocabulary | 0.825 | 0.005 | 131 | 25.7 |
| Original features only | 0.805 | 0.025 | 127 | 15.8 |
| No leaf reassignment | 0.809 | 0.022 | 120 | 12.6 |
| Comparison | Record | |||
| Full RPTE vs original only | 8 | 0.0122 | 0.0977 | 11–0–1 |
| Full RPTE vs no reassignment | 5 | 0.0098 | 0.0879 | 10–1–1 |
| Full RPTE vs HUG no augmentation | 23 | 0.2334 | 0.9336 | 8–0–4 |
| HUG no augmentation vs frequent RPTE | 33 | 0.6772 | 1.000 | 7–0–5 |
| Frequent RPTE vs frequent XGBoost | 15 | 0.1230 | 0.6152 | 2–1–9 |
| HUG no-augmentation RPTE vs corresponding XGBoost | 16 | 0.0771 | 0.4629 | 2–0–10 |
| RPTE | XGBoost | LightGBM | RF | EBM | RuleFit | |
| Tuning | 26.2 (62.4) | 16.0 (29.2) | 11.7 (36.8) | 9.7 (17.3) | 382.1 (688.4) | 112.2 (111.5) |
| Fit | 1.987 (5.431) | 0.783 (1.510) | 0.464 (1.452) | 0.727 (1.786) | 24.551 (52.971) | 6.009 (9.672) |
| Predict | 0.019 (0.041) | 0.003 (0.003) | 0.005 (0.013) | 0.012 (0.009) | 0.004 (0.012) | 0.090 (0.049) |
| Dataset | Pattern signature | Folds | Domain concepts matched |
| Heart-c | {cp, oldpeak, thal} | 4/15 | Ischaemia + anatomical evidence |
| {ca, cp, oldpeak, sex, slope} | 3/15 | Ischaemia + anatomical + sex | |
| {ca, cp, oldpeak, thal, thalach, trestbps} | 2/15 | Ischaemia + anatomical + baseline | |
| WDBC | {mean_concavity, worst_area} | 3/15 | Nuclear size + boundary |
| {worst_concave_pts, worst_perim., worst_texture} | 3/15 | Nuclear size + boundary | |
| {mean_concave_pts, worst_perim.} | 3/15 | Nuclear size + boundary |
| Dataset | Folds | Rule A | Rule B | Cov. J |
| WDBC | 0 vs 9 | worst_perim 106.0 AND worst_concave_pts 0.135 AND radius_err 0.596 3 features, coeff | worst_perim 106.0 AND worst_compact mean_area 201.0 AND area_err 46.9 AND worst_concave_pts 0.135 5 features, coeff | .987 |
| 5 vs 14 | worst_radius 16.8 AND worst_concave_pts 0.136 AND area_err 38.6 AND smooth_err 0.003 4 features, coeff | worst_perim 111.5 AND worst_concave_pts 0.136 AND area_err 38.6 AND smooth_err 0.003 4 features, coeff | .984 | |
| Heart-c | 1 vs 4 | cp thal 2.5 AND oldpeak 0.65 3 features, coeff | cp [0,1), oldpeak [0.8, 6.2) AND trestbps thal 290 4 features, coeff | .918 |
| 9 vs 11 | cp oldpeak AND ca 0.5 AND chol thal 628.5 5 features, coeff | cp oldpeak AND ca 0.5 AND trestbps thal 317.5 AND chol 323 6 features, coeff | .902 |
| Dataset | Removed feature | Reference rule | Alternative rule | Cov. |
| WDBC | worst_ symmetry | worst_perimeter AND worst_concave_points AND radius_error coefficient | worst_perimeter AND worst_concave_points AND area_error coefficient | 1.000 |
| worst_ perimeter | worst_perimeter AND worst_concave_points AND radius_error coefficient | worst_radius AND worst_concave_points AND area_error AND smoothness_error AND worst_texture coefficient | .857 | |
| Heart-c | fbs | cp oldpeak AND thal coefficient | cp oldpeak AND trestbps thal coefficient | .944 |
| exang | cp oldpeak AND thal AND NOT(ca , cp ) AND trestbps thalach coefficient | cp oldpeak AND thal AND ca AND trestbps thalach coefficient | 1.000 |
Appendix figures & tables3 assets
Supplementary material from the paper’s appendix.
Appendix
| RuleFit | |
| Conflicting overlap | prnn_crabs : index , FL , BD (coef. , train ) and index , FL , BD (coef. , train ). The rules overlap on 36 training and 10 held-out observations (train/test Jaccard ), so both opposing contributions apply to nearly the same subgroup. |
| Nested thresholds | prnn_crabs : seven { FL , index } rules form 10 nested pairs. Example: index , FL ( ) within index , FL ( ); train/test Jaccard . |
| Activation multiplicity | Mean active rules per held-out observation: – ; maximum ( prnn_crabs ). |
| FIGS | |
| Conflicting overlap | Hepatitis: BILIRUBIN , ALBUMIN (Tree 1, , ) and BILIRUBIN , ALBUMIN (Tree 3, , ); train/test Jaccard . |
| Nested thresholds | Hepatitis: ASCITES , BILIRUBIN , contains , BILIRUBIN , ; 10 shared training observations, Jaccard . |
| Method | Tuned parameters | Fixed settings |
| RPTE | , , , Sequential RPTE estimator | Package defaults |
| XGBoost | ; ; | ; ; early stopping after 20 rounds |
| LightGBM | ; ; | ; |
| Random Forest | ; ; | |
| EBM | ; ; | Package defaults |
| RuleFit | ; ; | Package defaults |
| Full RPTE | HUG no aug. | Frequent | Original only | No reassign. | ||||||
| Dataset | AUC | MIU | AUC | MIU | AUC | MIU | AUC | MIU | AUC | MIU |
| lupus | 0.768 | 10 | 0.758 | 8 | 0.755 | 39 | 0.767 | 36 | 0.754 | 39 |
| postop. | 0.432 | 16 | 0.479 | 6 | 0.475 | 35 | 0.467 | 35 | 0.388 | 39 |
| append. | 0.797 | 20 | 0.780 | 16 | 0.780 | 60 | 0.760 | 61 | 0.756 | 53 |
| corral | 1.000 | 18 | 0.883 | 24 | 1.000 | 13 | 0.883 | 43 | 1.000 | 13 |
| crabs | 0.974 | 39 | 0.934 | 31 | 0.909 | 86 | 0.904 | 85 | 0.928 | 55 |