hi, I was designing a neural network using the app in Matlab and I the MSE (mean squared error)that I got in the training set is 100-200. I don't have any more data to improve the network. So, should I go forward with the network or improve it in any other way?
John Williams answered .
2025-11-20
[ I N ] = size(x) [ O N ] = size(t) = size(y) Ntrn = No. of training examples ( Ntrn ~ 0.7*N is default ) Ntrneq = Ntrn*O % No. of training equations MSEtrn00 = mean(var(ttrn',1))% avg training target variance SSEtrn = sse(ttrn-ytrn) MSEtrn = SSEtrn/Ntrneq NMSEtrn = MSEtrn/MSEtrn00 Rsqtrn = 1 - NMSEtrn
Adjustments ("a") for degrees of freedom lost when evaluating the net with the same data that was used to estimate the weights:
H = number of hidden nodes Nw = (I+1)*H+(H+1)*O % No. of unknown weights Ndof = Ntrneq - Nw % No. of DOF MSEtrn00a = mean(var(ttrn',0))
MSEtrna = SSEtrn/Ndof NMSEtrna = MSEtrna/MSEtrn00a Rsqtrna = 1 - NMSEtrna
For many problems an appropriate training goal is
R2sqtrna >= 0.99
or
MSEtrn <= MSEtrngoal = 0.01*max(Ndof,0)*MSEtrn00a/Ntrneq