MLpp
ml::Crossvalidation Namespace Reference

Methods used for cross-validation. More...

Functions

void calc_fold_indices (size_t total_len, unsigned int k, unsigned int num_folds, size_t &i0, size_t &i1)
 Calculates indices delimiting a fold. More...
 
Eigen::Ref< const Eigen::MatrixXd > only_kth_fold_2d (Eigen::Ref< const Eigen::MatrixXd > data, unsigned int k, unsigned int num_folds)
 Returns k-th fold contents for vector data. More...
 
Eigen::Ref< const Eigen::VectorXd > only_kth_fold_1d (Eigen::Ref< const Eigen::VectorXd > data, unsigned int k, unsigned int num_folds)
 Returns k-th fold contents for scalar data. More...
 
template<class T >
std::vector< T > only_kth_fold_1d (const std::vector< T > &data, const unsigned int k, const unsigned int num_folds)
 Returns k-th fold contents for scalar data. More...
 
Eigen::MatrixXd without_kth_fold_2d (Eigen::Ref< const Eigen::MatrixXd > data, unsigned int k, unsigned int num_folds)
 Returns the contents of all except the k-th fold for vector data. More...
 
Eigen::VectorXd without_kth_fold_1d (Eigen::Ref< const Eigen::VectorXd > data, unsigned int k, unsigned int num_folds)
 Returns the contents of all except the k-th fold for scalar data. More...
 
template<class T >
std::vector< T > without_kth_fold_1d (const std::vector< T > &data, unsigned int k, unsigned int num_folds)
 Returns the contents of all except the k-th fold for scalar data. More...
 
template<class Trainer , class Tester >
double k_fold (Eigen::Ref< const Eigen::MatrixXd > X, Eigen::Ref< const Eigen::VectorXd > y, Trainer train_func, Tester test_func, const unsigned int num_folds)
 Calculates model test error using k-fold cross-validation. More...
 
template<class Trainer , class Tester >
double k_fold_scalar (Eigen::Ref< const Eigen::VectorXd > x, Eigen::Ref< const Eigen::VectorXd > y, Trainer train_func, Tester test_func, const unsigned int num_folds)
 Calculates model test error using k-fold cross-validation (scalar X version). More...
 
template<class Trainer , class Tester >
double leave_one_out (Eigen::Ref< const Eigen::MatrixXd > X, Eigen::Ref< const Eigen::VectorXd > y, Trainer train_func, Tester test_func)
 Calculates model test error using leave-one-out cross-validation. More...
 
template<class Trainer , class Tester >
double leave_one_out_scalar (const Eigen::Ref< const Eigen::VectorXd > x, Eigen::Ref< const Eigen::VectorXd > y, Trainer train_func, Tester test_func)
 Calculates model test error using leave-one-out cross-validation (scalar X version). More...
 

Detailed Description

Methods used for cross-validation.

Function Documentation

◆ calc_fold_indices()

void ml::Crossvalidation::calc_fold_indices ( size_t  total_len,
unsigned int  k,
unsigned int  num_folds,
size_t &  i0,
size_t &  i1 
)

Calculates indices delimiting a fold.

Calculates i0 and i1 such that the k-th fold consists of data points with indices in the [i0, i1) range.

Parameters
[in]total_lenTotal number of data points.
[in]kFold index with 0 <= k < num_folds.
[in]num_foldsTotal number of folds with num_folds <= total_len.
[out]i0Lower fold bound (inclusive).
[out]i1Upper fold bound (exclusive).
Exceptions
std::invalid_argumentIf num_folds > total_len or k >= num_folds.

◆ only_kth_fold_2d()

Eigen::Ref<const Eigen::MatrixXd> ml::Crossvalidation::only_kth_fold_2d ( Eigen::Ref< const Eigen::MatrixXd >  data,
unsigned int  k,
unsigned int  num_folds 
)

Returns k-th fold contents for vector data.

Parameters
[in]dataData matrix with data points in columns.
[in]kFold index with 0 <= k < num_folds.
[in]num_foldsTotal number of folds with num_folds <= data.cols().
Returns
Reference to data from the k-th fold.
Exceptions
std::invalid_argumentIf num_folds > data.cols() or k >= num_folds.

◆ only_kth_fold_1d() [1/2]

Eigen::Ref<const Eigen::VectorXd> ml::Crossvalidation::only_kth_fold_1d ( Eigen::Ref< const Eigen::VectorXd >  data,
unsigned int  k,
unsigned int  num_folds 
)

Returns k-th fold contents for scalar data.

Parameters
[in]dataData vector.
[in]kFold index with 0 <= k < num_folds.
[in]num_foldsTotal number of folds with num_folds <= data.size().
Returns
Reference to data from the k-th fold.
Exceptions
std::invalid_argumentIf num_folds > data.size() or k >= num_folds.

◆ only_kth_fold_1d() [2/2]

template<class T >
std::vector<T> ml::Crossvalidation::only_kth_fold_1d ( const std::vector< T > &  data,
const unsigned int  k,
const unsigned int  num_folds 
)

Returns k-th fold contents for scalar data.

Parameters
[in]dataData vector.
[in]kFold index with 0 <= k < num_folds.
[in]num_foldsTotal number of folds with num_folds <= data.size().
Template Parameters
TScalar data type.
Returns
Data from the k-th fold.
Exceptions
std::invalid_argumentIf num_folds > data.size() or k >= num_folds.

◆ without_kth_fold_2d()

Eigen::MatrixXd ml::Crossvalidation::without_kth_fold_2d ( Eigen::Ref< const Eigen::MatrixXd >  data,
unsigned int  k,
unsigned int  num_folds 
)

Returns the contents of all except the k-th fold for vector data.

Parameters
[in]dataData matrix with data points in columns.
[in]kFold index with 0 <= k < num_folds.
[in]num_foldsTotal number of folds with num_folds <= data.size().
Returns
Data from all folds except the k-th one.
Exceptions
std::invalid_argumentIf num_folds > data.cols() or k >= num_folds.

◆ without_kth_fold_1d() [1/2]

Eigen::VectorXd ml::Crossvalidation::without_kth_fold_1d ( Eigen::Ref< const Eigen::VectorXd >  data,
unsigned int  k,
unsigned int  num_folds 
)

Returns the contents of all except the k-th fold for scalar data.

Parameters
[in]dataData vector.
[in]kFold index with 0 <= k < num_folds.
[in]num_foldsTotal number of folds with num_folds <= data.size().
Returns
Data from all folds except the k-th one.
Exceptions
std::invalid_argumentIf num_folds > data.size() or k >= num_folds.

◆ without_kth_fold_1d() [2/2]

template<class T >
std::vector<T> ml::Crossvalidation::without_kth_fold_1d ( const std::vector< T > &  data,
unsigned int  k,
unsigned int  num_folds 
)

Returns the contents of all except the k-th fold for scalar data.

Parameters
[in]dataData vector.
[in]kFold index with 0 <= k < num_folds.
[in]num_foldsTotal number of folds with num_folds <= data.size().
Template Parameters
TScalar data type.
Returns
Data from all folds except the k-th one.
Exceptions
std::invalid_argumentIf num_folds > data.size() or k >= num_folds.

◆ k_fold()

template<class Trainer , class Tester >
double ml::Crossvalidation::k_fold ( Eigen::Ref< const Eigen::MatrixXd >  X,
Eigen::Ref< const Eigen::VectorXd >  y,
Trainer  train_func,
Tester  test_func,
const unsigned int  num_folds 
)

Calculates model test error using k-fold cross-validation.

See https://en.wikipedia.org/wiki/Cross-validation_(statistics)#k-fold_cross-validation

train_func and test_func functors should accept X data as Eigen::Ref<const Eigen::MatrixXd> reference, and y data as Eigen::Ref<const Eigen::VectorXd>.

Parameters
[in]XMatrix with all features (data points in columns).
[in]yVector with all responses (scalars).
[in]train_funcFunctor returning a trained model given training features and responses as arguments.
[in]test_funcFunctor calculating test error per data point given the model, test features and test responses as arguments.
[in]num_foldsNumber of folds.
Template Parameters
TrainerFunctor type for model training.
TesterFunctor type for calculating test error.
Returns
Error value per data point.
Exceptions
std::invalid_argumentIf num_folds > X.cols() or y.size() != X.cols().

◆ k_fold_scalar()

template<class Trainer , class Tester >
double ml::Crossvalidation::k_fold_scalar ( Eigen::Ref< const Eigen::VectorXd >  x,
Eigen::Ref< const Eigen::VectorXd >  y,
Trainer  train_func,
Tester  test_func,
const unsigned int  num_folds 
)

Calculates model test error using k-fold cross-validation (scalar X version).

See https://en.wikipedia.org/wiki/Cross-validation_(statistics)#k-fold_cross-validation

train_func and test_func functors should accept X and y data as Eigen::Ref<const Eigen::VectorXd> references.

Parameters
[in]xVector with all features (scalars).
[in]yVector with all responses (scalars).
[in]train_funcFunctor returning a trained model given training features and responses as arguments.
[in]test_funcFunctor calculating test error per data point given the model, test features and test responses as arguments.
[in]num_foldsNumber of folds.
Template Parameters
TrainerFunctor type for model training.
TesterFunctor type for calculating test error.
Returns
Error value per data point.
Exceptions
std::invalid_argumentIf num_folds > X.cols() or y.size() != y.size().

◆ leave_one_out()

template<class Trainer , class Tester >
double ml::Crossvalidation::leave_one_out ( Eigen::Ref< const Eigen::MatrixXd >  X,
Eigen::Ref< const Eigen::VectorXd >  y,
Trainer  train_func,
Tester  test_func 
)

Calculates model test error using leave-one-out cross-validation.

See https://en.wikipedia.org/wiki/Cross-validation_(statistics)#Leave-one-out_cross-validation

train_func and test_func functors should accept X data as Eigen::Ref<const Eigen::MatrixXd> reference, and y data as Eigen::Ref<const Eigen::VectorXd>.

Parameters
[in]XMatrix with all features (data points in columns).
[in]yVector with all responses (scalars).
[in]train_funcFunctor returning a trained model given training features and responses as arguments.
[in]test_funcFunctor calculating test error per data point given the model, test features and test responses as arguments.
Template Parameters
TrainerFunctor type for model training.
TesterFunctor type for calculating test error.
Returns
Error value per data point.
Exceptions
std::invalid_argumentIf y.size() < 2 or y.size() != X.cols().

◆ leave_one_out_scalar()

template<class Trainer , class Tester >
double ml::Crossvalidation::leave_one_out_scalar ( const Eigen::Ref< const Eigen::VectorXd >  x,
Eigen::Ref< const Eigen::VectorXd >  y,
Trainer  train_func,
Tester  test_func 
)

Calculates model test error using leave-one-out cross-validation (scalar X version).

See https://en.wikipedia.org/wiki/Cross-validation_(statistics)#Leave-one-out_cross-validation

train_func and test_func functors should accept X and y data as Eigen::Ref<const Eigen::VectorXd> references.

Parameters
[in]xVector with all features (scalars).
[in]yVector with all responses (scalars).
[in]train_funcFunctor returning a trained model given training features and responses as arguments.
[in]test_funcFunctor calculating test error per data point given the model, test features and test responses as arguments.
Template Parameters
TrainerFunctor type for model training.
TesterFunctor type for calculating test error.
Returns
Error value per data point.
Exceptions
std::invalid_argumentIf y.size() < 2 or y.size() != x.size().