Skip to contents

The LCG stream is consumed first for the fold permutation (m draws, argsorted stably) and then one draw PER PARAMETER per configuration, in the order of param_dist. std_score is the ddof = 0 deviation.

Usage

morie_geron_randomized_search_cv(
  X,
  y,
  param_dist,
  n_iter,
  K,
  fit_score = NULL,
  seed = 42
)

Arguments

X, y

Data.

param_dist

Named list of specs: a function(u), a length-2 numeric range, or a vector of discrete choices.

n_iter

Configurations to draw.

K

Folds in [2, m].

fit_score

Required scoring function.

seed

LCG seed.

Value

List with best_params, best_score, results, fold_sizes.

Examples

if (requireNamespace("ranger", quietly = TRUE)) {
  set.seed(3)
  X <- matrix(rnorm(60), 30, 2)
  y <- as.numeric(X[, 1] > 0)
  fs <- function(Xtr, ytr, Xte, yte, params) {
    b <- qr.solve(cbind(1, as.matrix(Xtr)), as.numeric(ytr))
    pred <- as.numeric(cbind(1, as.matrix(Xte)) %*% b)
    -mean((pred - yte)^2) * params$w
  }
  morie_geron_randomized_search_cv(X, y, param_dist = list(w = c(0.5, 2)),
                                   n_iter = 3, K = 3, fit_score = fs)
}
#> $best_params
#> $best_params$w
#> [1] 0.5336829
#> 
#> 
#> $best_score
#> [1] -0.04705493
#> 
#> $results
#> $results[[1]]
#> $results[[1]]$params
#> $results[[1]]$params$w
#> [1] 0.5336829
#> 
#> 
#> $results[[1]]$mean_score
#> [1] -0.04705493
#> 
#> $results[[1]]$std_score
#> [1] 0.01707143
#> 
#> $results[[1]]$fold_scores
#> [1] -0.04621495 -0.06837041 -0.02657944
#> 
#> 
#> $results[[2]]
#> $results[[2]]$params
#> $results[[2]]$params$w
#> [1] 1.305933
#> 
#> 
#> $results[[2]]$mean_score
#> [1] -0.1151444
#> 
#> $results[[2]]$std_score
#> [1] 0.04177414
#> 
#> $results[[2]]$fold_scores
#> [1] -0.11308896 -0.16730383 -0.06504045
#> 
#> 
#> $results[[3]]
#> $results[[3]]$params
#> $results[[3]]$params$w
#> [1] 1.74494
#> 
#> 
#> $results[[3]]$mean_score
#> [1] -0.1538518
#> 
#> $results[[3]]$std_score
#> [1] 0.05581709
#> 
#> $results[[3]]$fold_scores
#> [1] -0.15110535 -0.22354529 -0.08690468
#> 
#> 
#> 
#> $fold_sizes
#> [1] 10 10 10
#> 
#> $estimate
#> [1] -0.04705493
#> 
#> $n
#> [1] 30
#>