class

Logarithm::CrossValidation

Inherits Reference < Object

Enhanced cross-validation framework with early stopping.

This module provides k-fold cross-validation functionality to evaluate model performance and prevent overfitting. It supports hyperparameter optimization through grid search and random search methods, plus early stopping.

Example usage:

cv = CrossValidation.new(k: 5)
results = cv.evaluate_with_early_stopping(model, training_data, validation_data)
best_params = cv.grid_search(model_class, training_data, param_grid)

Constructors

new(k : Int32 = 5, shuffle : Bool = true)
Source

Instance methods

evaluate(model : AbstractModel, data : Array(Tensor), epochs : Int32 = 10, learning_rate : Float32 = 0.001_f32) : Hash(String, Float64)

Evaluate model performance using k-fold cross-validation.

Parameters:

  • model: The model to evaluate (will be cloned for each fold)
  • data: Training data as array of tensors
  • epochs: Number of training epochs per fold
  • learning_rate: Learning rate for training

Returns: Hash with validation metrics (mean_loss, std_loss, fold_losses)

Source
evaluate_with_early_stopping(model : AbstractModel, train_data : Array(Tensor), val_data : Array(Tensor), max_epochs : Int32 = 100, patience : Int32 = 10) : Hash(String, Float64 | Int32)

Evaluate model with early stopping using cross-validation.

Parameters:

  • model: The model to evaluate
  • train_data: Training data
  • val_data: Validation data for early stopping
  • max_epochs: Maximum number of epochs
  • patience: Early stopping patience

Returns: Hash with evaluation metrics and early stopping info

Source
grid_search(model_class : Class, data : Array(Tensor), param_grid : Hash(String, Array), epochs : Int32 = 10) : Hash(String, Float64 | Hash)

Perform grid search for hyperparameter optimization.

Parameters:

  • model_class: The model class to instantiate
  • data: Training data
  • param_grid: Hash of parameter names to arrays of values to try

Returns: Best parameter combination and its performance

Source
grid_search_with_early_stopping(model_class : Class, train_data : Array(Tensor), val_data : Array(Tensor), param_grid : Hash(String, Array), max_epochs : Int32 = 100, patience : Int32 = 10) : Hash(String, Float64 | Hash | Int32)

Perform grid search with early stopping.

Parameters:

  • model_class: The model class to instantiate
  • train_data: Training data
  • val_data: Validation data for early stopping
  • param_grid: Hash of parameter names to arrays of values to try
  • max_epochs: Maximum epochs per evaluation
  • patience: Early stopping patience

Returns: Best parameter combination and its performance

Source
random_search(model_class : Class, data : Array(Tensor), param_distributions : Hash(String, Range(Float64, Float64) | Range(Int32, Int32)), n_iter : Int32 = 10, epochs : Int32 = 10) : Hash(String, Float64 | Hash)

Perform random search for hyperparameter optimization.

Parameters:

  • model_class: The model class to instantiate
  • data: Training data
  • param_distributions: Hash of parameter names to distributions/ranges
  • n_iter: Number of random combinations to try

Returns: Best parameter combination and its performance

Source
shuffle?
Source