Boosted Generalized Linear Regression Learner
mlr_learners_regr.glmboost.Rd
Fit a generalized linear regression model using a boosting algorithm.
Calls mboost::glmboost()
from mboost.
Meta Information
Task type: “regr”
Predict Types: “response”
Feature Types: “integer”, “numeric”, “factor”, “ordered”
Required Packages: mlr3, mlr3extralearners, mboost
Parameters
Id | Type | Default | Levels | Range |
offset | numeric | NULL | \((-\infty, \infty)\) | |
family | character | Gaussian | Gaussian, Laplace, Huber, Poisson, GammaReg, NBinomial, Hurdle, custom | - |
custom.family | untyped | - | - | |
nuirange | untyped | c(0, 100) | - | |
d | numeric | NULL | \((-\infty, \infty)\) | |
center | logical | TRUE | TRUE, FALSE | - |
mstop | integer | 100 | \((-\infty, \infty)\) | |
nu | numeric | 0.1 | \((-\infty, \infty)\) | |
risk | character | inbag | inbag, oobag, none | - |
oobweights | untyped | NULL | - | |
trace | logical | FALSE | TRUE, FALSE | - |
stopintern | untyped | FALSE | - | |
na.action | untyped | stats::na.omit | - | |
contrasts.arg | untyped | - | - |
References
Bühlmann, Peter, Yu, Bin (2003). “Boosting with the L 2 loss: regression and classification.” Journal of the American Statistical Association, 98(462), 324–339.
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
-> mlr3::LearnerRegr
-> LearnerRegrGLMBoost
Examples
# Define the Learner
learner = mlr3::lrn("regr.glmboost")
print(learner)
#> <LearnerRegrGLMBoost:regr.glmboost>: Boosted Generalized Linear Model
#> * Model: -
#> * Parameters: list()
#> * Packages: mlr3, mlr3extralearners, mboost
#> * Predict Types: [response]
#> * Feature Types: integer, numeric, factor, ordered
#> * Properties: weights
# Define a Task
task = mlr3::tsk("mtcars")
# 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)
#>
#> Generalized Linear Models Fitted via Gradient Boosting
#>
#> Call:
#> glmboost.formula(formula = f, data = data, family = new("boost_family_glm", fW = function (f) return(rep(1, length = length(f))), ngradient = function (y, f, w = 1) y - f, risk = function (y, f, w = 1) sum(w * loss(y, f), na.rm = TRUE), offset = function (x, w, ...) UseMethod("weighted.mean"), check_y = function (y) { if (!is.numeric(y) || !is.null(dim(y))) stop("response is not a numeric vector but ", sQuote("family = Gaussian()")) y }, weights = function (w) { switch(weights, any = TRUE, none = isTRUE(all.equal(unique(w), 1)), zeroone = isTRUE(all.equal(unique(w + abs(w - 1)), 1)), case = isTRUE(all.equal(unique(w - floor(w)), 0))) }, nuisance = function () return(NA), response = function (f) f, rclass = function (f) NA, name = "Squared Error (Regression)", charloss = "(y - f)^2 \n"), control = ctrl)
#>
#>
#> Squared Error (Regression)
#>
#> Loss function: (y - f)^2
#>
#>
#> Number of boosting iterations: mstop = 100
#> Step size: 0.1
#> Offset: 20.09048
#>
#> Coefficients:
#> (Intercept) am carb cyl disp drat
#> 8.306345879 1.075897520 -0.230218890 -0.845605989 0.001518662 0.320407680
#> gear hp qsec vs wt
#> 0.257908432 -0.018484707 0.215412080 1.055673240 -2.023848359
#> attr(,"offset")
#> [1] 20.09048
#>
# Make predictions for the test rows
predictions = learner$predict(task, row_ids = ids$test)
# Score the predictions
predictions$score()
#> regr.mse
#> 6.805947