如何改进我的神经网络输出?

我有一个包含150行、45个特征和40个输出的数据集。我能够很好地过拟合数据,但无法在交叉验证集上获得可接受的结果。

使用25个隐藏层和相当多的迭代次数,我能够在训练集上获得约94%的准确率,这让我非常高兴。但交叉验证结果却不到15%。

为了减轻过拟合,我开始调整正则化参数(lambda)和隐藏层的数量。我能得到的最佳结果(CV)是在训练集上24%,在验证集上34%,使用lambda=1,70个隐藏层和14000次迭代。增加迭代次数反而使结果更差;我不明白为什么增加lambda和迭代次数无法改善CV结果?

以下是我尝试过的lambda-隐藏层-迭代组合:

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

有什么建议可以更聪明地尝试正则化参数-隐藏层-迭代的组合吗?或者有其他方法可以改进我的神经网络?我使用的是Andrew Ng的机器学习课程中的Matlab代码(使用反向传播算法)。


回答:

仅用150个训练样本和45个特征(如果你问题中的描述正确,还有40个可能的输出类别)很难学到任何东西。如果你想学习一个合理的分类器,你需要更多的标记训练样本——如果你有40个可能的类别,可能需要几十万或几百万个样本。即使是二元分类或回归,如果你有45个有意义的特征,你也可能需要数千个样本。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注