How can I improve performance of my Neural Network in Matlab?

3 views (last 30 days)
Hello
I have a highly overlapping EEG database that is to be divided into three different classes as per types of diseases. I have normalized the whole dataset and extracted 13 significant features out of it. Now I am training my network; as it was a huge dataset with (300x13) dimension so I reduced it using PCA. Please correct me If I am using the right procedure as it is appearing little complicated as a beginner. I have applied PCA individually to three classes of input data and from 100x13 for each set it delivered me 13x13 for each.
Finally I constructed my input matrix as 13x39 matrix {like: inputs = [XX; YY; ZZ]';}. I have designed target set with 3 output neurons (it is 3x39). Now I am training my network as
if true
% code
net = feedforwardnet(10,'traingdm');
%net.trainParam.lr = 0.0005;
%net.trainParam.mc = 0.09;
net.trainParam.goal=1e-6
net.performFcn='msereg';
%net.performParam.ratio=0.5;
net.trainParam.epochs=1000;
%net.trainParam.mem_reduc=2;
net.divideFcn = 'divideind';
net.divideParam.trainInd=1:27; % The first 27 inputs are for training.
net.divideParam.valInd=1:27; % The first 27 inputs are for validation.
net.divideParam.testInd=28:39; % The last 12 inputs are for testing the network.
net.plotFcns = {'plotperform','plottrainstate','ploterrhist', ... 'plotregression', 'plotfit'}; [net,tr] = train(net,inputs,targets); end
But it shows poor performance. Please help me to know whether I am using right technique or not (Is this right technique to implement PCA in Matlab)? And what kind of training I should use to improve classification results.
Thanks in Advance

Accepted Answer

Walter Roberson
Walter Roberson on 9 May 2017
When you do per-class feature selection like you are, you risk removing the information that differentiates the class from the other classes.
Imagine, for example, that you have X = [rand(100,12), 1*ones(100,1)] . Then in isolation, PCA would say that the last column has no variability and is uninteresting -- but clearly it could potentially be the main differentiation from Y and Z.
If your PCA is removing items with high variability instead of low variability, clearly you could still construct cases in which features had high variability within a class and yet were clearly differentiated from the same feature in a different class, such as by having non-overlapping ranges.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!