Skip to contents

Patient outcome prediction based on multi-omics data, taking practitioners' preferences into account. Calls prioritylasso::prioritylasso() from prioritylasso. Only binary classification is supported.

Scope and supported arguments

This learner intentionally exposes a focused subset of training and prediction arguments. It is designed to work well out of the box, without requiring extensive parameter tuning. Some arguments from cv.glmnet(), glmnet(), and predict.prioritylasso() are not included, because they are not consistently supported or forwarded through the full train/predict path (e.g. handling missing test data, or performing relaxed lasso fits).

Please open an issue if there is a need for supporting more learner parameters.

Initial parameter values

  • family is set to "binomial" and cannot be changed

Custom mlr3 parameters

  • adaptive.order: if TRUE, the priority order of blocks is estimated from the data following Herrmann et al. (2021), instead of using the user-supplied block order. For each block, a Ridge regression (alpha = 0) is fit using cv.glmnet() on that block alone. The importance of a block is measured by the mean absolute coefficient (MAC) score at the lambda.min value (the lambda giving minimum cross-validation error). A penalty factor of 1 / MAC is then assigned to each block. Blocks are sorted by increasing penalty factor, i.e., blocks with larger MAC (stronger average signal) receive higher priority (come first). Also, the block‑wise penalty factors are attached to the fitted model object as learner$model$block.penalty.factors.

This method is useful when no domain knowledge is available to specify block priority. In this step, data are standardized by default (standardize = TRUE), but this can be overridden by the learner's standardize parameter. lambda.min is always used to derive the block priority. Additional arguments such as nfolds, type.measure, weights and cox.ties (if provided) are forwarded to each block‑wise cv.glmnet() fit. The max.coef parameter, if supplied, it is re‑ordered accordingly to align with the new block order.

This parameter is ignored when fewer than two blocks are provided. It defaults to FALSE for backward compatibility.

Dictionary

This Learner can be instantiated via lrn():

lrn("classif.priority_lasso")

Meta Information

  • Task type: “classif”

  • Predict Types: “response”, “prob”

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

  • Required Packages: mlr3, prioritylasso

Parameters

IdTypeDefaultLevelsRange
type.measurecharacter-class, auc-
blocksuntyped--
max.coefuntypedNULL-
block1.penalizationlogicalTRUETRUE, FALSE-
lambda.typecharacterlambda.minlambda.min, lambda.1se-
standardizelogicalTRUETRUE, FALSE-
nfoldsinteger10\([3, \infty)\)
foldiduntypedNULL-
cvoffsetlogicalFALSETRUE, FALSE-
cvoffsetnfoldsinteger10\([1, \infty)\)
return.xlogicalTRUETRUE, FALSE-
lambdauntypedNULL-
groupedlogicalTRUETRUE, FALSE-
trace.itinteger0\([0, 1]\)
type.logisticcharacterNewtonNewton, modified.Newton-
include.allinterceptslogicalFALSETRUE, FALSE-
use.blocksuntyped"all"-
adaptive.orderlogicalFALSETRUE, 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 .

Herrmann, M., Probst, P., Hornung, R., Jurinovic, V., Boulesteix, L. A (2021). “Large-scale benchmark study of survival prediction methods using multi-omics data.” Briefings in Bioinformatics, 22(3), 1–15. doi:10.1093/BIB/BBAA167 .

See also

Author

HarutyunyanLiana

bblodfon

Super classes

mlr3::Learner -> mlr3::LearnerClassif -> LearnerClassifPriorityLasso

Methods

Inherited methods


LearnerClassifPriorityLasso$new()

Creates a new instance of this R6 class.


LearnerClassifPriorityLasso$selected_features()

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

Usage

LearnerClassifPriorityLasso$selected_features()

Returns

character().


LearnerClassifPriorityLasso$clone()

The objects of this class are cloneable with this method.

Usage

LearnerClassifPriorityLasso$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

# Define a Task
task = mlr3::as_task_classif(prioritylasso::pl_data, target = "pl_out")

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

# Define the Learner and set parameter values
learner = lrn("classif.priority_lasso", type.measure = "auc", standardize = FALSE,
  blocks = list(bp1 = 1:4, bp2 = 5:9, bp3 = 10:28, bp4 = 29:1028),
  max.coef = c(Inf, Inf, 10, 10))
print(learner)
#> 
#> ── <LearnerClassifPriorityLasso> (classif.priority_lasso): Priority Lasso ──────
#> • Model: -
#> • Parameters: type.measure=auc, blocks=<list>, max.coef=Inf,Inf,10,10,
#> standardize=FALSE
#> • Packages: mlr3 and prioritylasso
#> • Predict Types: [response] and prob
#> • Feature Types: logical, integer, and numeric
#> • Encapsulation: none (fallback: -)
#> • Properties: selected_features, twoclass, and weights
#> • Other settings: use_weights = 'use', predict_raw = 'FALSE'

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

# Selected features
learner$selected_features()
#>  [1] "b1.1"   "b1.2"   "b1.3"   "b1.4"   "b2.1"   "b2.2"   "b2.3"   "b2.4"  
#>  [9] "b2.5"   "b3.19"  "b3.2"   "b4.1"   "b4.10"  "b4.143" "b4.309" "b4.483"
#> [17] "b4.6"   "b4.641" "b4.670" "b4.834" "b4.937"

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

# Score the predictions
predictions$score()
#> classif.ce 
#>   0.280303