How can I improve the output of my neural network?

I have a dataset with 150 rows, 45 functions and 40 outputs. I can overflow the data, but I cannot get acceptable results for my set of cross validations.

With 25 hidden layers and quite a lot of iterations, I was able to get 94% accuracy on my training set; put a smile on my face. But the cross-validation result was less than 15%.

So to soften the override, I started playing with the regularization parameter (lambda) as well as the number of hidden layers. The best result (CV) I could get was 24% on the training set and 34% on the training set with lambda = 1.70 hidden layers and 14,000 iterations. The increase in inertia also worsened it; I can't figure out why I can't improve the CV results with increased lambda and iterations?

Here are the core-hidden lambda-iter combinations I've tried:

https://docs.google.com/spreadsheets/d/11ObRTg05lZENpjUj4Ei3CbHOh5mVzF7h9PKHq6Yn6T4/edit?usp=sharing

Any suggested way to try smarter regulation? Parameter-hidden Layer-iters combinations? Or other ways to improve my NN? I am using my matlab code from Andrew Ng ML class (uses backpropagation algorithm.)

+3


source to share


3 answers


It is very difficult to learn any of the 150 tutorial examples with 45 features (and if I read your question correctly, 40 possible release classes). You need much brighter learning examples if you want to learn a sane classifier - perhaps tens or hundreds of thousands if you have 40 possible classes. Even for binary classification or regression, you will probably need thousands of examples that you have 45 significant functions.



+5


source


Some suggestions:



  • retraining occurs primarily when the structure of the neural network is too complex for the problem under consideration. If the structure of NN is not too complex, increasing the number of iterations should not decrease the prediction accuracy.

  • 70 hidden layers is quite a lot, you can try to drastically reduce the number of hidden layers (down to 3-15) and increase the number of iterations. It seems from your file that 15 hidden layers is fine compared to 70 hidden layers

  • when decreasing the number of hidden layers, you can vary the number of neurons in the hidden layers (increase / decrease) and check how the results change.

+3


source


I agree with Logan. What you see in your dataset makes sense. If you just train an NN classifier with 45 functions for 40 classes, you will get more accuracy because you have more options than the output classes. Thus, the model can in principle "assign" each function to one of the output sections, but the resulting model will be severely overloaded and probably not representative of what you are modeling. Your significantly lower cross-validation results appear to be correct.

You must rethink your approach: why do you have 40 classes? Maybe you can change your problem into a regressive problem instead of a classification problem? Also try exploring some other algorithms like Random Forrest. Or reduce the number of functions significantly.

+2


source







All Articles