MATLAB: Problematic Ordinal Input Categorical Output Neural Network

categoricalneural networknominal datapattern recognitionpatternnet

Hello everyone.! I'm fairly new to the ANN, but I am making quite an effort on that. I have a problem with ordinal input (numbers from 1-5 in each column, arrays are the observations (172) ) and categorical output (A–>10000 , B–>010000, C–>00100 etc) I am using patternet with 100 hidden neurons and
net.layers{1}.transferFcn = 'tansig';
net.layers{2}.transferFcn = 'logsig';
although I have given a shot to softmax and other transfer functions. Also I use
net.divideFcn = 'dividerand';
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;
net.trainFcn = 'trainscg';
net.trainParam.max_fail= 1000;
net.inputs{1}.processFcns = {'removeconstantrows','fixunknowns','mapminmax'};
net.outputs{2}.processFcns = {'removeconstantrows'};
net.trainParam.epochs=1000;
net.trainParam.min_grad=0;
this block in order to finalize my network. However, I have not achieved any greater accuracy the 52%.. Is there any specific suggestion.? Thank you everyone. I hope I was accurate enough.

Best Answer

1. It looks like you can delete the above equations because they are defaults.
2. You definitely need to substantially reduce the No. of hidden nodes
[ I N ] = size(input) % = ?


[ O N ] = size(target)% = ?
Ntrn = N -2*round(0.15*N)% = ?
Ntrneq = Ntrn*O % =? No. of training equations
For an I-H-O net, the number of unknown weights is
Nw = (I+1)H+(H+1)*O
No. of unknowns is not larger than number of equations when
H < Hub = (Ntrneq-O)/(I+O+1)
Using the code at
help patternnet
and/or
doc patternnet
where H = 10 (default)
find out how much of the average target variance the net can model
MSE00 = mean((vartarget',1)); MSE reference
NMSE = mse(target-output)/MSE00 %Normalized MSE
Rsq = 1-NMSE ( > 0.99 is my goal)
Loop over i = 1:Ntrials = 10, Then check the 10 results to see if H can be decreased or should be increased.
For examples, search the NEWSGROUP and ANSWERS using
patternnet greg
Hope this helps
Thank you for formally accepting my answer
Greg