Reputation: 21
I'm having some problems with the output of my neural network. I'm using Encog 3.3 to predict a solar x-ray emission time series, having a single field for both input and output. I need do try and predict at least 30 minutes into the future, so my network is currently structured as follows:
public BasicNetwork createNetwork()
{
BasicNetwork network = new BasicNetwork();
network.addLayer(new BasicLayer(new ActivationLinear(), true, PAST_WINDOW_SIZE));
network.addLayer(new BasicLayer(new ActivationTANH(), true, HIDDEN_LAYER_SIZE));
network.addLayer(new BasicLayer(new ActivationLinear(), true, FUTURE_WINDOW_SIZE));
network.getStructure().finalizeStructure();
network.reset();
return network;
}
My training set consists of ten files, each one containing data entries for every minute of the day, so it's 10 X 1440 temporal points. Similarly, my query set consists of one of those files, so I take the first 20 entries (00:00 to 00:19) of that day and the try to predict the next ones, slide the window forward one step, take the next 20 entries (00:01 to 00:20) to predict the following 30 minutes and so on until the end of the day, resulting in about 1400 iterations of 30 outputs. This way, I can turn all those iterations into a series and compare it with the actual data from that day. It seems to work nicely with the first series of (output(0)) values, as you can see below.
But when I look at the series of, say, (output(4)) which I guess is supposed to be the (t+5) prediction, it goes like this:
It's as if a constant value is being added to the output, "moving" it vertically; and some negative values which are not valid measures in the context of my project also appear. All the missing entries from the dataset are being treated as the mean of the normalization range.
Has anyone had similar problems? Any hints on how to properly obtain predictions that go as far as t+30?
Upvotes: 2
Views: 386