how to improve netc performance for prediciting ?

1 view (last 30 days)
I'm dealing with a timeseries problem. I've chosen NARX network to solve the problem. I have three Inputs (Ambient Temp, Total Solar Radiation and Diffuse Solar Radiation) and eight Outputs (8 Temperatures of a collector). I've tried to find the significant Lags by means of cross-correlation and autocorrelation.
Corr=nncorr(Input,Output,10);
ACorr=nncorr(Output,Output,10);
I've plotted Corr and ACorr for finding the significant Lags but the maximum or minimum value are always one point after "maxlag". (for example with my code at 11). what does it mean?
I've trained the Network with data of 10 days. The training function is "trainbr", I've trained the Closedloop Network after training the Network too. I've used "divideblock" as well. For ID and FD I've used by try and error 4 delays. But the network is yet not good for predicting the other 20 days. I've have about 5% error in average . Can anyone give me some advice?
thanks in advance
Arsalan

Accepted Answer

Greg Heath
Greg Heath on 25 May 2016
Edited: Greg Heath on 25 May 2016
"I"nput dimension is I=3 and "O"utput dimension is O=8. However, WHAT IS N ??, the length of the total time span? If Ntrn ~ 0.7*N the number of training equations is Ntrneq = Ntrn*O. It is desirable that Ntrneq is not less than the number of parameters that you are trying to estimate Nw = ((NID+1)*I + NFD*O)*H+(H+1)*O.
The only data division option that makes sense for future prediction with constant timesteps is DIVIDEBLOCK!
You might want to start easy using TIMEDELAYNET, NARNET and/or a reduced number of input and output dimensions.
Practice datasets are found using
help nndatasets
doc nndatasets
Please search BOTH the NEWSGROUP & ANSWERS using
greg nncorr narxnet
and see how I estimate the significant correlation lags from the data & Random zero-mean/unit-variance Gaussian Noise of the same length, N.
Consult the posts in reverse chronological order.
HOWEVER, Including the VAL and TEST subsets by using N will optimistically bias your performance results. THEREFORE, ONLY USE THE TRAINING SUBSET OF LENGTH Ntrn to estimate the significant delays!
The form of NNCORR that agrees with the fft of the TRAINING SUBSET POWER SPECTRUM is
crosscorxttrn = nncorr(zxtrn,zttrn,Ntrn-1,'biased');
autocorrttrn = nncorr(zttrn,zttrn,Ntrn-1,'biased');
where
zxtrn = zscore(xtrn',1)';
zttrn = zscore(ttrn',1)';
Are you using TRAINBR because N is not sufficiently large?
Hope this helps.
Greg

More Answers (0)

Categories

Find more on Sequence and Numeric Feature Data Workflows 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!