NEWS
randomPlantedForest 0.3.0
Major changes (#61)
- New
rpf() arguments controlling split-candidate sampling:
split_structure = "leaves": Defines what a split candidate is and how candidates are drawn.
One of "leaves" (default), "hist", "cur_trees_1", "cur_trees_2", or "res_trees"; see ?rpf for details.
max_candidates = 50: Maximum number of split candidates sampled per iteration.
split_decay_rate = 0.1: Exponential aging of repeatedly drawn but unchosen split candidates.
split_decay_rate = 0 corresponds to no aging and uniform sampling.
delete_leaves = TRUE: Whether a parent leaf is deleted when splitting along an existing dimension.
- Fitting results change: The new candidate-sampling defaults and a reworked internal RNG
mean that fits are not reproducible against previous versions, even with the same seed.
Install an older commit if exact reproduction of previous results is required.
- Seeded fits are now reproducible regardless of
nthreads: per-tree seeds are drawn from R's RNG,
so set.seed() gives identical forests for serial and multithreaded fits.
- Substantial speedups in fitting (cached per-leaf orderings, prefix sums) and reduced memory use
(training-only buffers are released after each tree family is built).
purify() gains arguments:
mode = 2: Purification algorithm; 2 is a new fast exact method, 1 is the legacy grid-based path.
nthreads = NULL: Purification is now multithreaded, defaulting to the fit's nthreads setting.
maxp_interaction = NULL: Optionally only compute purified components up to this interaction order.
- New
rpf() argument export_forest = FALSE: The flattened forest is no longer stored in the
fitted object by default, so rpf_object$forest is NULL unless export_forest = TRUE.
This reduces object size; predict(), purify(), and predict_components() are unaffected.
preprocess_predictors_predict() is now exported.
- Fixed a memory bug in the legacy purification path where the grid was sized one element too large,
causing out-of-bounds reads (crashes on Windows, silently wrong purification results elsewhere).
- Fixed a crash on Windows when fitting with
nthreads > 1, caused by a thread_local buffer
with a non-trivial destructor being destroyed at thread exit.
Other changes
- Internals in
src/ have been refactored into modular sub-files (#53)
rpf() now errors if a regression target is combined with a loss other than "L2".
- Allow features of type
logical, which are now converted via as.integer.
- The
parallel = TRUE|FALSE argument in rpf() has been substituted by an nthreads = 1L argument, allowing for more flexible parallelization.
The previous behavior only allowed for either no parallelization or using n-1 of n available cores.
The new implementation should be reasonably robust and the default behavior remains serial execution.
- Remove
SystemRequirements field from DESCRIPTION: Now the default C++ version is C++17 and
with a minor change to internal use of random numbers, randomPlantedForest is now compatible with C++11 through C++23.
- Add
remainder term to predict_components output for case where max_interaction supplied is smaller than max_interaction in rpf fit.
In that case, the m values don't sum up to the global predictions, so we add a remainder to allow reconstruction of that property.
randomPlantedForest 0.2.1
- Add
glex class to output of predict_components(), for extended functionality available with glex.
- Add
target_levels vector to output of predict_components() to aid multiclass handling.
Keeping track of levels is somewhat awkward since column names of $m need to be identifiable
regarding the target level.
randomPlantedForest 0.2.0
- Added a
NEWS.md file to track changes to the package.