Skip to contents

Random Planted Forest: A directly interpretable tree ensemble.

Calls randomPlantedForest::rpf() from 'randomPlantedForest'.

Dictionary

This Learner can be instantiated via lrn():

lrn("regr.rpf")

Meta Information

  • Task type: “regr”

  • Predict Types: “response”

  • Feature Types: “logical”, “integer”, “numeric”, “factor”, “ordered”

  • Required Packages: mlr3, randomPlantedForest

Parameters

IdTypeDefaultLevelsRange
max_interactioninteger1\([0, \infty)\)
max_interaction_rationumeric-\([0, 1]\)
max_interaction_limitinteger-\([1, \infty)\)
ntreesinteger50\([1, \infty)\)
splitsinteger30\([1, \infty)\)
split_tryinteger10\([1, \infty)\)
t_trynumeric0.4\([0, 1]\)
deterministiclogicalFALSETRUE, FALSE-
nthreadsinteger1\([1, \infty)\)
cvlogicalFALSETRUE, FALSE-
purifylogicalFALSETRUE, FALSE-

Custom mlr3 parameters

  • max_interaction:

    • This hyperparameter can alternatively be set via max_interaction_ratio as max_interaction = max(ceiling(max_interaction_ratio * n_features), 1). The parameter max_interaction_limit can optionally be set as an upper bound, such that max_interaction_ratio * min(n_features, max_interaction_limit) is used instead. This is analogous to mtry.ratio in classif.ranger, with max_interaction_limit as an additional constraint. The parameter max_interaction_limit is initialized to Inf.

Installation

Package 'randomPlantedForest' is not on CRAN and has to be installed from GitHub via remotes::install_github("PlantedML/randomPlantedForest").

References

Hiabu, Munir, Mammen, Enno, Meyer, T. J (2023). “Random Planted Forest: a directly interpretable tree ensemble.” arXiv preprint arXiv:2012.14563. doi:10.48550/ARXIV.2012.14563 .

See also

Author

jemus42

Super classes

mlr3::Learner -> mlr3::LearnerRegr -> LearnerRegrRandomPlantedForest

Methods

Inherited methods


Method new()

Creates a new instance of this R6 class.


Method clone()

The objects of this class are cloneable with this method.

Usage

LearnerRegrRandomPlantedForest$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

# Define the Learner
learner = mlr3::lrn("regr.rpf")
print(learner)
#> <LearnerRegrRandomPlantedForest:regr.rpf>: Random Planted Forest
#> * Model: -
#> * Parameters: max_interaction_limit=Inf
#> * Packages: mlr3, randomPlantedForest
#> * Predict Types:  [response]
#> * Feature Types: logical, integer, numeric, factor, ordered
#> * Properties: -

# Define a Task
task = mlr3::tsk("mtcars")

# Create train and test set
ids = mlr3::partition(task)

# Train the learner on the training ids
learner$train(task, row_ids = ids$train)

print(learner$model)
#> -- Regression Random Planted Forest --
#> 
#> Formula: NULL 
#> Fit using 10 predictors and main effects only.
#> Forest is _not_ purified!
#> 
#> Called with parameters:
#> 
#>             loss: L2
#>           ntrees: 50
#>  max_interaction: 1
#>           splits: 30
#>        split_try: 10
#>            t_try: 0.4
#>            delta: 0
#>          epsilon: 0.1
#>    deterministic: FALSE
#>         nthreads: 1
#>           purify: FALSE
#>               cv: FALSE


# Make predictions for the test rows
predictions = learner$predict(task, row_ids = ids$test)

# Score the predictions
predictions$score()
#> regr.mse 
#>  2.26242