I am training a neural network with time dependent financial data. In order to avoid overfitting I would like to stop the training at the point where my neural network stops improving on a set of validation data, different from the training data.

My question is how to best divide my data in training and validation data? And should validation data be randomly selected or be taken all from the end of the sample?

I am trying to predict stock prices based on a window of past prices, and if I randomly select data for validation could this lead to a information leakage?


If selection of validation data is difficult because of dependencies, then it might be better to consider using Bayesian regularisation instead of early stopping to avoid over-fitting as the validation set is not then required. Most neural network packages have an implementation of this procedure, for MATLAB I would recommend NETLAB.

Note however that the dependencies in the data may cause a problem of model mis-specification (as the standard Bayesian approach assumes the data are i.i.d.). So it is worth a try, but not guaranteed to work.

  • $\begingroup$ Thanks, I will try this one. Found an implementation together with the Levenberg-Marquardt algorithm. $\endgroup$ – Stian Apr 26 '12 at 13:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.