Skip to contents

Patient outcome prediction based on multi-omics data taking practitioners’ preferences into account. Calls prioritylasso::prioritylasso() from prioritylasso. Many parameters for this survival learner are the same as mlr_learners_surv.cv_glmnet as prioritylasso() calls glmnet::cv.glmnet() during training phase. Note that prioritylasso() has ways to deal with block-wise missing data, but this feature is not supported currently.

Prediction types

This learner returns three prediction types:

  1. lp: a vector containing the linear predictors (relative risk scores), where each score corresponds to a specific test observation. Calculated using prioritylasso::predict.prioritylasso().

  2. crank: same as lp.

  3. distr: a survival matrix in two dimensions, where observations are represented in rows and time points in columns. Calculated using mlr3proba::breslow() where the Breslow estimator is used for computing the baseline hazard.

Initial parameter values

  • family is set to "cox" for the Cox survival objective and cannot be changed

  • type.measure set to "deviance" (cross-validation measure)

Dictionary

This Learner can be instantiated via lrn():

lrn("surv.priority_lasso")

Meta Information

  • Task type: “surv”

  • Predict Types: “crank”, “distr”, “lp”

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

  • Required Packages: mlr3, mlr3proba, prioritylasso

Parameters

IdTypeDefaultLevelsRange
blocksuntyped--
max.coefuntypedNULL-
block1.penalizationlogicalTRUETRUE, FALSE-
lambda.typecharacterlambda.minlambda.min, lambda.1se-
standardizelogicalTRUETRUE, FALSE-
nfoldsinteger5\([1, \infty)\)
foldiduntypedNULL-
cvoffsetlogicalFALSETRUE, FALSE-
cvoffsetnfoldsinteger10\([1, \infty)\)
return.xlogicalTRUETRUE, FALSE-
include.allinterceptslogicalFALSETRUE, FALSE-
use.blocksuntyped"all"-
alignmentcharacterlambdalambda, fraction-
alphanumeric1\([0, 1]\)
bignumeric9.9e+35\((-\infty, \infty)\)
devmaxnumeric0.999\([0, 1]\)
dfmaxinteger-\([0, \infty)\)
epsnumeric1e-06\([0, 1]\)
epsnrnumeric1e-08\([0, 1]\)
excludeuntyped--
exmxnumeric250\((-\infty, \infty)\)
fdevnumeric1e-05\([0, 1]\)
gammauntyped--
groupedlogicalTRUETRUE, FALSE-
interceptlogicalTRUETRUE, FALSE-
keeplogicalFALSETRUE, FALSE-
lambdauntyped--
lambda.min.rationumeric-\([0, 1]\)
lower.limitsuntyped-Inf-
maxitinteger100000\([1, \infty)\)
mnlaminteger5\([1, \infty)\)
mxitinteger100\([1, \infty)\)
mxitnrinteger25\([1, \infty)\)
nlambdainteger100\([1, \infty)\)
offsetuntypedNULL-
parallellogicalFALSETRUE, FALSE-
penalty.factoruntyped--
pmaxinteger-\([0, \infty)\)
pminnumeric1e-09\([0, 1]\)
precnumeric1e-10\((-\infty, \infty)\)
standardize.responselogicalFALSETRUE, FALSE-
threshnumeric1e-07\([0, \infty)\)
trace.itinteger0\([0, 1]\)
type.gaussiancharacter-covariance, naive-
type.logisticcharacterNewtonNewton, modified.Newton-
type.multinomialcharacterungroupedungrouped, grouped-
upper.limitsuntypedInf-
relaxlogicalFALSETRUE, FALSE-

References

Simon K, Vindi J, Roman H, Tobias H, Anne-Laure B (2018). “Priority-Lasso: a simple hierarchical approach to the prediction of clinical outcome using multi-omics data.” BMC Bioinformatics, 19. doi:10.1186/s12859-018-2344-6 .

See also

Author

HarutyunyanLiana

Super classes

mlr3::Learner -> mlr3proba::LearnerSurv -> LearnerSurvPriorityLasso

Methods

Inherited methods


Method new()

Creates a new instance of this R6 class.


Method selected_features()

Selected features, i.e. those where the coefficient is non-zero.

Usage

LearnerSurvPriorityLasso$selected_features()

Returns

character().


Method clone()

The objects of this class are cloneable with this method.

Usage

LearnerSurvPriorityLasso$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

# Define a Task
task = tsk("grace")
# Create train and test set
ids = partition(task)
# check task's features
task$feature_names
#> [1] "age"        "los"        "revasc"     "revascdays" "stchange"  
#> [6] "sysbp"     
# partition features to 2 blocks
blocks = list(bl1 = 1:3, bl2 = 4:6)
# define learner
learner = lrn("surv.priority_lasso", blocks = blocks, block1.penalization = FALSE,
              lambda.type = "lambda.1se", standardize = TRUE, nfolds = 5)
# Train the learner on the training ids
learner$train(task, row_ids = ids$train)
# selected features
learner$selected_features()
#> [1] "age"        "los"        "revasc"     "revascdays"
# Make predictions for the test observations
pred = learner$predict(task, row_ids = ids$test)
pred
#> <PredictionSurv> for 330 observations:
#>  row_ids time status     crank        lp     distr
#>        3    2  FALSE 1.2755418 1.2755418 <list[1]>
#>        6    5  FALSE 1.2544833 1.2544833 <list[1]>
#>       14   12   TRUE 0.6423523 0.6423523 <list[1]>
#>      ---  ---    ---       ---       ---       ---
#>      993   53   TRUE 3.2680253 3.2680253 <list[1]>
#>      996   69   TRUE 3.3841130 3.3841130 <list[1]>
#>      999    3   TRUE 3.1355789 3.1355789 <list[1]>
# Score the predictions
pred$score()
#> surv.cindex 
#>   0.7468656