Techniques for choosing the best model and adjusting its parameters to optimize performance on a specific problem.