Problem with NARX open-loop training - Correlated with a shift - How to improve NARX training / testing
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Greg Heath
2017-9-3
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 个评论
更多回答(3 个)
Greg Heath
2017-9-2
编辑:Greg Heath
2017-9-2
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Sequence and Numeric Feature Data Workflows 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!