I'd just like to add to @cbeleites' answer, which is good, with some quotes from a recent blog post of Frank Harrell's on split-sample validation:
[...] data splitting is an unstable method for validating models or classifiers, especially when the number of subjects is less than about 20,000 (fewer if signal:noise ratio is high). This is because were you to split the data again, develop a new model on the training sample, and test it on the holdout sample, the results are likely to vary significantly.
And
Data are too precious to not be used in model development/parameter estimation. Resampling methods allow the data to be used for both development and validation, and they do a good job in estimating the likely future performance of a model. Data splitting only has an advantage when the test sample is held by another researcher to ensure that the validation is unbiased.
In other words, in most cases you should prefer a resampling-based validation approach, and especially so when you have few observations. In a $n << p$ situation, the modelling process can have super high variance even if you use high-bias methods such penalized regression. If you don't do resampling you might spend a lot of time trying to interpret noise (speaking from experience).
Edit: so what's resampling-based validation anyway?
There are a few ways to do validation by resampling, the common idea is to make new samples from your original sample. A popular and by now quite well-understood method is to use the bootstrap, which would go like this:
- Make a bootstrap sample by drawing $n$ observations from your original $n$-sized sample with replacement
- Since you drew the bootstrap sample with replacement, some observations will appear more than once, others won't be in there at all. Roughly about 60% of the observations will be in there, the other 40% won't.
- Fit your model to the bootstrap sample
- Estimate your validation statistic by predicting on the observations that aren't in the bootstrap sample
- Repeat for as long as you have the patience to
This gives you an empirical distribution over the validation statistic which you can use to say something about how well your method will generalize. This could be for eg to estimate uncertainty or to calculate a point estimate (preferably both!).
Other possible methods: repeated holdout set, repeated cross-validation.