Neural network predicting impossible values
Afficher commentaires plus anciens
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 commentaires
Greg Heath
le 24 Fév 2015
Modifié(e) : Greg Heath
le 24 Fév 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
le 25 Fév 2015
Modifié(e) : Marc Jakobi
le 25 Fév 2015
Marc Jakobi
le 25 Fév 2015
Greg Heath
le 26 Fév 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
le 26 Fév 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
le 26 Fév 2015
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Deep Learning Toolbox dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!