Cross Validation¶
Which parameters are used for or with cross validation?
nfolds
keep_cross_validation_models
keep_cross_validation_predictions
keep_cross_validation_fold_assignment
fold_assignment
fold_column
If a user activates cross validation in one of the algorithms (
h2o.randomForest()
,h2o.gbm()
, etc), will H2O output estimates of model performance on only the holdout sets.No, H2O will build nfolds+1 models in total, the ‘main’ model on 100% of training data and nfolds ‘cross-validation’ models that use disjoint holdout ‘validation’ sets (obtained from the training data) to estimate the generalization of the main model. The main model contains a cross-validation metrics object that is computed from the combined holdout predictions (obtain by setting xval to true in h2o.performance), as well as a table containing the statistics of various metrics across all nfolds cross-validation models (e.g., the mean and stddev of the logloss, rmse, etc.). You can also get the performance of the main model on the
training_frame
dataset if you specifytrain = TRUE
(R) ortrain = True
(python) when you ask for a model performance metric. If you provide avalidation_frame
during cross-validation, then you can get the performance of the main model on that by specifyingvalid = TRUE
(R) orvalid = True
(python) when you ask for a model performance metric.Can H2O automatically feed back the implications of the cross-validation results to improve the algorithm during training, as well as tune some of the model’s hyperparamters?
Yes, H2O can use cross-validation for parameter tuning if early stopping is enabled (stopping_rounds>0). In that case, cross-validation is used to automatically tune the optimal number of epochs for Deep Learning or the number of trees for DRF/GBM. The main model will use the mean number of epochs across all cross-validation models.
If a
validation_frame
isn’t specified, does supplying thenfolds
parameter activate cross-validation scoring on thetraining_frame
dataset’s holdouts?True (if
nfolds > 1
)Does the model only train on the training data?
The model only ever trains on training data, but can use validation data (if provided) to tune parameters related to early stopping (epochs, number of trees). If no validation data is provided, we will tune based off training data.
Does supplying the
validation_frame
parameter activate scoring on thevalidation_frame
dataset instead of thetraining_frame
dataset?No, the models always score on the training frame (unless explicitly turned off - only available in Deep Learning), but if a validation frame is provided, then the model will score on that as well (and can use it for parameter tuning such as early stopping). It’s always a good idea to provide a validation set. If you don’t want to ‘sacrifice’ data, use cross-validation instead. Then, you can still provide a validation frame, but you don’t have to (and it isn’t used for parameter tuning either, just for metrics reporting).
If the
nfolds
parameter is not specified, whilevalidation_frame
andtraining_frame
are , then would cross validation be activate, and some default value fornfolds
parameter will be applied?No, when a training frame and validation frame are supplied without the
nfolds
parameter, then training is done on thetraining_frame
and validation is done on thevalidation_frame
(CV will only ever activate unlessnfolds > 1
)Is early stopping (
stopping_rounds > 0
) based on thevalidation_frame
dataset, if provided, and otherwise based onthe training_frame
dataset .Yes.