The Highly Adaptive Lasso (HAL) is a nonparametric regression function that has been demonstrated to optimally estimate functions with bounded (finite) variation norm. The algorithm proceeds by first building an adaptive basis (i.e., the HAL basis) based on indicator basis functions (or higher-order spline basis functions) representing covariates and interactions of the covariates up to a pre-specified degree. The fitting procedures included in this learner use fit_hal from the hal9001 package. For details on HAL regression, consider consulting the following Benkeser and van der Laan (2016) ), Coyle et al. (2020) ), Hejazi et al. (2020) ).

Format

An R6Class object inheriting from Lrnr_base.

Value

A learner object inheriting from Lrnr_base with methods for training and prediction. For a full list of learner functionality, see the complete documentation of Lrnr_base.

Parameters

  • max_degree = 2: An integer specifying the highest order of interaction terms for which basis functions ought to be generated.

  • smoothness_orders = 1: An integer specifying the smoothness of the basis functions. See details of hal9001 package's fit_hal function for more information.

  • num_knots = 5: An integer vector of length 1 or of length max_degree, specifying the maximum number of knot points (i.e., bins) for each covariate. If num_knots is a unit-length vector, then the same num_knots are used for each degree. See details of hal9001 package's fit_hal function for more information.

  • fit_control: List of arguments, including those specified in fit_hal's fit_control documentation, and any additional arguments to be passed to cv.glmnet or glmnet. See the hal9001 package fit_hal function fdocumentation or more information.

  • ...: Other parameters passed to fit_hal and additional arguments defined in Lrnr_base, such as params like formula.

Examples

data(cpp_imputed)
covs <- c("apgar1", "apgar5", "parity", "gagebrth", "mage", "meducyrs")
task <- sl3_Task$new(cpp_imputed, covariates = covs, outcome = "haz")

# instantiate with max 2-way interactions, 0-order splines, and binning
# (i.e., num_knots) that decreases with increasing interaction degree
hal_lrnr <- Lrnr_hal9001$new(max_degree = 2, num_knots = c(5, 3))
hal_fit <- hal_lrnr$train(task)
hal_preds <- hal_fit$predict()