How to improve RBF neural network interpolation ability?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi! There are 55 sampels, 2 inputs and 1 output. The predictions at samples are exellent, but the interpolation are very poor. How can I improve the RBF NN for interpolaion? Thanks!
clc,clear
% samples
data=[ 550 50.9114 4.9195
550 53.9864 4.8926
550 56.3262 4.8658
550 58.5372 4.5436
550 59.9610 3.3356
525 46.3723 4.5689
525 50.6499 4.5638
525 52.6551 4.5607
525 53.6585 4.5168
525 54.0599 4.4899
525 55.1983 4.3624
525 56.7400 4.1007
525 57.6911 3.1812
500 42.2350 4.1678
500 47.3824 4.1141
500 49.3885 4.0604
500 52.0637 3.9597
500 54.0059 3.7248
500 54.6201 2.9664
475 38.7662 3.7584
475 43.1781 3.7248
475 45.1173 3.6711
475 47.5921 3.5638
475 50.0018 3.3557
475 50.6136 2.7383
450 34.8298 3.3423
450 37.0355 3.3356
450 40.7792 3.2886
450 43.9895 3.1678
450 45.7969 3.0000
450 46.3401 2.4899
400 28.0909 2.6476
400 31.3660 2.6376
400 33.3715 2.6107
400 35.9125 2.5436
400 37.9872 2.3826
400 38.5303 1.8792
350 19.5438 2.1477
350 24.2224 2.1544
350 27.0301 2.1208
350 29.2368 2.0604
350 31.1102 1.9463
350 31.7844 1.5973
300 14.3362 1.8054
300 19.3493 1.7852
300 21.4217 1.7651
300 23.4944 1.7181
300 25.2336 1.6376
300 26.5071 1.4228
250 11.1324 1.5369
250 15.6110 1.5101
250 17.2824 1.4832
250 18.3522 1.4631
250 19.2214 1.4430
250 21.8308 1.2819 ];
p=data(:,[1 3])';
t=data(:,2)';
% input data for interpolation
data1=[ 425 2.3000
425 2.3500
425 2.4000
425 2.4500
425 2.5000
425 2.5500
425 2.6000
425 2.6500
425 2.7000
425 2.7500
425 2.8000
425 2.8500
425 2.9000
425 2.9500
425 3.0000 ];
inputInterp=data1';
net=newrbe(p,t);
outTrain=sim(net,p);
% comparison of samples and predictions
plot(outTrain,p(2,:),'o',t,p(2,:),'r*')
hold on
% interpolation
% outInterp=sim(net,inputInterp);
% plot(outInterp,inputInterp(2,:),'o')
0 Kommentare
Akzeptierte Antwort
Greg Heath
am 10 Aug. 2013
1. Standarize the inputs to have zero-mean and unit-variance
2. Design two nets
a. Odd indices 1:2:55
b. Even indices 2:2:54
3. Determine good spread values
a. Vary the spread on the odds and test with the evens
b. Vary the spread on the evens and test with the odds
c. Choose a good spread value for a combined data design
4. Test with the normalized non-design data1
Thank you for formally accepting my answer
Greg
1 Kommentar
Weitere Antworten (1)
Greg Heath
am 11 Aug. 2013
Bearbeitet: Greg Heath
am 11 Aug. 2013
%1. I have normalized the training data and the interpolation inputs, but the result is not as desired.
That is no help. Show your new code.
% 2. The variance in Guassian function is also called smoothing factor, is it the same meaning with 'spread' in function net=newrbe(P,T,spread)?
No. Unfortunately, the help documentation on newrbe stinks. Try the doc command
doc newrbe
Maybe help and doc on the other rbf functions will help ... See Also
newgrnn | newpnn | newrb |
%3. I don't understand how to design two nets to predict. Could you show me the codes if possible? Thank you very much!
Very simple.
Just divide the data in half (odd/even).
Loop over spread values
Design a net with the evens
Test with the odds
Choose the best spread value
Repeat with evens and odds reversed in design and test roles.
Combine those 2 "best" spread values
Use the combined value to design a net with all of the data.
Now test all 3 nets on data1.
Thank you for formally accepting my answer
Greg
2 Kommentare
Greg Heath
am 12 Aug. 2013
No. Spread stays constant. I vary it ( and most trial and error searches) by using a geometric grid [ ... 0.25, 0.5, 1, 2, 4, ...] for multipliers of the default value given in the documentation.
For each value I create 10 designs by using different random initial weights.
After debugging, the code should run in less than a few minutes.
You can probably find something useful by searching on
greg spread
HTH
Greg
Siehe auch
Kategorien
Mehr zu Sequence and Numeric Feature Data Workflows finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!