Why my Neural Network (NN tool box) is not able to predit output from input
Afficher commentaires plus anciens
Hello,
I'm new in using NN for input/output prediction problems. I understood the theory behind NN, specially that they are a universel nonlionear function approximator. But why it does not approximate my input/output function (at least in the range of my variables)? I'm sure that there is something here that I didn't understood. When I designed the static NN I did not do any data pre-processing operation vand I used brut data as i harvested them during the measurement compaign (data in function of time and with a lot of fluctuations). I get a so big EMS and an R very close to 1 what does it mean? that there is quiet a relationship between my Input/Output but the NN couldn't get it?
Thank you in advance for your response.
6 commentaires
Greg Heath
le 21 Mar 2013
NOT CLEAR:
Is your problem static (ID = FD =[]) or dynamic?
If it is dynamic, is Regressive min(ID) = 0 or Predictive min(ID) > 0?
If there is a sufficient deterministic relationship between the input and output and you have enough data with a large enough signal to contamination ratio, you should be able to design a net that represents the I/O underlying relationship at least as well as a linear model.
If you have enough nodes in your hidden layer you should be able to memorize the training data I/O relationship. However, that net is not guaranteed to be useful for nontraining data unless you take overfitting/overtraining precautions.
We cannot help unless you reveal more details.
nou2
le 22 Mar 2013
Greg Heath
le 23 Mar 2013
Still, not enough details.
What are the significant crosscorrelation lags between A(t) and each of the seven inputs Ti(t)? That will help choose an effective ID.
What are the significant autocorrelation lags of A(t)? That will help choose an effective FD.
You say
"...I get a so big EMS and an R very close to 1 "
What is an EMS? Do you mean MSE = mse(target-output) is large? If so, R will be close to 0, not 1.
So apparently, you are not getting your point across.
Qualitative statements don't mean much if they don't convey useful info.
So, you need to post relevant code with informative comments.
It would help if you ran your code on one of the nndatasets and posted the results so that we can compare
help nndatasets
Greg
PS Use as many defaults as possible when starting out.
nou2
le 4 Avr 2013
Greg Heath
le 11 Avr 2013
1. You have
net.divideMode = 'value'; % Divide up every value
which looked strange to me. The documentation:
nnproperty.net_divideMode
Neural network divideMode property.
NET.divideMode
This property defines the target data dimensions which to divide up when
the data division function net.divideFcn is called.
Its default value is 'sample' for static networks and 'time' for
dynamic networks.
It may also be set to 'sampletime' to divide targets by both sample and
timestep, 'all' to divide up targets by every scalar value, or 'none'
to not divide up data at all (in which case all data us used for
training, none for validation or testing).
I do not know what 'value' does. Compare results using that with using the default 'time'
2. You stated
Training: MSE=23, R2=99.7%
Validation: MSE=40, R2=99.5%
Test : MSE=40, R2=99.6%
How, exactly, did you calculate those numbers?
3.Please initialize the RNG with
rng(0)
directly before [ net tr ] = train(...
Then we can compare numbers.
Greg
nou2
le 19 Avr 2013
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Modeling and Prediction with NARX and Time-Delay Networks dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!