Neural network predicting impossible values
4 views (last 30 days)
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 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.
Accepted Answer
Greg Heath
on 13 Jun 2015
If you must have normalized outputs in the range [-1,1],
Replace the default output transfer function of PURELIN with TANSIG.
Thank you for formally accepting my answer
Greg
1 Comment
Greg Heath
on 13 Jun 2015
I recommend using zscore, minmax and plots BEFORE TRAINING to verify that both inputs and targets have reasonable summary statistics. If not, you can delete or modify outliers.
Then, you have the choice of using the already available zx and/or zt for training WITH OR WITHOUT the normalization in train.
More Answers (0)
See Also
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!