我参加了Coursera的ML课程并修改了其中一个作业,以构建“通用”神经网络以用于我的项目。随机数量的隐藏单位提高了测试集的准确性/ F分数
当我在同一个数据集上测试NN(5个输入,2个输出)时,通过调整参数,我发现通过为唯一隐藏层任意选择若干隐藏单位,验证/测试集显着改善。
例如一个隐藏单元的F-score是0.79,2,3和4是〜0.83,但如果我突然增加到100,我会得到一个完美的1.0。在某个时候,我得到的最低F-score是0.99。
我敢肯定在代码中没有错误,因为预测反映了所获得的F分数(加上当我将它作为家庭作业提交时,没有任何错误)。
这件事让我疯狂,因为据我所知,“良好做法”是保持输入和输出数量(在我的情况下为5到2)之间的隐藏单位数量。
您对此有何想法/参考?它只是更多的神经元,你扔在它更好?
谢谢。
链接到源代码和样本数据:https://github.com/mardurhack/NN_question_stackoverflow
嗨roganjosh,谢谢你的回应。 网络在训练和测试集上表现良好的事实应该表明没有过度配合。它缺乏CV集,因为我手动执行迭代,检查精度/ F分数,调整参数并重复(我知道这是一种快速而肮脏的方法,原谅我的懒惰)。 我不明白你所提的一些观点,正如我所说的,我知道Coursera的一点点ML,就是这样。但是如果你可以自己测试网络,我很乐意听到你得到的结果。 谢谢! –
你能澄清你不明白的部分吗?否则我无法解决它们。 – roganjosh
通过阅读你的其他答案,我明白我的“测试”集和你的“验证”集是一回事。我所做的就是针对两组测试模型,并检查是否没有过度拟合(即错误不会在测试集中增加)。所以我们称之为“验证集”。所以重点是:我越增加神经元的数量,**两个**组的错误越少,所以在这里没有过度拟合(据我所知)。希望我使情况更清楚。谢谢。 –