Complexity units
HUGIML exposes three complementary complexity measures through one generic interface.
Model units
A coarse count of active fitted components in the complete model.
Linear models: active fitted terms.
Decision trees and ensembles: active terminal leaves.
RuleFit: active linear terms and active rules.
EBM: active additive terms.
HUGIML RPTE: active terminal leaves plus active direct terms.
Model inspection units
The expanded burden of inspecting the complete fitted model.
HUGIML linear terms are expanded into their original source elements.
Tree models sum the conditions on every active root-to-leaf path.
RuleFit sums direct linear terms and the literals in every active rule.
EBM counts active term-score cells.
HUGIML RPTE sums every active terminal path and active direct source terms.
get_complexity(model) returns this measure by default.
Instance inspection units
The expanded burden of inspecting one prediction.
A tree contributes only the path reached by that instance.
An ensemble contributes a reached path when its reached terminal output is active.
HUGIML RPTE adds all active direct terms to the reached paths.
Direct linear terms count for every instance.
HUGIML patterns, augmented pairs, and RuleFit rules count only when they carry non-zero evidence for that instance.
EBM terms count when their row-specific score contribution is non-zero.
Intercepts are excluded.
For an RPTE model and row x:
instance inspection units(x)
= sum of expanded conditions on reached active leaf paths
+ expanded active direct terms
For the HUGIML linear branch, active original/direct terms count for every row. Active pattern and augmented-pair terms count only when their transformed value is non-zero for that row, and each counted term is expanded into its source elements.
get_instance_inspection_units(model, X) returns one integer count per row.
get_complexity_report(model, X=X) adds the mean, sample standard deviation,
standard error, and two-sided Student-t confidence interval.
from hugiml import (
get_complexity,
get_complexity_report,
get_instance_inspection_units,
)
model_inspection_units = get_complexity(model)
model_units = get_complexity(model, "model units")
instance_counts = get_instance_inspection_units(model, X_test)
instance_mean = get_complexity(model, "instance inspection units", X=X_test)
report = get_complexity_report(model, X=X_test, confidence_level=0.95)
For nested cross-validation, instance counts are evaluated only on outer-test folds. Fold sufficient statistics are pooled so each dataset row appears once in the dataset mean and confidence interval. Cross-dataset summaries give each dataset equal weight and compute a separate confidence interval across dataset means.