trial and error approach to find optimal hidden neurones number
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have decomposed the data into three parts: 70% (training), 10% (validation) and 20% (testing). When I used trial and error approch, I found the smallest MSE (0.53088525) of training with 15 hidden nodes but focusing on MSE of validation, the smallest MSE (0.27098756) was achieved with only one node!!!!!! it's makes sense???
we started with 1 hidden node and added one each time up to 20. trials=10.
Is 15 the optimal hidden neurone number????
Thanks in advance
2 commentaires
John D'Errico
le 11 Mai 2015
NO!
If there were a truly optimal value, do you think they would set it at that? Every problem is different.
Réponse acceptée
Greg Heath
le 14 Mai 2015
What are the sizes of the input [I N] and target [O N ] matrices?
What is Hub for Ntrneq = Ntrn*O = 0.7*N*O >= Nw = (I+1)*H+(H+1)*O?
You designed 200 nets? 10 for each of 20 values for H << Hub? (Typically, I only look at 10 values for H)
Were the random initial weights and data divisions different for each net?
If you use the degree-of-freedom adjustment for the training set performance
MSEtrna = SSEtrn/(Ntrneq-Nw)
MSEtrn00a = mean(var(target',0))
R2trna = 1 - MSEtrna/MSEtrn00a
you can plot the Rsquare summary statistics e.g., min, median, mean and max vs H for the trna, val and tst sets; i.e., Four plots, 3 curves each.
I typically use the median and mean plots to determine the smallest acceptable value for H.
Of course, if N isn't large enough to insure relatively stable trna/val/tst data division estimates you might want to use Bayesian regularization via TRAINBR. I am not that familiar with regularization. However, it tends to make the results much less sensitive to the value of H. Then the question of an "optimal value" tends to beome mute.
Greg
PS: The normalized NMSE = MSE/mean(var(target',1)) is scale dependent and therefore, easier to use.
4 commentaires
Greg Heath
le 24 Jan 2016
1. Trial and error on MSEval: Minimum H that satisfies MSEval < 0.01*mean(var(targetval',1))
2. net.divideFcn = ''. Trial and error on MSEtrna = SSEtrn/(Ntrneq-Nw). Minimum H that satisfies MSEtrna < 0.01*mean(var(targettrn',0))
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Sequence and Numeric Feature Data Workflows dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!