# A Few Useful Things to Know About Machine Learning


A Few Useful Things to Know about Machine Learning is a high-level machine learning paper written by Pedro Domingos of the computer science and engineering department at the University of Washington. His paper details some useful machine learning guidelines and the following are some highlights I took from it.

We’re after generalization when creating models, so there are a few things to note:

• Cross-validation is a must; that is, randomly dividing your training data into $n$ subsets, holding out each subset while training on the rest, validating your model on the held-out subset and then averaging the results.
• Although cross-validation helps you to choose the best model parameters, your model is still biased toward the validation set. As a final unbiased test, you need to test your model on a subset of data that wasn’t used for training or validation
• The objective function is only a proxy for the true goal so we may not even need a global optimum

Problems with high-dimensional datasets:

• Choosing to increase the number of dimensions of your dataset increases the entire input space. For example, if you have 100 variables each taking a binary value, then your input space is of size $2^{100}$ which is greater than the number of atoms in the universe. In this scenario, even if you have a million samples, there are still $2^{100}-10^6$ samples whose classes you don’t know. This makes generalization a lot harder.
• The more irrelevant variables you have, the more they will dominate the relevant variables and your model effectively makes random predictions since it was trained on noise
• Similarity-based reasoning that models use to learn breaks down in higher dimensions since samples in higher dimensions appear to be sparse and therefore similar in many ways

Feature engineering is really important:

• Automate as much of it as you can
• Features that look irrelevant in isolation may be relevant in combination
• But brute-forcing which features have useful combinations might be intractable so use your smarts when feature engineering

On models:

• A less sophisticated algorithm with lots of a data can beat a clever algorithm with only a moderate amount of data
• Although model accuracy is important, insights and reduction in human labor are usually more important; this makes decision trees and other rule-based learners attractive
• Model ensembles are awesome this includes bagging, boosting, and stacking
• There isn’t a mandatory connection between the number of parameters a model has and its tendency to overfit. SVMs can have a lot of parameters, but can avoid overfitting. Even though $\sign(\sin(ax))$ only has one parameter, it can discriminate an arbitrarily large, arbitrarily labeled set of points on the $x$ axis.
• A model with a larger hypothesis space that tries fewer hypotheses from it is less likely to overfit than a model that tries more hypotheses from a smaller space
• Simpler models should be preferred because simplicity is a virtue in its own right, not because of a hypothetical connection with accuracy
• Just because a function can be represented by a model doesn’t mean the model can learn the function. This is because:
• The number of training samples you have might not be enough
• Most models can only learn a tiny subset of all possible functions and these subsets are different for each model; so usually the model gets stuck in a local optima