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, and earth
#> • Predict Types: [response] and prob
#> • Feature Types: integer, numeric, and factor
#> • Encapsulation: none (fallback: -)
#> • Properties: twoclass and weights
#> • Other settings: use_weights = 'use'
# 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)
#> Warning: glm.fit: algorithm did not converge
#> Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
#> Warning: the glm algorithm did not converge for response "y"
print(learner$model)
#> GLM (family binomial, link logit, maxit=25):
#> nulldev df dev df devratio AIC iters converged
#> 192.515 138 3.83223e-09 111 1 56 25 0
#>
#> Earth selected 28 of 45 terms, and 21 of 60 predictors
#> Termination condition: RSq changed by less than 0.001 at 45 terms
#> Importance: V11, V36, V45, V17, V54, V42, V25, V7, V23, V28, V27, V35, V30, ...
#> Number of terms at each degree of interaction: 1 27 (additive model)
#> Earth GCV 0.08429826 RSS 4.279198 GRSq 0.6672106 RSq 0.8766981
# Make predictions for the test rows
predictions = learner$predict(task, row_ids = ids$test)
# Score the predictions
predictions$score()
#> classif.ce
#> 0.2318841