Problem with NARX open-loop training - Correlated with a shift - How to improve NARX training / testing
1 view (last 30 days)
Show older comments
Hello everybody
I am new to statistics and ANN. I am using NARX (open-loop) to train a set of data (a time series as input X and a time series as target T, with more than 4000 data points). In the data, most of the time, X and T are constant, but sometimes X increases suddenly and after a short period of time T also increases, then X decreases to the constant value and T also decreases to its constant value. Please see the attached figure which shows a small part of the data.(in the figure, the green lines show the start of increase in X). After training the data I want to use the model to predict T at one-step ahead. But I have problem in training the data.
I use the following commands to create the net, train it, and then test it.
net = narxnet(inputDelays,feedbackDelays,hiddenLayerSize);
[inputs,inputStates,layerStates,targets] = ...
preparets(net,inputSeries(train_period),{},targetSeries(train_period));
[net,tr] = train(net,inputs,targets,inputStates,layerStates);
outputs = net(inputs,inputStates,layerStates);
The output Y correlates to the target T, but, as can be seen in the figure, with a shift of about one step size!. In the lower plot, blue line is the target and red line shows the output. This is only a short part of the data, and this problem is seen in the whole data (even more serious when the bump in T is lower). My question is that why is there a shift of one step size between target T and output Y? How can I improve the model to have a good correlation between those two? I use 10 hidden layers, 3 input and feedback delays, and "divideint" for dividing the data. I also used other values for these parameters but no success.
I tried to use this trained model to predict one-step ahead of T, but as the output is shifted one step ahead in training, it also has a similar shift in the testing. Therefore, the result is not useful because when we are at time = n, the model gives the value of T at the same time as the output at time = n+1.
Any advice would be much appreciated. After solving this problem, I am going to use closed-loop to make multi-step ahead predictions.
Thank you!
0 Comments
Accepted Answer
Greg Heath
on 3 Sep 2017
1. Openloop(OL) NAR and NARX configurations are NOT DEPLOYABLE!
2. They cannot estimate outputs when only inputs are known.
3. They are only stages in the design of deployable closeloop (CL)
configurations where past output signal estimates are fed back
to the input.
4. Therefore, if you need a NAR or NARX timeseries net to estimate
unknown outputs from known inputs, you have to use a deployable
CL configuration.
5. BOTTOM LINE: OL configurations are only useful for designing
deployable CL configurations!
Hope this helps.
Thank you for formally accepting my answer
Greg
0 Comments
More Answers (3)
Greg Heath
on 2 Sep 2017
Edited: Greg Heath
on 2 Sep 2017
1. There is not much information in your plotted data.
a. There seems to be 5 points within intervals of length
0.005 that define your input peaks.
b. Only 3 of the points defining input peaks are are elevated.
c. The 1st target and output peaks lag the input peak by one point.
d. There doesn't seem to be any lag between the second input and
target peaks; whereas the output peak occurs one timestep later.
2. You probably need many more features for better predictions.
3. One possibility is to try to add more points to your input and target data via interpolation.
Hope this helps.
Thank you for formally accepting my answer
Greg
0 Comments
See Also
Categories
Find more on Sequence and Numeric Feature Data Workflows in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!