Neural network predicting impossible values
Show older comments
Hi.
I have created a NARX neural network that attempts to predict 96 values per day (daily values with a 15 minute-time resolution) -> The training target is a 1096x96 matrix (3 years) and the testing target is a 365x96 matrix (1 year).
I have normalized the data to [-1, 1] using mapminmax.apply(y,settings). settings was defined using the minimum and maximum possible raw values [0, 1500].
After training and optimizing so far, the network predicts normalized values below -1 and above 1, which it shouldn't.
Is there a way I can set boundaries for the output values? So far, I have had to interpolate the affected values, which is tedious and can mess up the results.
Thanks for any help!
- Marc
6 Comments
Greg Heath
on 24 Feb 2015
Edited: Greg Heath
on 24 Feb 2015
Insufficient and confusing explanation.
Post your code to reduce the confusion and miscommunication.
Include the dimensions of each vector and matrix.
Are you using explicit or default variable normalization?
Include variable ranges minmax([input; target])
Using the result of the command
who
should be helpful.
1. NARX is a time-series net that uses present and past inputs as well as past outputs to predict present and future outputs.
net = narxnet(ID,FD,H);
what are ID, FD, H?
2. I assume you have input and output time-series with a 15 minute timestep.
a. What are you trying to predict every 15 minutes?
b. How far into the future
c. What are your I inputs
d. What are the dimensionalities of the I-dimensional input vector and the O-dimensional output vector?
[ I N ] = size(input)
[ O N ] = size(target) = size(output)
Marc Jakobi
on 25 Feb 2015
Edited: Marc Jakobi
on 25 Feb 2015
Marc Jakobi
on 25 Feb 2015
Greg Heath
on 26 Feb 2015
>Greg. Thanks for getting back to me. I'll try to include as much as I can. >I didn't include the code, because I am trying out various variations of >the network to see what works best.
OK. I can wait.
Greg Heath
on 26 Feb 2015
It doesn't make sense to postulate the length of the forecast window when you haven't identified the significant delays of the output autocorrelation function and the input-output crosscorrelation functions.
In order to do this as well as identify and modify outliers, normalize by zscore and don't unnormalize until the very end of the program.
The default normalization/unnormalization for the net is mapminmax. If having 2 normalizations bothers you, you can remove it. However, it is easier to just keep it.
Contrary to what you have described, use a constant length forecast window of an hour so that
[ 4 N-4 ] = size(target)
and, depending on the longest significant crosscorrelation delay
[ I N-4 ] = size(input)
It may be helpful to first design a TIMEDELAYNET and a NARNET before designing the NARXNET.
It may also be helpful to practice on one or more of the MATLAB practice data sets
help nndatasets
doc nndatasets.
Marc Jakobi
on 26 Feb 2015
Accepted Answer
More Answers (0)
Categories
Find more on Deep Learning Toolbox 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!