如何改善神经网络输出?

Çag*_*lan 2 machine-learning neural-network cross-validation

我有一个150行,45个功能和40个输出的数据集.我可以很好地过度填充数据,但我的交叉验证集无法获得可接受的结果.

有25个隐藏层和相当多的迭代次数,我的训练集能够达到~94%的准确率; 在我脸上露出笑容.但交叉验证结果不到15%.

因此,为了减轻过度拟合,我开始使用正则化参数(lambda)以及隐藏层的数量.我得到的最好结果(CV)是训练集24%,训练集34%,lambda = 1,70个隐藏层和14000次迭代.增加it的数量也使情况变得更糟; 我无法理解为什么我不能通过增加lambda和iters来改善CV结果?

这是我尝试过的lambda-hiddenLayer-iter组合:

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

任何建议的方法尝试更智能的监管参数隐藏层分组合?还是其他改善我NN的方法?我使用来自Andrew Ng的ML类的matlab代码(使用反向传播算法.)

小智 5

从150个具有45个功能的训练样例中学习任何东西都非常困难(如果我正确地阅读了你的问题,那么40个可能的输出类别).如果你想学习一个合理的分类器,你需要更多标记的训练样例 - 如果你有40个可能的类,可能需要数十或数十万.即使对于二进制分类或回归,您可能需要数千个具有45个有意义功能的示例.