`mars()`

is a way to generate a *specification* of a model before
fitting and allows the model to be created using R. The main
arguments for the
model are:

`num_terms`

: The number of features that will be retained in the final model.`prod_degree`

: The highest possible degree of interaction between features. A value of 1 indicates an additive model while a value of 2 allows, but does not guarantee, two-way interactions between features.`prune_method`

: The type of pruning. Possible values are listed in`?earth`

.

These arguments are converted to their specific names at the
time that the model is fit. Other options and arguments can be
set using `set_engine()`

. If left to their defaults
here (`NULL`

), the values are taken from the underlying model
functions. If parameters need to be modified, `update()`

can be used
in lieu of recreating the object from scratch.

mars( mode = "unknown", num_terms = NULL, prod_degree = NULL, prune_method = NULL ) # S3 method for mars update( object, parameters = NULL, num_terms = NULL, prod_degree = NULL, prune_method = NULL, fresh = FALSE, ... )

mode | A single character string for the type of model. Possible values for this model are "unknown", "regression", or "classification". |
---|---|

num_terms | The number of features that will be retained in the final model, including the intercept. |

prod_degree | The highest possible interaction degree. |

prune_method | The pruning method. |

object | A MARS model specification. |

parameters | A 1-row tibble or named list with |

fresh | A logical for whether the arguments should be modified in-place of or replaced wholesale. |

... | Not used for |

The model can be created using the `fit()`

function using the
following *engines*:

R:

`"earth"`

(the default)

Engines may have pre-set default arguments when executing the model fit call. For this type of model, the template of the fit calls are below.

mars() %>% set_engine("earth") %>% set_mode("regression") %>% translate()

## MARS Model Specification (regression) ## ## Computational engine: earth ## ## Model fit template: ## earth::earth(formula = missing_arg(), data = missing_arg(), weights = missing_arg(), ## keepxy = TRUE)

mars() %>% set_engine("earth") %>% set_mode("classification") %>% translate()

## MARS Model Specification (classification) ## ## Engine-Specific Arguments: ## glm = list(family = stats::binomial) ## ## Computational engine: earth ## ## Model fit template: ## earth::earth(formula = missing_arg(), data = missing_arg(), weights = missing_arg(), ## glm = list(family = stats::binomial), keepxy = TRUE)

Note that, when the model is fit, the `earth`

package only has its
namespace loaded. However, if `multi_predict`

is used, the package is
attached.

Also, `fit()`

passes the data directly to `earth::earth()`

so that its
formula method can create dummy variables as-needed.

For this engine, tuning over `num_terms`

is very efficient since the
same model object can be used to make predictions over multiple values
of `num_terms`

.

The standardized parameter names in parsnip can be mapped to their original names in each engine that has main parameters. Each engine typically has a different default value (shown in parentheses) for each parameter.

parsnip | earth |

num_terms | nprune |

prod_degree | degree (1) |

prune_method | pmethod (backward) |

#> # A tibble: 2 x 2 #> engine mode #> <chr> <chr> #> 1 earth classification #> 2 earth regressionmars(mode = "regression", num_terms = 5)#> MARS Model Specification (regression) #> #> Main Arguments: #> num_terms = 5 #>model <- mars(num_terms = 10, prune_method = "none") model#> MARS Model Specification (unknown) #> #> Main Arguments: #> num_terms = 10 #> prune_method = none #>#> MARS Model Specification (unknown) #> #> Main Arguments: #> num_terms = 1 #> prune_method = none #>#> MARS Model Specification (unknown) #> #> Main Arguments: #> num_terms = 1 #>