Skip to contents

Patient outcome prediction based on multi-omics data taking practitioners’ preferences into account. Calls prioritylasso::prioritylasso() from prioritylasso.

Initial parameter values

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

  • type.measure set to "mse" (cross-validation measure) and cannot be changed

Dictionary

This Learner can be instantiated via lrn():

lrn("regr.priority_lasso")

Meta Information

  • Task type: “regr”

  • Predict Types: “response”

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

  • Required Packages: mlr3, prioritylasso

Parameters

IdTypeDefaultLevelsRange
blocksuntyped--
max.coefuntypedNULL-
block1.penalizationlogicalTRUETRUE, FALSE-
lambda.typecharacterlambda.minlambda.min, lambda.1se-
standardizelogicalTRUETRUE, FALSE-
nfoldsinteger10\([3, \infty)\)
foldiduntypedNULL-
cvoffsetlogicalFALSETRUE, FALSE-
cvoffsetnfoldsinteger10\([1, \infty)\)
scale.ylogicalFALSETRUE, FALSE-
return.xlogicalTRUETRUE, FALSE-
lambdauntypedNULL-
groupedlogicalTRUETRUE, FALSE-
trace.itinteger0\([0, 1]\)
type.gaussiancharacter-covariance, naive-
include.allinterceptslogicalFALSETRUE, FALSE-
use.blocksuntyped"all"-
adaptive.orderlogicalFALSETRUE, FALSE-

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.

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.

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::LearnerRegr -> LearnerRegrPriorityLasso

Methods

Inherited methods


LearnerRegrPriorityLasso$new()

Creates a new instance of this R6 class.


LearnerRegrPriorityLasso$selected_features()

Selected features when coef is positive

Usage

LearnerRegrPriorityLasso$selected_features()

Returns

character().


LearnerRegrPriorityLasso$clone()

The objects of this class are cloneable with this method.

Usage

LearnerRegrPriorityLasso$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

# Simulate regression data
set.seed(1L)
x = matrix(rnorm(50L * 500L), nrow = 50L, ncol = 500L)
data = as.data.frame(x)
data$y = rnorm(50L)

# Define a Task
task = mlr3::as_task_regr(data, target = "y")

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

# Define the Learner and set parameter values
learner = lrn("regr.priority_lasso",
  blocks = list(bp1 = 1:75, bp2 = 76:200, bp3 = 201:500),
  max.coef = c(Inf, 8, 5),
  block1.penalization = TRUE,
  lambda.type = "lambda.min",
  standardize = TRUE,
  nfolds = 5,
  cvoffset = FALSE)

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

# Selected features
learner$selected_features()
#> [1] "V424" "V440"

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

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