 What's the difference between validation and testing and machine learning? Both of them seem to be trying out your model, your recipe, takes you from input data to output data, on a new data set that was not used to construct the recipe. In the training phase, you use some data set to fit a recipe to patterns in the data that successfully take you from inputs to outputs. Great. You're going to try validating your model. If you don't like the performance, you can go back and train a different model, come back and validate that one over and over again. So you can reuse your validation data set. Your test data set, however, you can use one time and one time only. That's a big difference. Let me put this to you in a teaching analogy. Your training data set are the practice problems that your students are going to work from at home. That's how they're going to build an understanding of their subject. If you as a teacher only cared about failing the bad students, then you would only need a test set. The student has studied. They bring what they learned to the exam. And at the exam, that high stakes, one time and one time only scenario, you fail them if they don't understand it. But hey, are you a teacher or are you an executioner? Don't you want to give your students a chance to actually learn? Do you want to increase their chances of doing better? If that's true, you want to give them a practice test to do at home so that if at home in the low stakes environment they see that they don't actually understand it properly, then go back and train some more. That is what validation is for. But of course, you're not going to take their validation performance seriously because you've given the students a thing. They've been allowed to reuse it. At some point, they might contort their understanding to that practice exam at home. That's why you have to give them the real test, the one that you know they've only seen one time. That's the one where you're going to check if they've got it. So validation is about redemption. But you can't really trust it as a good measure of who knows what. And testing is about actually checking, does it work? Should it go to the next phase? Should it be launched or should it go to production? So testing is all about checking where the performance is good enough. Validation is allowing for redemption. It is a way to improve performance before you get to that final exam. You do need both in a machine learning project. Learn more about that in my article How Not To Be An AI Idiot, linked in the description below.