Learn R Programming

SDMtune (version 0.1.0)

randomSearch: Random Search

Description

The function performs a random search in the hyperparameters space, creating a population of random models each one with a random combination of the provided hyperparameters values.

Usage

randomSearch(model, hypers, metric, test = NULL, bg4test = NULL,
  pop = 20, env = NULL, parallel = FALSE, seed = NULL)

Arguments

model

'>SDMmodel or '>SDMmodelCV object.

hypers

named list containing the values of the hyperparameters that should be tuned, see details.

metric

character. The metric used to evaluate the models, possible values are: "auc", "tss" and "aicc".

test

'>SWD object. Test dataset used to evaluate the model, not used with aicc and '>SDMmodelCV objects, default is NULL.

bg4test

'>SWD object or NULL. Background locations used to get subsamples if a hyperparameter is tuned, default is NULL.

pop

numeric. Size of the population, default is 20.

env

stack containing the environmental variables, used only with "aicc", default is NULL.

parallel

logical, if TRUE it uses parallel computation, default is FALSE.

seed

numeric. The value used to set the seed to have consistent results, default is NULL.

Value

'>SDMtune object.

Details

To know which hyperparameters can be tuned you can use the output of the function get_tunable_args. Parallel computation increases the speed only for large datasets due to the time necessary to create the cluster.

Examples

Run this code
# NOT RUN {
# Acquire environmental variables
files <- list.files(path = file.path(system.file(package = "dismo"), "ex"),
                    pattern = "grd", full.names = TRUE)
predictors <- raster::stack(files)

# Prepare presence locations
p_coords <- condor[, 1:2]

# Prepare background locations
bg_coords <- dismo::randomPoints(predictors, 5000)

# Create SWD object
presence <- prepareSWD(species = "Vultur gryphus", coords = p_coords,
                       env = predictors, categorical = "biome")
bg <- prepareSWD(species = "Vultur gryphus", coords = bg_coords,
                 env = predictors, categorical = "biome")

# Split presence locations in training (80%) and testing (20%) datasets
datasets <- trainValTest(presence, test = 0.2)
train <- datasets[[1]]
test <- datasets[[2]]

# Train a model
model <- train(method = "Maxnet", p = train, a = bg, fc = "l")

# Define the hyperparameters to test
h <- list(reg = 1:3, fc = c("lqp", "lqph", "lh"), a = seq(3000, 4500, 500))

# Run the function using as metric the AUC
output <- randomSearch(model, hypers = h, metric = "auc", test = test,
                       bg4test = bg, pop = 10, seed = 25)
output@results
output@models
# Order rusults by highest test AUC
output@results[order(-output@results$test_AUC), ]
# }

Run the code above in your browser using DataLab