- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在研究一种算法,我得到了一些输入并得到了它们的输出,并给出了 3 个月的输出(给予或接受)我需要一种方法来查找/计算 future 的输出.
现在,给定的这个问题可能与证券交易有关,我们有一定的约束条件和一定的结果,我们需要找到下一个。
我偶然发现了神经网络股市预测,你可以Google它,或者你可以阅读它 here , here和 here .
为了开始制作算法,我无法弄清楚层的结构应该是什么。
给定的约束是:
现在,我的第一个问题是,我需要多少个节点作为输入?
输出只有一个,很好。但正如我所说,我是否应该为输入层取 100 个节点(假定股票价格始终是整数并且总是 btw 1 和 100?)
隐藏层呢?有多少个节点?比如说,如果我也在那里使用 100 个节点,我认为这不会对网络进行太多训练,因为我认为对于每个输入,我们还需要考虑所有以前的输入。
比如说,我们正在计算第 4 个月的第 1 天的输出,我们应该在隐藏层/中间层有 90 个节点(为简单起见,假设每个月为 30 天)。现在有两种情况
无论如何,现在当我们计算第 4 个月第 2 天的输出时,我们不仅需要那 90 个输入,还需要最后一个结果(而不是预测,如果相同的话!),所以我们现在在中间/隐藏层中有 91 个节点。
依此类推,它会不断增加每天的节点数量,AFAICT。
所以,我的另一个问题是,如果动态变化,我该如何定义/设置隐藏层/中间层中的节点数。
我的最后一个问题是,是否还有我不知道的其他特定算法(对于这种事情/东西)?我应该使用它而不是摆弄这些神经网络的东西?
最后,有什么我可能遗漏的东西可能会导致我(而不是我正在制作的算法)预测输出,我的意思是任何警告,或者任何可能导致我可能遗漏的错误的东西?
最佳答案
您的问题的答案有很多。事实上,您的问题解决了一般时间序列预测的问题,以及神经网络在该任务中的应用。我在这里只写了几个最重要的关键,但在阅读本文之后,您可能应该深入了解 Google 的查询结果 time series prediction neural network
。有很多作品详细介绍了原理。也存在各种软件实现(带有源代码)( here is just one of examples with codes in c++ )。
1) 我必须说,问题 99% 与数据预处理和选择正确的输入/输出因素有关,只有 1% 与使用的具体仪器有关,无论是神经网络还是其他。附带说明一下,神经网络可以在内部实现大多数其他数据分析方法。例如,您可以使用神经网络进行主成分分析 (PCA),它与另一个答案中提到的 SVD 密切相关。
2) 输入/输出值严格符合特定区域的情况非常罕见。现实生活中的数据可以认为是绝对值无界的(即使它的变化看起来产生了 channel ,也可以在一瞬间分解),但神经网络只能在稳定的条件下运行。这就是为什么数据通常首先转换为增量(通过计算第 i 个点和 i-1 之间的增量,或者从它们的比率中获取 log
)。我建议你还是用你的数据来做,尽管你声明它在 [0, 100] 区域内。如果不这样做,神经网络很可能会退化为所谓的朴素预测器,它会生成每个下一个值都等于前一个值的预测。
然后数据被归一化为 [0, 1] 或 [-1, +1]。第二种适用于时间序列预测的情况,其中 +1 表示向上移动,-1 - 向下移动。对网络中的神经元使用 hypertanh 激活函数。
3) 您应该向 NN 提供从日期的滑动窗口
获得的输入数据。例如,如果你有一年的数据,每个点都是一天,你应该选择窗口的大小——比如一个月——然后一天一天地滑动它,从过去到 future 。恰好位于窗口右边界的那一天是 NN 的目标输出。这是一种非常简单的方法(还有更复杂的方法),我提到它只是因为你问如何处理连续到达的数据。答案是——您不需要每天更改/扩大您的神经网络。只需使用具有固定窗口大小的常量结构并“忘记”(不向神经网络提供)最旧的点。重要的是不要将所有数据都视为单一输入,而是将其分成许多小向量并在其上训练神经网络,这样网络就可以概括数据并找到规律性。
4) 滑动窗口的大小就是你的神经网络输入大小。输出大小为 1。您应该调整隐藏层大小以获得更好的性能。从输入和输出之间的某个值开始,例如 sqrt(in*out)。
根据最新研究,Recurrent Neural Networks似乎更适合时间序列预测任务。
关于algorithm - 神经网络和算法,预测过去的 future 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13132493/
我正在通过这个示例https://www.rusoto.org/futures.html学习Rust和Rusoto 而且我发现许多代码已经过时了。所以我改变了这样的代码: use rusoto_cor
这是一个理论问题。我有一个服务可以调用来完成工作,但该服务可能无法完成所有工作,因此我需要调用第二个服务来完成它。 我想知道是否有办法在没有 Await.result 的情况下做类似的事情map 函数
这个问题是关于如何阅读 Rust 文档并提高我对 Rust 的理解,从而了解如何解决这个特定的编译器错误。 我读过 tokio docs并试验了许多 examples .在编写自己的代码时,我经常遇到
我有一个使用分页的 HTTP api,我想将它包装到一个通用的 Rust 流中,以便所有端点都可以使用相同的接口(interface),这样我就可以使用 Stream 附带的特征函数特征。 我收到了这
我正在查看 AKKA 的 Java Futures API,我看到了很多处理同一类型的多个 future 的方法,但我没有看到任何处理不同类型的 future 的方法。我猜我让事情变得更加复杂了。 无
环境:Akka 2.1,scala 版本 2.10.M6,JDK 1.7,u5 现在是我的问题: 我有: future1 = Futures.future(new Callable>(){...});
我有一些代码可以将请求提交给另一个线程,该线程可能会也可能不会将该请求提交给另一个线程。这会产生 Future> 的返回类型.是否有一些非令人发指的方法可以立即将其变成 Future等待整个 futu
如果我有以下代码: Future a = new Future(() { print('a'); return 1; }); Future b = new Future.error('Error!')
我一直试图简化我在 Scala 中做 future 的方式。我有一次收到了 Future[Option[Future[Option[Boolean]]但我在下面进一步简化了它。有没有更好的方法来简化这
Scala 中从 Future[Option[Future[Int]]] 转换的最干净的方法是什么?至 Future[Option[Int]] ?甚至有可能吗? 最佳答案 有两个嵌套Future s
使用下面的示例,future2 如何在 future1 完成后使用 future1 的结果(不阻塞 future3 从被提交)? from concurrent.futures import Proc
这两个类代表了并发编程的优秀抽象,因此它们不支持相同的 API 有点令人不安。 具体根据docs : asyncio.Future is almost compatible with concurre
我正在尝试使用 wasm_bindgen 实现 API 类使用异步调用。 #![allow(non_snake_case)] use std::future::Future; use serde::{
这个问题在这里已经有了答案: Futures / Success race (3 个回答) 去年关闭。 所有的 future 最终可能会成功(有些可能会失败),但我们希望第一个成功。并希望将这一结果表
我在练习asyncio在编写多线程代码多年之后。 注意到一些我觉得很奇怪的东西。都在 asyncio在 concurrent有一个Future目的。 from asyncio import Futur
如何将Future[Option[Future[Option[X]]]]转换为Future[Option[X]]? 如果它是 TraversableOnce 而不是 Option 我会使用 Futur
我正在尝试同时发送 HTTP 请求。为此,我使用 concurrent.futures 这是简单的代码: import requests from concurrent import futures
我们在 vertx 中使用 Futures 的例子如下: Future fetchVehicle = getUserBookedVehicle(routingContext, client);
下面的函数,取自 here : fn connection_for( &self, pool_key: PoolKey, ) -> impl Future>, ClientError>
我正在围绕Java库编写一个小的Scala包装器。 Java库有一个对象QueryExecutor,它公开了2种方法: execute(query):结果 asyncExecute(query):Li
我是一名优秀的程序员,十分优秀!