This learner uses the caret package's `train`

function to automatically tune a predictive model. It does this by defining
a grid of model-specific tuning parameters; fitting the model according to
each tuning parameter specification, to establish a set of models fits;
calculating a resampling-based performance measure each variation; and
then selecting the model with the best performance.

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`

.

`method`

: A string specifying which caret classification or regression model to use. Possible models can be found using`names(caret::getModelInfo())`

. Information about a model, including the parameters that are tuned, can be found using`caret::modelLookup()`

, e.g.,`caret::modelLookup("xgbLinear")`

. Consult the`caret`

package's documentation on`train`

for more details.`metric = NULL`

: An optional string specifying the summary metric to be used to select the optimal model. If not specified, it will be set to "RMSE" for continuous outcomes and "Accuracy" for categorical and binary outcomes. Other options include "MAE", "Kappa", "Rsquared" and "logLoss". Regression models are defined when`metric`

is set as "RMSE", "logLoss", "Rsquared", or "MAE". Classification models are defined when`metric`

is set as "Accuracy" or "Kappa". Custom performance metrics can also be used. Consult the`caret`

package's`train`

documentation for more details.`trControl = list(method = "cv", number = 10)`

: A list for specifying the arguments for`trainControl`

object. If not specified, it will consider "cv" with 10 folds as the resampling method, instead of`caret`

's default resampling method, "boot". For a detailed description, consult the`caret`

package's documentation for`train`

and`trainControl`

.`factor_binary_outcome = TRUE`

: Logical indicating whether a binary outcome should be defined as a factor instead of a numeric. This only needs to be modified to`FALSE`

in the following uncommon instance: when`metric`

is specified by the user,`metric`

defines a regression model, and the task's outcome is binary. Note that`train`

could throw warnings/errors when regression models are considered for binary outcomes; this argument should only be modified by advanced users in niche settings.`...`

: Other parameters passed to`train`

and additional arguments defined in`Lrnr_base`

, such as`params`

like`formula`

.

Other Learners:
`Custom_chain`

,
`Lrnr_HarmonicReg`

,
`Lrnr_arima`

,
`Lrnr_bartMachine`

,
`Lrnr_base`

,
`Lrnr_bayesglm`

,
`Lrnr_bilstm`

,
`Lrnr_cv_selector`

,
`Lrnr_cv`

,
`Lrnr_dbarts`

,
`Lrnr_define_interactions`

,
`Lrnr_density_discretize`

,
`Lrnr_density_hse`

,
`Lrnr_density_semiparametric`

,
`Lrnr_earth`

,
`Lrnr_expSmooth`

,
`Lrnr_gam`

,
`Lrnr_ga`

,
`Lrnr_gbm`

,
`Lrnr_glm_fast`

,
`Lrnr_glm_semiparametric`

,
`Lrnr_glmnet`

,
`Lrnr_glmtree`

,
`Lrnr_glm`

,
`Lrnr_grfcate`

,
`Lrnr_grf`

,
`Lrnr_gru_keras`

,
`Lrnr_gts`

,
`Lrnr_h2o_grid`

,
`Lrnr_hal9001`

,
`Lrnr_haldensify`

,
`Lrnr_hts`

,
`Lrnr_independent_binomial`

,
`Lrnr_lightgbm`

,
`Lrnr_lstm_keras`

,
`Lrnr_mean`

,
`Lrnr_multiple_ts`

,
`Lrnr_multivariate`

,
`Lrnr_nnet`

,
`Lrnr_nnls`

,
`Lrnr_optim`

,
`Lrnr_pca`

,
`Lrnr_pkg_SuperLearner`

,
`Lrnr_polspline`

,
`Lrnr_pooled_hazards`

,
`Lrnr_randomForest`

,
`Lrnr_ranger`

,
`Lrnr_revere_task`

,
`Lrnr_rpart`

,
`Lrnr_rugarch`

,
`Lrnr_screener_augment`

,
`Lrnr_screener_coefs`

,
`Lrnr_screener_correlation`

,
`Lrnr_screener_importance`

,
`Lrnr_sl`

,
`Lrnr_solnp_density`

,
`Lrnr_solnp`

,
`Lrnr_stratified`

,
`Lrnr_subset_covariates`

,
`Lrnr_svm`

,
`Lrnr_tsDyn`

,
`Lrnr_ts_weights`

,
`Lrnr_xgboost`

,
`Pipeline`

,
`Stack`

,
`define_h2o_X()`

,
`undocumented_learner`

```
data(cpp_imputed)
covs <- c("apgar1", "apgar5", "parity", "gagebrth", "mage", "meducyrs")
task <- sl3_Task$new(cpp_imputed, covariates = covs, outcome = "haz")
autotuned_RF_lrnr <- Lrnr_caret$new(method = "rf")
set.seed(693)
autotuned_RF_fit <- autotuned_RF_lrnr$train(task)
autotuned_RF_predictions <- autotuned_RF_fit$predict()
```