如何知道我是不是过度配合我的神经网络?

问题描述:

我想用NNTool在MATLAB上建立一个神经网络。我有一个庞大的数据集,有超过20万个样本。它有3个输入参数和1个输出。如何知道我是不是过度配合我的神经网络?

这是一个数据样本:U以0.5的步长变化,直到10(0.2; 0.5; 1.0 ... 10)。 n从0到1变化,m从0变到它等于n。

Here is a data sample: U varies at 0.5 step until 10 (0.2 ; 0.5 ; 1.0 ... 10). n varies from 0 to 1 and m varies from 0 until it equals n.

我使用列文伯格 - Marquartd算法一直在玩的神经元和隐藏层数。鄙视一点,我没有做其他参数。

我怎么能知道如果我没有使用如此庞大的数据集进行过度训练而获得了良好的性能?

这里是MATLAB告诉我的表现:

peformance

+0

我建议在此删除此问题并将其移至[交叉验证](https://stats.stackexchange.com)。尽管防止过度配合没有简单的答案,但确定何时您的模型已过度配置并不困难。交叉验证的人员可以很好地帮助您了解细节。 – Greenstick

我建议做以下几点:

(1)打破你的样本数据到训练/测试集。例如尝试30%/ 70%。 (2)选择一个配置:隐藏层的数量和每层神经元的数量。

(3)训练你的网络。

(4)将您的训练错误与您的测试错误进行比较。

(5)选择其他网络配置。 (6)做步骤(3)和(4)。

继续执行此过程,直到您对数据有更好的感受。如果您的测试错误相对您的培训错误非常小,那么您的网络配置可能会过度配合您的数据集。

+0

使用nntool代替命令行有什么缺点吗? –

+0

我对此不太确定,但我确实找到了可能对您有用的东西! https://www.quora.com/How-do-I-decide-between-nntool-or-nnstart-in-neural-network-toolbox-Matlab-for-training-data-Would-it-be-better-而不是使用命令行 – Alexandre

+0

如果您认为我的回答合适,请将其选为答案,因为这是我们在社区中获得声望的方式。谢谢。 – Alexandre