Using the model from theano's tutorial, I'm training a 3-layers perceptron with log returns over a very large dataset (~55,000 points). The output's layer contains two neurons, one for each of the classes (either the returns are + or -) in which I am trying to cluster my inputs (returns for the past n days).

The machine always predicts the same value, ie the output which has the highest probability over the entire dataset. Has anyone faced a similar problem before? How is this even possible?

Inputs: 100d-array of log returns (quasi normally distributed).

Target Output: sign of consecutive log return (1 or 0).

  • $\begingroup$ can you post a snapshot of what your data looks like, preferably with a few examples from each class? $\endgroup$ – Alex R. Jun 22 '16 at 21:28
  • $\begingroup$ @AlexR. a typical point in the data set would be the tuple: (array([-0.072, -0.207, ...,0.086]),1), meaning that after the given series of log returns, the given asset went up. $\endgroup$ – Rackham Le Rouge Jun 22 '16 at 21:51
  • $\begingroup$ Does that mean you sum the first array, and see if it's positive or negative? $\endgroup$ – Alex R. Jun 22 '16 at 22:03
  • $\begingroup$ How balanced is your dataset? Maybe one of classes dominates over the other and the network exploits this. $\endgroup$ – Dr. Snoopy Jun 23 '16 at 0:44
  • $\begingroup$ @MatiasValdenegro my set is large enough, log returns are normally distributed around 0 $\endgroup$ – Rackham Le Rouge Jun 23 '16 at 0:58