我有一个流程,它使用来自外汇市场的多个实时价格数据源并生成 2 个时间序列数据流作为其输出。输出是嘈杂的(即不像 sin 或 cos 那样平滑),并且两个流都绑定在 0 和 100 的值之间。
机器学习或 AI 中是否有一种方法可以帮助我识别一个信号何时为正值而一个信号为负值?我玩弄了简单的移动平均线和指数移动平均线来稍微平滑线条,但那样我会丢失太多信息。
我有一个流程,它使用来自外汇市场的多个实时价格数据源并生成 2 个时间序列数据流作为其输出。输出是嘈杂的(即不像 sin 或 cos 那样平滑),并且两个流都绑定在 0 和 100 的值之间。
机器学习或 AI 中是否有一种方法可以帮助我识别一个信号何时为正值而一个信号为负值?我玩弄了简单的移动平均线和指数移动平均线来稍微平滑线条,但那样我会丢失太多信息。
Lawnmower's suggestion sounds nice, but there are several additional points you should consider:
First, as far as I understand the question, there are more than two possible labels:
Second, manually marking the data will be very tedious, since most probably you will need a lot of data to train, test and validate your models. Mechanical turk can help you with this task
Even if you take Lawnmower's advice, I would smooth the data a little bit before the training
Plot every input variable against another and against the output to get some idea on how the variables affect the outcome. If pair-wise plotting isn't practically possible, try PCA or another dimension reduction technique
如何在原始数据上确定一个是非常积极的,而另一个是非常消极的。然后,仅当结果在该状态下持续足够长的时间或在某个小时间段的足够大的一部分内持续时,才将结果标记为显着。
你可以应用超级机器学习。
特征:最后n个数据点的值。标签:-1 递减 +1 递增
现在你只需要一些带标签的样本这将给出一个这样的表(这里n = 5):
# t-4, t-3, t-2, t-1, t, label
#-----------------------------
54, 43, 98, 1, 45, +1
21, 12, 5, 98, 4, +1
6, 78, 45, 65, 37 -1
...
现在使用一些现成的机器学习库(如 WEKA)并在此基础上训练分类器。根据算法,您还将获得结果确定性的测量值。您需要多少带标签的训练样本很难预测。一开始尝试100,但也可能超过1000。功能方面也有很多潜力。如果您不使用绝对值而是使用差异,也许效果会更好。
标记的训练数据可以手动标记。但是对于市场预测,通常可以根据历史数据自动执行此操作。
应该有很多关于股票预测的文献。人们已经(并且仍然)在这个领域进行了多年的研究。以上当然是非常原始的。
另一种方法是通过您的数据拟合曲线并对其进行导数。您对数据了解得越多,这种方法就越强大。例如,如果您对产生噪声的概率模型有很好的了解,则可以推导出“最佳”拟合(最大可能性等)。如果您对基础信号(您尝试测量的信号)有所了解,这也会有所帮助(它是线性的吗?二次的?,libschiz cont.?. bounded?, ...)。
这种方法需要可能无法获得的特定问题知识和大量数学知识。但这可能是非常有价值的,因为您最终不会像使用机器学习那样获得黑盒,而是获得您理解并可以分析的数学模型。
我不知道这个话题是否还存在,但我想我会提到我们有一些时间序列数据,这些数据也很嘈杂。为了生成显示数据的图表的趋势线,我们执行了“峰值降低”操作。
对于每个数据点,我们取前 5 个数据点的平均值和标准差(在最大日期范围内——我认为是 21 天)。然后,我们用前 5 个平均值测量当前值的距离,以标准偏差表示。如果该点高于或低于平均值 2 标准差,我们在计算趋势线时使用平均值而不是实际值。
如果出现持续的大幅跳跃或下降,则峰值降低步骤将随着时间的推移进行调整,并开始将异常值视为“新常态”。