【发布时间】:2016-06-22 14:22:30
【问题描述】:
这是我在这个网站上的第一个问题。我试图通过让我的程序预测特定日期相对于前一天的温度是上升还是下降来练习神经网络。我的训练数据集包含前十天,以及它们相对于前一天是上升还是下降。我并不是暗示这是预测天气的有效方法,但这让我的问题更加混乱。
当我训练程序超过 25 天(50 天前到 25 天前)然后在接下来的 25 天(25 天前到昨天)进行测试时,我始终在测试集中获得 100% 的准确度。我添加了一个用于梯度下降的 alpha 并且有大约 60 个隐藏层,如果我将 alpha 设置为更大,比如 0.7,那么准确度会降低到 ~40%,所以我认为我的测试代码是正确的。
假设我有一个真正的 100% 准确度,我让程序预测明天的天气,然后使用那个和 9 天的历史来预测后天,依此类推,直到我预测了未来 5 天。然后我等着看天气会怎样,而我的程序的预测却很糟糕。我跑了一周来测试,预测第二天的准确率约为 60%,之后只有 10% 左右。
TL;DR 很抱歉散漫了细节,但我的问题是什么会导致神经网络在测试中达到 100% 的准确度,然后在实践中出现惊人的失败?感谢您的帮助,如果需要,我可以发布代码(有人在评论中解释如何)
【问题讨论】:
-
如果你的训练集和测试集不匹配,每个模型都会惨遭失败。在你的情况下,在夏天训练它,在冬天测试它。夏季准确率 100%,冬季表现不佳。
-
如果你的数据量很少(而且 25 天并没有那么多),你就会过拟合:数据会“记住”正确的选择,但不会“学习正确的规则”。要么增加训练数据,要么减少神经元数量。
-
我是通过减少突触层还是减小隐藏层的大小来降低神经元的数量?
标签: python neural-network prediction