Classification MARS (Multivariate Adaptive Regression Splines) Learner
mlr_learners_classif.earth.Rd
This is an alternative implementation of MARS (Multivariate Adaptive Regression Splines). The classification problem is solved by 0-1 encoding of the two-class targets and setting the decision threshold to p = 0.5 during the prediction phase. MARS is trademarked and thus not used as the name. The name "earth" stands for "Enhanced Adaptive Regression Through Hinges".
Meta Information
Task type: “classif”
Predict Types: “response”, “prob”
Feature Types: “integer”, “numeric”, “factor”
Required Packages: mlr3, mlr3extralearners, earth
Parameters
Id | Type | Default | Levels | Range |
wp | untyped | NULL | - | |
offset | untyped | NULL | - | |
keepxy | logical | FALSE | TRUE, FALSE | - |
trace | character | 0 | 0, .3, .5, 1, 2, 3, 4, 5 | - |
degree | integer | 1 | \([1, \infty)\) | |
penalty | numeric | 2 | \([-1, \infty)\) | |
nk | untyped | NULL | - | |
thresh | numeric | 0.001 | \((-\infty, \infty)\) | |
minspan | numeric | 0 | \([0, \infty)\) | |
endspan | numeric | 0 | \([0, \infty)\) | |
newvar.penalty | numeric | 0 | \([0, \infty)\) | |
fast.k | integer | 20 | \([0, \infty)\) | |
fast.beta | integer | 1 | \([0, 1]\) | |
linpreds | untyped | FALSE | - | |
allowed | untyped | - | - | |
pmethod | character | backward | backward, none, exhaustive, forward, seqrep, cv | - |
nprune | integer | - | \([0, \infty)\) | |
nfold | integer | 0 | \([0, \infty)\) | |
ncross | integer | 1 | \([0, \infty)\) | |
stratify | logical | TRUE | TRUE, FALSE | - |
varmod.method | character | none | none, const, lm, rlm, earth, gam, power, power0, x.lm, x.rlm, ... | - |
varmod.exponent | numeric | 1 | \((-\infty, \infty)\) | |
varmod.conv | numeric | 1 | \([0, 1]\) | |
varmod.clamp | numeric | 0.1 | \((-\infty, \infty)\) | |
varmod.minspan | numeric | -3 | \((-\infty, \infty)\) | |
Scale.y | logical | FALSE | TRUE, FALSE | - |
Adjust.endspan | numeric | 2 | \((-\infty, \infty)\) | |
Auto.linpreds | logical | TRUE | TRUE, FALSE | - |
Force.weights | logical | FALSE | TRUE, FALSE | - |
Use.beta.cache | logical | TRUE | TRUE, FALSE | - |
Force.xtx.prune | logical | FALSE | TRUE, FALSE | - |
Get.leverages | logical | TRUE | TRUE, FALSE | - |
Exhaustive.tol | numeric | 1e-10 | \((-\infty, \infty)\) |
References
Milborrow, Stephen, Hastie, T, Tibshirani, R (2014). “Earth: multivariate adaptive regression spline models.” R package version, 3(7).
Friedman, H J (1991). “Multivariate adaptive regression splines.” The annals of statistics, 19(1), 1–67.
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::LearnerClassif
-> LearnerClassifEarth
Examples
# Define the Learner
learner = mlr3::lrn("classif.earth")
print(learner)
#> <LearnerClassifEarth:classif.earth>: Multivariate Adaptive Splines
#> * Model: -
#> * Parameters: list()
#> * Packages: mlr3, mlr3extralearners, earth
#> * Predict Types: [response], prob
#> * Feature Types: integer, numeric, factor
#> * Properties: twoclass, weights
# Define a Task
task = mlr3::tsk("sonar")
# 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)
#> GLM (family binomial, link logit):
#> nulldev df dev df devratio AIC iters converged
#> 192.112 138 32.5262 126 0.831 58.53 9 1
#>
#> Earth selected 13 of 21 terms, and 10 of 60 predictors
#> Termination condition: RSq changed by less than 0.001 at 21 terms
#> Importance: V11, V28, V36, V45, V23, V42, V25, V39, V30, V21, V1-unused, ...
#> Number of terms at each degree of interaction: 1 12 (additive model)
#> Earth GCV 0.1119905 RSS 10.47071 GRSq 0.5566014 RSq 0.6974161
# Make predictions for the test rows
predictions = learner$predict(task, row_ids = ids$test)
# Score the predictions
predictions$score()
#> classif.ce
#> 0.2318841