Neural network curve fitting: How to tell the net that some samples are more important than others?
2 views (last 30 days)
Show older comments
Philip Ohnewein
on 5 Sep 2013
Edited: Philip Ohnewein
on 22 Nov 2013
Dear community,
I am using Matlab to evaluate a large set of physical measurements. What I am trying to do is a multidimensional curve fitting with the aid of the Neural Network toolbox in 2013a.
I am not a NN expert, so I mostly used the default values proposed by Matlab. I have a NN with 5 input variables, 1 output variable and 6864 samples. Basically, the NN does the fitting quite well with R=.997. This behavior is expected since it is known from physics that there is strong correlation between the 5 inputs and the output (but highly non-linear).
However, for some regions of the input variables, the NN results are not satisfying, as the differences between measurements and NN predictions are unreasonably high.
Now, I know from the measurements, that not all samples are equal in quality (measurement uncertainty, in this case). Thus, my straightforward approach was to assign some value of 'importance' to the input samples, meaning that those samples with low measurement uncertainty become 'more important' while samples with high meas. uncertainty are penalized.
I tried to find details about this sort of 'input weighting' in the User Guide and on google, but I have not found anything useful.
If you have any kind of alternative suggestions (using more than 1 hidden layer, etc.), please let me know. I am motivated to try everything :-)
Any help on my question is very highly appreciated! Thank you and regards, Philip
0 Comments
Accepted Answer
Greg Heath
on 6 Sep 2013
Always begin by using as many defaults as possible and the help example
net = finet(5) % NO semicolon! Will reveal all of the defaults that do not have to be explicitly specified
If the help example data set is not relevant enough for your problem, choose an appropriate MATLAB data set so that we can compare numbers
help nndatasets help fitnet help train help mse
[x,t] = simplefit_dataset; net = fitnet(5); [ net tr y e ]= train(net,x,t,{},{},ew);
Vary ew and monitor the error e.
Hope this helps.
Thank you for formally accepting my answer
Greg
0 Comments
More Answers (3)
Philip Ohnewein
on 7 Sep 2013
Edited: Philip Ohnewein
on 22 Nov 2013
1 Comment
Greg Heath
on 7 Sep 2013
This syntax was documented in 2004 when I started using MATLAB at home after I retired. Why the documentation was changed, I dunno. IIRC
[ net tr y e Xf Af ] = train( net, x, t, Xi, Ai, ew );
Sometimes looking at the source code helps. Sometime not.
type trainlm
type train
Greg Heath
on 5 Sep 2013
See help mse and doc mse regarding the input: error weights.
Hope this helps.
Thank you for formally accepting my answer
Greg
0 Comments
See Also
Categories
Find more on Sequence and Numeric Feature Data Workflows in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!