使用R和神经网络(neuralnet)预测价格

在R神经网络页面中,我正在使用神经网络函数尝试预测股票价格。

训练数据包含High、Low、Open、Close四列。

myformula <- close ~ High+Low+Openneuralnet(myformula,data=train_,hidden=c(5,3),linear.output=T)

我的问题是,根据下面的数据示例,你能告诉我公式应该是什么样的吗?

我有一个表格,包含“High”、“Low”、“Open”、“Close”四列,它有两行的值,每行代表一天的K线图。所以数据中的两行是前两天的K线图。我的目标是根据前两天的K线图预测下一根K线图,即“Open”、“High”、“Low”、“Close”。

我的神经网络将一次处理一个K线图的先前数据。我想知道下一根K线图是什么样的,那么我的R公式应该是什么样的?

谢谢,让我知道


回答:

我的神经网络将一次处理一个K线图的先前数据。我想知道下一根K线图是什么样的,那么我的R公式应该是什么样的?

在前馈神经网络中,你需要指定用于预测的特征以及要预测的目标。在你上面的例子中,特征例如是prev_close,目标是close。正如你在训练数据中看到的,你还没有prev_close,这就是我回答的重点,你需要先正确地表述问题。

如果你只有close,那么训练前馈神经网络是没有公式可用的。你需要创建prev_close,然后公式会是close ~ prev_close

*循环神经网络(RNN)可以基于序列进行训练,并根据输入序列输出预测,但那完全是另一回事

简单示例:基于最后两个收盘价预测收盘价

我编了一个非常简单的例子,只是为了说明问题表述,预测close,基于最后两个close值。我选择了一个隐藏层,里面有一个神经元。我设置了linear.output=TRUE,因为我们预测的是连续值(如之前讨论的回归问题,并且在neuralnet文档中提到,如果该值为TRUE,则不会有激活函数act.fct

*如果你用这个进行交易,你肯定会亏损。这只是为了展示如何在神经网络中构建这样的预测问题。不要用于实际操作。

问题表述

我想明确的一点是,如果你有一列价格,你需要为预测创建特征

prev_close_1 | prev_close_2 | close

神经网络面临的问题是基于prev_close_1prev_close_2预测close,因此公式是close ~ prev_close_1 + prev_close_2

这是网络架构

enter image description here

注意输入的是之前的收盘值,输出的是预测的收盘值。

library(neuralnet)N = 10prices <- data.frame(close=1:N) # 虚拟的直线上升趋势,持续N个周期 print(prices)shift <- function(x, n){  c(x[-(seq(n))], rep(NA, n))}# 形成训练数据框train <- data.frame(  prev_close_1=prices$close,  prev_close_2=shift(prices$close, 1),  close=shift(prices$close, 2))# 当对列进行时间滞后效果的移位时,一些行会出现NA# 让我们移除这些NAstrain <- na.omit(train)print(train)nn <- neuralnet(  formula=close ~ prev_close_1 + prev_close_2,  data=train,  hidden=c(1), # 一个隐藏层中有一个神经元  linear.output=TRUE # 我们想要回归而不是分类)print(prediction(nn))plot(nn)

虚拟价格的外观

这是你所拥有的,只是历史股票价格

   close1      12      23      34      45      56      67      78      89      910    10

神经网络训练的数据

这是你需要的,特征和目标,尝试形成下面的训练数据框中的行以理解移位/滞后效果。

prev_close_1 prev_close_2 close1            1            2     32            2            3     43            3            4     54            4            5     65            5            6     76            6            7     87            7            8     98            8            9    10

神经网络的预测

  prev_close_1 prev_close_2       close1            1            2 2.9942918642            2            3 4.0178283013            3            4 5.0029147894            4            5 5.9688557295            5            6 6.9786448496            6            7 8.0308100427            7            8 9.0510634568            8            9 9.945595495

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注