NEWS
xplaineff 0.1.1 (2026-09-29)
- Added the introductory vignette
vignette("xplaineff") with PD and ALE examples on synthetic and bike-sharing data (no issue).
GadgetTree$new() now rejects n_quantiles < 1 up front (no issue).
- The PD split search no longer writes NaN replacements back into the caller's effect matrices and copies coerced non-double inputs, and it excludes observations with a missing split-feature value from both children and from the parent totals, matching
Node$create_children() (no issue).
- The ALE split sweep skips observations without a valid interval index instead of computing an out-of-range position (no issue).
- Regional PD plots now place observation points of categorical features on the plotted levels, also in child nodes that lack some levels (no issue).
- Roxygen markdown is enabled and
GadgetTree is no longer marked as an internal help topic (no issue).
AleStrategy$fit() now reports a clear error when model is missing, and GadgetTree$plot() for ALE trees errors on unknown arguments instead of ignoring them (no issue).
- Regional PD plots no longer add an invisible observation layer when
show_point = FALSE (no issue).
- Removed unused internal helpers and imports; the ALE split sweep skips non-finite local effects instead of letting them poison the running sums (no issue).
xplaineff 0.1.0 (2026-09-14)
- Package renamed to xplaineff for CRAN submission (no issue).
- AleStrategy categorical splits now apply ordered-prefix partitions consistently in fitted trees and display category sets for those splits (no issue).
- AleStrategy now accepts a bare prediction function as
model in the default ALE prediction path (no issue).
- AleStrategy split search now skips ALE effect components with numerically zero heterogeneity while keeping all split candidate features available (no issue).
- AleStrategy and PdStrategy now prune negligible effect components during split search while preserving all split candidate features and full effect grids (no issue).
- AleStrategy and PdStrategy now default to
auto precompute engine selection while keeping explicit cpp and r engines as compatibility options (no issue).
- AleStrategy now supports
categorical_split = "exhaustive" for level-set searches over categorical ALE split candidates while retaining ordered-prefix splits as the default (no issue).
- AleStrategy split search now uses the bias-corrected self-gain ranking objective for ALE self-feature splits (no issue).
- AleStrategy now uses only the selected split's objective rows when multiple ALE split candidates tie (no issue).
- calculate_ale() and calculate_ale_fast() now preserve fractional interval bounds for integer features and restore shared prediction scratch data between features (no issue).
- calculate_ale_fast() now normalizes custom predict_fun outputs like the R ALE path and errors on prediction length mismatches (no issue).
- calculate_pd() now routes custom
predict_fun calls through the cached R-side PD stack to avoid slow data-frame reconstruction in the C++ stacker (no issue).
- calculate_pd() now uses a row-major full-ICE prediction layout for native ranger regression models under
pd_engine = "auto" (no issue).
- compute_ice_r() now preserves fractional grid values for cached integer features in the PD R backend (no issue).
- default_predict_fun() now uses direct regression prediction paths for native
ranger, native and mlr3 rpart, and native and mlr3 xgboost models when no custom predict_fun is supplied. It also skips redundant feature subsetting for already aligned prediction data (no issue).
- extract_split_info() keeps categorical split level sets out of the default summary table (no issue).
- extract_split_info() now omits internal split timings by default and can include them with
include_timing = TRUE (no issue).
- PdStrategy now avoids redundant re-centering for already centered full-grid PD matrices and uses a cache-friendly exact split-search layout (no issue).
- PdStrategy now supports
categorical_split = "exhaustive" for level-set searches over categorical PD split candidates while retaining one-vs-rest as the default and guarding large level counts with max_exhaustive_levels (no issue).
- plot_tree_pd() now displays categorical split conditions as category sets instead of equality labels (no issue).
- plot_tree_pd() now names returned node plots with actual tree node ids instead of depth-local positions (no issue).
- prepare_split_data_pd() now infers effect features from precomputed PD/ICE results when feature_set is omitted and still uses all non-target columns as split candidates (no issue).