A question we always get asked is how much data do I need for successful machine learning projects? The short answer to this question is it depends. The truest answer is more than you have, but you have to start somewhere. By the end of this video, you'll understand the relationship between data needs and complexity, and be able to identify when more data is critical to success. A good machine learning model often requires training with an extremely large number of samples. Humans in contrast learn new concepts and skills faster and more efficiently. Children who have seen cats and birds only a few times can quickly tell them apart. People who know how to play tennis or likely to learn the basics of badminton with little or no demonstration. But unlike human learning, machines need a lot of specific data. To get a sense of just how much, start by looking at similar problems in published results. How many examples did those systems need to get decent performance? Then is your problem simpler or harder? Really, the amount of data you need depends both on the complexity of your problem and the complexity of your chosen QuAM. The complexity of your problem refers to the unknown underlying function that best relates your features to the output variable. The complexity of your model refers to how many knobs the machine learning algorithm is allowed to twiddle in its search for the best QuAM. Complexity is always a trade-off. Allowing greater complexity means that the machine learning solution can be more accurate and precise on the data it sees, but it also increases the danger that it's going to sacrifice generality, fitting exactly two irrelevant details like memorizing the answers to a multiple choice test. Not the actual answers, the sequence of letters that happened to be correct. That means you get great marks on the practice quiz but know absolutely nothing useful. This is called overfitting, and we'll return to it in the next module. For now, let's look at problem complexity in more detail. We can't know with certainty how complex a function needs to be to perfectly capture the relationship between features and answers. With perfect features, you might be able to learn from only a few examples. With more realistic features, you need more. When your features have a close relation to the correct answer, the learning algorithm can find that relation with only a little data. When your features are not closely and simply related to the correct answer, you need more data. Similarly, the more features it takes to accurately capture the relationship, the more data you need. If you have billions of examples to use to train your QuAM, you don't need to worry as much about good feature engineering. If you're like most of us and have a limited dataset, spending a lot of time and care on feature engineering is extra important. How much data you need to learn a good model also depends on the algorithm used to learn the underlying mapping function. Some families of learning algorithms allow more complex functions to be tested. Deep learning is able to find incredibly complex functions, which is part of why deep learning has been successful on so many tasks. Deep learning algorithms learn complex non-linear relationships, simple linear classifiers cannot. So if you're set on using deep learning or neural networks, you absolutely must have thousands of unique examples for every class you want to learn about. If a linear classifier achieves good performance with hundreds of examples per class, you may need tens or hundreds of thousands of examples to consistently get the same performance with a nonlinear classifier. So now, you know why we say it depends and more than you have when asked about how much data is needed. With complex problems where you aren't sure you have the best features, you need lots and lots of data. If you're learning complex models, you need lots and lots of data. In pretty much every case, you want hundreds to thousands of examples to learn from, but you can use good feature engineering to somewhat compensate for your small datasets.