17

我正在研究一种算法,在那里我得到了一些输入并为它们提供了输出,并给出了 3 个月的输出(给予或接受)我需要一种方法来查找/计算可能是未来的输出。
现在,给出的这个问题可能与证券交易所有关,我们被赋予了一定的约束和一定的结果,我们需要找到下一个。
我偶然发现了神经网络股票市场预测,你可以用谷歌搜索,或者你可以在这里这里这里阅读。

要开始制作算法,我无法弄清楚层的结构应该是什么。
给定的约束是:

  • 输出总是整数。
  • 输出总是在 1 到 100 之间。
  • 说没有确切的输入,就像股票市场一样,我们只知道股票价格会在 1 和 100 之间波动,所以我们可能(或不?)认为这是唯一的输入。
  • 我们有过去 3 个月(或更多)的记录。

现在,我的第一个问题是,我需要多少个节点作为输入?

输出只有一个,很好。但正如我所说,我是否应该为输入层使用 100 个节点(假设股票价格总是整数并且总是 btw 1 和 100?)

隐藏层呢?有多少个节点?比如说,如果我在那里也有 100 个节点,我认为这不会对网络进行太多训练,因为我认为对于每个输入,我们还需要考虑所有先前的输入。

假设我们正在计算第 4 个月的第 1 天的输出,我们应该在隐藏/中间层有 90 个节点(为简单起见,假设每个月为 30 天)。现在有两种情况

  • 我们的预测是正确的,结果和我们预测的一样。
  • 我们的预测失败了,结果与我们预测的不同。

无论如何,现在当我们计算第 4 个月的第二天的输出时,我们不仅需要这 90 个输入,还需要最后一个结果(而不是预测,同样的!),所以我们现在在我们的中间/隐藏层中有 91 个节点。

依此类推,它将每天不断增加节点数量,AFAICT。

所以,我的另一个问题是如何定义/设置隐藏/中间层中的节点数,如果它是动态变化的。

我的最后一个问题是,是否还有其他我不知道的特定算法(对于这种事情/东西)?我应该使用而不是搞乱这些神经网络的东西吗?

最后,有什么我可能遗漏的东西可能会导致我(而不是我正在制作的算法)预测输出,我的意思是任何警告,或者任何可能导致我可能遗漏的错误?

4

3 回答 3

25

作为您的问题的答案,有很多话要说。实际上,您的问题通常解决了时间序列预测的问题,以及此任务的神经网络应用程序。我在这里只写了几个最重要的键,但在阅读完这篇文章后,您可能应该深入了解 Google 的查询结果time series prediction neural network。有很多作品都详细介绍了这些原则。也确实存在各种软件实现(带有源代码)(这里只是带有 c++ 代码的示例之一)。

1)我必须说,问题在于 99% 的数据预处理和选择正确的输入/输出因素,而只有 1% 的问题在于要使用的具体工具,无论是神经网络还是其他。顺便说一句,神经网络可以在内部实现大多数其他数据分析方法。例如,您可以将神经网络用于与 SVD 密切相关的主成分分析 (PCA),在另一个答案中提到。

2)输入/输出值严格适合特定区域的情况非常罕见。现实生活中的数据在绝对值上可以被认为是无界的(即使它的变化似乎产生了一个通道,它也可以在一瞬间被分解),但神经网络只能在稳定的条件下运行。这就是为什么通常首先将数据转换为增量(通过计算第 i 个点和 i-1 之间的增量,或log从它们的比率中获取)。我建议您无论如何都要使用您的数据,尽管您声明它在 [0, 100] 区域内。如果你不这样做,神经网络很可能会退化为所谓的幼稚预测器,它会产生一个预测,每个下一个值都等于前一个值。

然后将数据归一化为 [0, 1] 或 [-1, +1]。第二个适用于时间序列预测的情况,其中 +1 表示向上移动,-1 - 向下移动。对网络中的神经元使用 hypertanh 激活函数。

3)您应该向 NN 提供从 a 获得的输入数据sliding window日期。例如,如果您有一年的数据并且每个点都是一天,您应该选择窗口的大小 - 比如一个月 - 并每天滑动它,从过去到未来。窗口右边界的那一天是 NN 的目标输出。这是一种非常简单的方法(还有更复杂的方法),我之所以提到它只是因为您问如何处理不断到达的数据。答案是——你不需要每天都改变/扩大你的神经网络。只需使用具有固定窗口大小的常量结构并“忘记”(不提供给 NN)最旧的点。重要的是不要将所有数据视为单个输入,而是将其分成许多小向量并在它们上训练 NN,这样网络就可以泛化数据并找到规律性。

4)滑动窗口的大小是你的NN输入大小。输出大小为 1。您应该使用隐藏层大小来找到更好的性能。从输入和输出之间的某个值开始,例如 sqrt(in*out)。

根据最新研究,循环神经网络似乎更适合时间序列预测任务。

于 2012-10-30T12:19:28.430 回答
6

我同意斯坦的说法

1)我必须说问题在于数据预处理的99%

我将神经网络应用于各种航空航天应用已有 25 多年了,包括直升机飞行控制——设置输入/输出数据集就是一切——其他一切都是次要的。

我很惊讶,在 smirkman 的评论中,神经网络很快就被放弃了,“因为它们没有产生任何有价值的东西”——这告诉我,任何使用神经网络的人都没有使用它们的经验。

鉴于该主题讨论了神经网络股票市场预测 - 我会说我已经成功了。测试结果可从我的网站 www.nwtai.com 下载。

我不会透露它是如何完成的,但有足够多有趣的数据会让你想更认真地探索使用神经网络。

于 2015-08-19T22:48:34.003 回答
2

成千上万想要赢得 100 万美元NetFlix 奖金的人对这类问题进行了特别深入的研究。

较早的提交通常基于K 最近邻。后来的提交是使用奇异值分解支持向量机随机梯度下降进行的。获胜者使用了多种技术的混合。

阅读优秀的社区论坛将为您提供许多关于从过去预测未来的最佳方法的见解。您还将找到不同方法的大量源代码。

有趣的是,神经网络很快就被淘汰了,因为它们没有产生任何有价值的东西(我个人还没有看到非平凡的 NN 产生任何有价值的东西)。

如果您刚开始,我建议将 SVD 作为第一条路径;它很容易制作,并且经常对数据产生令人惊讶的见解。

祝你好运!

于 2012-10-30T11:54:21.373 回答