Ranger Survival Learner
mlr_learners_surv.ranger.Rd
Random survival forest.
Calls ranger::ranger()
from package ranger.
Prediction types
This learner returns two prediction types:
distr
: a survival matrix in two dimensions, where observations are represented in rows and (unique event) time points in columns. Calculated using the internalranger::predict.ranger()
function.crank
: the expected mortality usingmlr3proba::.surv_return()
.
Custom mlr3 parameters
mtry
: This hyperparameter can alternatively be set via our hyperparametermtry.ratio
asmtry = max(ceiling(mtry.ratio * n_features), 1)
. Note thatmtry
andmtry.ratio
are mutually exclusive.
Initial parameter values
num.threads
is initialized to 1 to avoid conflicts with parallelization via future.
Meta Information
Task type: “surv”
Predict Types: “crank”, “distr”
Feature Types: “logical”, “integer”, “numeric”, “character”, “factor”, “ordered”
Required Packages: mlr3, mlr3proba, mlr3extralearners, ranger
Parameters
Id | Type | Default | Levels | Range |
alpha | numeric | 0.5 | \((-\infty, \infty)\) | |
always.split.variables | untyped | - | - | |
holdout | logical | FALSE | TRUE, FALSE | - |
importance | character | - | none, impurity, impurity_corrected, permutation | - |
keep.inbag | logical | FALSE | TRUE, FALSE | - |
max.depth | integer | NULL | \([0, \infty)\) | |
min.node.size | integer | 5 | \([1, \infty)\) | |
minprop | numeric | 0.1 | \((-\infty, \infty)\) | |
mtry | integer | - | \([1, \infty)\) | |
mtry.ratio | numeric | - | \([0, 1]\) | |
num.random.splits | integer | 1 | \([1, \infty)\) | |
num.threads | integer | 1 | \([1, \infty)\) | |
num.trees | integer | 500 | \([1, \infty)\) | |
oob.error | logical | TRUE | TRUE, FALSE | - |
regularization.factor | untyped | 1 | - | |
regularization.usedepth | logical | FALSE | TRUE, FALSE | - |
replace | logical | TRUE | TRUE, FALSE | - |
respect.unordered.factors | character | ignore | ignore, order, partition | - |
sample.fraction | numeric | - | \([0, 1]\) | |
save.memory | logical | FALSE | TRUE, FALSE | - |
scale.permutation.importance | logical | FALSE | TRUE, FALSE | - |
seed | integer | NULL | \((-\infty, \infty)\) | |
split.select.weights | numeric | - | \([0, 1]\) | |
splitrule | character | logrank | logrank, extratrees, C, maxstat | - |
verbose | logical | TRUE | TRUE, FALSE | - |
write.forest | logical | TRUE | TRUE, FALSE | - |
min.bucket | integer | 3 | \((-\infty, \infty)\) | |
time.interest | integer | NULL | \([1, \infty)\) | |
node.stats | logical | FALSE | TRUE, FALSE | - |
References
Wright, N. M, Ziegler, Andreas (2017). “ranger: A Fast Implementation of Random Forests for High Dimensional Data in C++ and R.” Journal of Statistical Software, 77(1), 1–17. doi:10.18637/jss.v077.i01 .
Breiman, Leo (2001). “Random Forests.” Machine Learning, 45(1), 5–32. ISSN 1573-0565, doi:10.1023/A:1010933404324 .
See also
as.data.table(mlr_learners)
for a table of available Learners in the running session (depending on the loaded packages).Chapter in the mlr3book: https://mlr3book.mlr-org.com/basics.html#learners
mlr3learners for a selection of recommended learners.
mlr3cluster for unsupervised clustering learners.
mlr3pipelines to combine learners with pre- and postprocessing steps.
mlr3tuning for tuning of hyperparameters, mlr3tuningspaces for established default tuning spaces.
Super classes
mlr3::Learner
-> mlr3proba::LearnerSurv
-> LearnerSurvRanger
Methods
Method importance()
The importance scores are extracted from the model slot variable.importance
.
Returns
Named numeric()
.
Examples
# Define the Learner
learner = mlr3::lrn("surv.ranger", importance = "permutation")
print(learner)
#> <LearnerSurvRanger:surv.ranger>: Random Forest
#> * Model: -
#> * Parameters: importance=permutation, num.threads=1
#> * Packages: mlr3, mlr3proba, mlr3extralearners, ranger
#> * Predict Types: [crank], distr
#> * Feature Types: logical, integer, numeric, character, factor, ordered
#> * Properties: importance, oob_error, weights
# Define a Task
task = mlr3::tsk("grace")
# 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)
#> Ranger result
#>
#> Call:
#> ranger::ranger(formula = NULL, dependent.variable.name = targets[1L], status.variable.name = targets[2L], data = task$data(), case.weights = task$weights$weight, importance = "permutation", num.threads = 1L)
#>
#> Type: Survival
#> Number of trees: 500
#> Sample size: 670
#> Number of independent variables: 6
#> Mtry: 3
#> Target node size: 3
#> Variable importance mode: permutation
#> Splitrule: logrank
#> Number of unique death times: 89
#> OOB prediction error (1-C): 0.171529
print(learner$importance())
#> revascdays revasc age los sysbp stchange
#> 0.158043439 0.080453867 0.027755859 0.021590748 0.010548394 0.004332893
# Make predictions for the test rows
predictions = learner$predict(task, row_ids = ids$test)
# Score the predictions
predictions$score()
#> surv.cindex
#> 0.8705809