arf (development version)
- Add mirai/mori parallel backend as an alternative to foreach/doParallel (#62)
- Shares large read-only inputs (training data, forest, learned parameters) across workers via mori, lowering memory use in
adversarial_rf(),forde(),forge(),expct(), andlik() - Enable with active mirai daemons or
options(arf.backend), see?arf-options - Parallel calls now report the backend in use once per session, including when
parallel = TRUEfinds no backend and runs sequentially; silence withoptions(arf.verbose = FALSE)
- Shares large read-only inputs (training data, forest, learned parameters) across workers via mori, lowering memory use in
- Reduce peak memory of
expct()by processing conditions in bounded blocks (16x lower on one large internal case, at 12-27% more run time; tune viaoptions(arf.block_rows), see?arf-options) - Reduce memory and dispatch overhead in
forde()(fused per-tree parameter pass, per-tree coverage) andlik()(per-batch reduction) - Fix
forge()andlik()failing under non-forkingforeachadapters (doParallelPSOCK clusters,doFuturemultisession) with “object not found” errors: parallel worker bodies now take all inputs as explicit arguments (#62) - Fix
darf(),rarf()andearf()ignoring a pre-trainedarforparamspassed via...: they retrained and recomputed anyway, then failed with “formal argument ‘params’ matched by multiple actual arguments” - Fix a crash when arf runs with
parallel = TRUEinside a forked worker (future::plan(multicore),mclapply(), fork-baseddoParallel) while mirai daemons exist in the parent process: the child inherited the daemon connection and used it, which aborts the process since mirai is not fork-safe. Forked children now ignore the parent’s daemons and use theforeachpath; forcingoptions(arf.backend = "mirai")there errors with an explanation
arf 0.2.5
CRAN release: 2026-09-21
-
Behavior change: New
mtryargument foradversarial_rf()with defaultmax(2, floor(sqrt(p)))instead of ranger’sfloor(sqrt(p)), which gavemtry = 1for fewer than 4 features (#59) - Export
sample_from_leaves()for intra-leaf marginal sampling - Avoid fractional recycling of factor column indices in
sample_from_leaves()(#63) - Fix
nomatch = "force"fallback inforge()andexpct()withevidence_row_mode = "separate"when evidence rows match no leaf (requiresfinite_bounds != "no"inforde()): errored withdata.tableinput, andexpct()silently filled impossible rows with misaligned values and returnedNA-padded evidence columns for valid rows (#67)
arf 0.2.3
- Add impute() function for direct missing data imputation with ARF
- Add one-line functions darf(), earf(), rarf()
arf 0.2.2
- Faster and vectorized conditional sampling
- Use min.bucket argument from ranger to avoid pruning if possible
- Option to sample NAs in generated data if original data contains NAs
- Stepsize in forge() to reduce memory usage
- Option for local and global finite bounds
arf 0.2.0
CRAN release: 2024-01-24
- Vectorized adversarial resampling
- Speed boost for compiling into a probabilistic circuit
- Conditional densities and sampling
- Bayesian solution for invariant continuous data within leaf nodes
- New function for computing (conditional) expectations
- Options for missing data
