Hold-out validation evaluates a model by reserving part of the available data, training on the remainder, and measuring performance on the reserved validation set. Keep a separate, untouched test set for final evaluation. section 5.2.1 section 5.5
A practical hold-out workflow is:
- Reserve a representative validation fraction and avoid redundant samples between training and validation data. section 6.2.2
- Train the model only on the training partition, then use validation metrics to guide modeling decisions and hyperparameter tuning. section 6.2.2
- After decisions are complete, retrain on the available non-test data and evaluate once on the never-seen test set. section 5.2.1
A simple split
num_validation_samples <- 10000 val_indices <- sample.int(nrow(data), num_validation_samples) validation_data <- data[val_indices, ] training_data <- data[-val_indices, ] model <- get_model() fit(model, training_data, ...) validation_score <- evaluate(model, validation_data, ...) # After tuning model <- get_model() fit(model, data, ...) test_score <- evaluate(model, test_data, ...) section 5.2.1
Figure 5.12 Simple hold-out validation split
A split diagram makes the separation between training, validation, and test data immediately visible. section 5.2.1
Hold-out validation is the simplest evaluation protocol and usually works when plenty of data is available. With little data, random splits may produce unstable or unrepresentative scores; use K-fold or iterated K-fold validation instead. section 5.2.1 section 6.2.2

