一、 背景
股票作为人民金融投资的普遍方式,如何在股票中赚钱成为股民的共同目标。
要想在股票交易中赚钱便要掌握股票的走势,因此股票价格预测工作引起社会及学术界的广泛关注。股票的走势随市场变动,而且受诸多因素影响,如国际环境,政策变化,行业发展,市场情绪等等,这使得股民很难预测股票的走势。理论上,根据股票以往的价格走势,可以预测股票的未来走势。因为股票预测是高度非线性的,这就要预测模型要能够处理非线性问题,并且,股票具有时间序列的特性,因此适合用循环神经网络对股票进行预测。虽然循环神经网络(RNN),允许信息的持久化,然而,一般的RNN模型对具备长记忆性的时间序列数据刻画能力较弱,在时间序列过长的时候,因为存在梯度消散和梯度爆炸现象RNN训练变得非常困
难。Hochreiter 和 Schmidhuber 提出的长短期记忆( LongShort-TermMemory,
LSTM)模型在RNN结构的基础上进行了改造,从而解决了RNN模型无法刻画时间序列长记忆性的问题。因此,本文基于LSTM实现一个股票价格预测模型。
二、 主要技术介绍
1. RNN模型
在传统的RNN(循环神经网络)中,所有的w都是同一个w,经过同一个cell 的时候,都会保留输入的记忆,再加上另外一个要预测的输入,所以预测包含了之前所有的记忆加上此次的输入。所有RNN都具有一种重复神经网络模块的链式的形式。在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个 tanh层。
当权重大于1时,反向传播误差时,误差将会一直放大,导致梯度爆炸;当权重小于1时,误差将会一直缩小,导致梯度消失,进而导致网络权重更新缓慢,无法体现出RNN的长期记忆的效果,使得RNN太过健忘。RNN模型的结构如图:
图 |
1 |
RNN |
模型结构示意图 |
2. LSTM模型
长短期记忆模型(long-shorttermmemory)是一种特殊的RNN模型,是为了解决反向传播过程中存在梯度消失和梯度爆炸现象,通过引入门(gate)机制,解决了RNN模型不具备的长记忆性问题,LSTM模型的结构如图:
图2 LSTM模型结构示意图三、 实例分析
1. 数据说明
实验数据来自上证指数的csv文件,包含一支股票5430个连续交易日的数据。其中每条数据包括:id,股票代码,交易日,当日收盘价,当日开盘价,当日最高股价,当日最低股价,上一交易日收盘价,涨跌值,涨跌幅百分比,成交量(股),成交金额。
图 |
3 |
数据列表示意图 |
2. 数据可视化
为了直观感受股票价格走势,对当日收盘价,当日开盘价,当日最高股价,当日最低股价以及成交量随交易日的变化趋势进行可视化,结果如图4。我们可以发现股票成交量和股票价格存在一定的关系,那么之后可以在网络中结合股票成交量来预测股票价格。
图4 数据可视化结果
3. 数据预处理
- 去除id、股票代码、前一天的收盘价、交易日期等对训练无用的无效数据。
- 对所有数据统计当日收盘价的最大值max和最小值min,然后对每条数据的当日收盘价进行标准化:
z xmin
maxmin
前99%条数据用作训练数据,后1%条数据用作测试数据。
4. LSTM模型参数
- 输入神经元个数 input_size = 选取列数
- 输出神经元个数 output_size = 1 (预测值个数)
- 隐藏层的维度:32
- 学习率 lr = 0.0001
- 随机初始化网络权重
5. 损失函数
本实验采取常用的均方误差损失。平方损失也可以理解为是最小二乘法,一般在回归问题中比较常见,最小二乘法的基本原理是:最优拟合直线是使各点到回归直线的距离和最小的直线,即平方和最小。
1 N 2
L (Y f (X))
N i1
6. 预测误差
本实验采取相对偏差来衡量模型的预测能力,公式为:
E (predict real)/ real*100%
四、 实验结果
损失函数变化曲线如图:
图5 损失函数的变化曲线
预测股价和真实股价的相对偏差在(-4%,7%)之间,差异的可视化结果如图6所示:
图 |
6 |
预测股价和真实股价的差异 |
五、 总结
通过学习数据挖掘概论这门课,我学习了数据挖掘能解决什么问题,以及常
用的数据挖掘算法。本文利用pytorch搭建了一个LSTM模型实现了对股票价格的预测。实验结果显示预测模型可以较好地预测股票的走势。之后可以通过调整网络参数和网络结构来继续优化模型,进一步提升预测效果。
参考文献:
- S.HochreiterandJ.Schmidhuber,"LongShort-TermMemory,"inNeural Computation, vol. 9, no. 8, pp. 1735-1780, 15 Nov. 1997, doi:
10.1162/neco.1997.9.8.1735.
- 基于 LSTM 的股票预测模型_python 实现_张 xm_的博客-CSDN 博客_股票预测模型
一、 背景
股票作为人民金融投资的普遍方式,如何在股票中赚钱成为股民的共同目标。
要想在股票交易中赚钱便要掌握股票的走势,因此股票价格预测工作引起社会及学术界的广泛关注。股票的走势随市场变动,而且受诸多因素影响,如国际环境,政策变化,行业发展,市场情绪等等,这使得股民很难预测股票的走势。理论上,根据股票以往的价格走势,可以预测股票的未来走势。因为股票预测是高度非线性的,这就要预测模型要能够处理非线性问题,并且,股票具有时间序列的特性,因此适合用循环神经网络对股票进行预测。虽然循环神经网络(RNN),允许信息的持久化,然而,一般的RNN模型对具备长记忆性的时间序列数据刻画能力较弱,在时间序列过长的时候,因为存在梯度消散和梯度爆炸现象RNN训练变得非常困
难。Hochreiter 和 Schmidhuber 提出的长短期记忆( LongShort-TermMemory,
LSTM)模型在RNN结构的基础上进行了改造,从而解决了RNN模型无法刻画时间序列长记忆性的问题。因此,本文基于LSTM实现一个股票价格预测模型。
二、 主要技术介绍
1. RNN模型
在传统的RNN(循环神经网络)中,所有的w都是同一个w,经过同一个cell 的时候,都会保留输入的记忆,再加上另外一个要预测的输入,所以预测包含了之前所有的记忆加上此次的输入。所有RNN都具有一种重复神经网络模块的链式的形式。在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个 tanh层。
当权重大于1时,反向传播误差时,误差将会一直放大,导致梯度爆炸;当权重小于1时,误差将会一直缩小,导致梯度消失,进而导致网络权重更新缓慢,无法体现出RNN的长期记忆的效果,使得RNN太过健忘。RNN模型的结构如图:
图 |
1 |
RNN |
模型结构示意图 |
2. LSTM模型
长短期记忆模型(long-shorttermmemory)是一种特殊的RNN模型,是为了解决反向传播过程中存在梯度消失和梯度爆炸现象,通过引入门(gate)机制,解决了RNN模型不具备的长记忆性问题,LSTM模型的结构如图:
图2 LSTM模型结构示意图三、 实例分析
1. 数据说明
实验数据来自上证指数的csv文件,包含一支股票5430个连续交易日的数据。其中每条数据包括:id,股票代码,交易日,当日收盘价,当日开盘价,当日最高股价,当日最低股价,上一交易日收盘价,涨跌值,涨跌幅百分比,成交量(股),成交金额。
图 |
3 |
数据列表示意图 |
2. 数据可视化
为了直观感受股票价格走势,对当日收盘价,当日开盘价,当日最高股价,当日最低股价以及成交量随交易日的变化趋势进行可视化,结果如图4。我们可以发现股票成交量和股票价格存在一定的关系,那么之后可以在网络中结合股票成交量来预测股票价格。
图4 数据可视化结果
3. 数据预处理
- 去除id、股票代码、前一天的收盘价、交易日期等对训练无用的无效数据。
- 对所有数据统计当日收盘价的最大值max和最小值min,然后对每条数据的当日收盘价进行标准化:
z xmin
maxmin
前99%条数据用作训练数据,后1%条数据用作测试数据。
4. LSTM模型参数
- 输入神经元个数 input_size = 选取列数
- 输出神经元个数 output_size = 1 (预测值个数)
- 隐藏层的维度:32
- 学习率 lr = 0.0001
- 随机初始化网络权重
5. 损失函数
本实验采取常用的均方误差损失。平方损失也可以理解为是最小二乘法,一般在回归问题中比较常见,最小二乘法的基本原理是:最优拟合直线是使各点到回归直线的距离和最小的直线,即平方和最小。
1 N 2
L (Y f (X))
N i1
6. 预测误差
本实验采取相对偏差来衡量模型的预测能力,公式为:
E (predict real)/ real*100%
四、 实验结果
损失函数变化曲线如图:
图5 损失函数的变化曲线
预测股价和真实股价的相对偏差在(-4%,7%)之间,差异的可视化结果如图6所示:
图 |
6 |
预测股价和真实股价的差异 |
五、 总结
通过学习数据挖掘概论这门课,我学习了数据挖掘能解决什么问题,以及常
用的数据挖掘算法。本文利用pytorch搭建了一个LSTM模型实现了对股票价格的预测。实验结果显示预测模型可以较好地预测股票的走势。之后可以通过调整网络参数和网络结构来继续优化模型,进一步提升预测效果。
参考文献:
- S.HochreiterandJ.Schmidhuber,"LongShort-TermMemory,"inNeural Computation, vol. 9, no. 8, pp. 1735-1780, 15 Nov. 1997, doi:
10.1162/neco.1997.9.8.1735.
- 基于 LSTM 的股票预测模型_python 实现_张 xm_的博客-CSDN 博客_股票预测模型
一、 背景
股票作为人民金融投资的普遍方式,如何在股票中赚钱成为股民的共同目标。
要想在股票交易中赚钱便要掌握股票的走势,因此股票价格预测工作引起社会及学术界的广泛关注。股票的走势随市场变动,而且受诸多因素影响,如国际环境,政策变化,行业发展,市场情绪等等,这使得股民很难预测股票的走势。理论上,根据股票以往的价格走势,可以预测股票的未来走势。因为股票预测是高度非线性的,这就要预测模型要能够处理非线性问题,并且,股票具有时间序列的特性,因此适合用循环神经网络对股票进行预测。虽然循环神经网络(RNN),允许信息的持久化,然而,一般的RNN模型对具备长记忆性的时间序列数据刻画能力较弱,在时间序列过长的时候,因为存在梯度消散和梯度爆炸现象RNN训练变得非常困
难。Hochreiter 和 Schmidhuber 提出的长短期记忆( LongShort-TermMemory,
LSTM)模型在RNN结构的基础上进行了改造,从而解决了RNN模型无法刻画时间序列长记忆性的问题。因此,本文基于LSTM实现一个股票价格预测模型。
二、 主要技术介绍
1. RNN模型
在传统的RNN(循环神经网络)中,所有的w都是同一个w,经过同一个cell 的时候,都会保留输入的记忆,再加上另外一个要预测的输入,所以预测包含了之前所有的记忆加上此次的输入。所有RNN都具有一种重复神经网络模块的链式的形式。在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个 tanh层。
当权重大于1时,反向传播误差时,误差将会一直放大,导致梯度爆炸;当权重小于1时,误差将会一直缩小,导致梯度消失,进而导致网络权重更新缓慢,无法体现出RNN的长期记忆的效果,使得RNN太过健忘。RNN模型的结构如图:
图 |
1 |
RNN |
模型结构示意图 |
2. LSTM模型
长短期记忆模型(long-shorttermmemory)是一种特殊的RNN模型,是为了解决反向传播过程中存在梯度消失和梯度爆炸现象,通过引入门(gate)机制,解决了RNN模型不具备的长记忆性问题,LSTM模型的结构如图:
图2 LSTM模型结构示意图三、 实例分析
1. 数据说明
实验数据来自上证指数的csv文件,包含一支股票5430个连续交易日的数据。其中每条数据包括:id,股票代码,交易日,当日收盘价,当日开盘价,当日最高股价,当日最低股价,上一交易日收盘价,涨跌值,涨跌幅百分比,成交量(股),成交金额。
图 |
3 |
数据列表示意图 |
2. 数据可视化
为了直观感受股票价格走势,对当日收盘价,当日开盘价,当日最高股价,当日最低股价以及成交量随交易日的变化趋势进行可视化,结果如图4。我们可以发现股票成交量和股票价格存在一定的关系,那么之后可以在网络中结合股票成交量来预测股票价格。
图4 数据可视化结果
3. 数据预处理
- 去除id、股票代码、前一天的收盘价、交易日期等对训练无用的无效数据。
- 对所有数据统计当日收盘价的最大值max和最小值min,然后对每条数据的当日收盘价进行标准化:
z xmin
maxmin
前99%条数据用作训练数据,后1%条数据用作测试数据。
4. LSTM模型参数
- 输入神经元个数 input_size = 选取列数
- 输出神经元个数 output_size = 1 (预测值个数)
- 隐藏层的维度:32
- 学习率 lr = 0.0001
- 随机初始化网络权重
5. 损失函数
本实验采取常用的均方误差损失。平方损失也可以理解为是最小二乘法,一般在回归问题中比较常见,最小二乘法的基本原理是:最优拟合直线是使各点到回归直线的距离和最小的直线,即平方和最小。
1 N 2
L (Y f (X))
N i1
6. 预测误差
本实验采取相对偏差来衡量模型的预测能力,公式为:
E (predict real)/ real*100%
四、 实验结果
损失函数变化曲线如图:
图5 损失函数的变化曲线
预测股价和真实股价的相对偏差在(-4%,7%)之间,差异的可视化结果如图6所示:
图 |
6 |
预测股价和真实股价的差异 |
五、 总结
通过学习数据挖掘概论这门课,我学习了数据挖掘能解决什么问题,以及常
用的数据挖掘算法。本文利用pytorch搭建了一个LSTM模型实现了对股票价格的预测。实验结果显示预测模型可以较好地预测股票的走势。之后可以通过调整网络参数和网络结构来继续优化模型,进一步提升预测效果。
参考文献:
- S.HochreiterandJ.Schmidhuber,"LongShort-TermMemory,"inNeural Computation, vol. 9, no. 8, pp. 1735-1780, 15 Nov. 1997, doi:
10.1162/neco.1997.9.8.1735.
- 基于 LSTM 的股票预测模型_python 实现_张 xm_的博客-CSDN 博客_股票预测模型
一、 背景
股票作为人民金融投资的普遍方式,如何在股票中赚钱成为股民的共同目标。
要想在股票交易中赚钱便要掌握股票的走势,因此股票价格预测工作引起社会及学术界的广泛关注。股票的走势随市场变动,而且受诸多因素影响,如国际环境,政策变化,行业发展,市场情绪等等,这使得股民很难预测股票的走势。理论上,根据股票以往的价格走势,可以预测股票的未来走势。因为股票预测是高度非线性的,这就要预测模型要能够处理非线性问题,并且,股票具有时间序列的特性,因此适合用循环神经网络对股票进行预测。虽然循环神经网络(RNN),允许信息的持久化,然而,一般的RNN模型对具备长记忆性的时间序列数据刻画能力较弱,在时间序列过长的时候,因为存在梯度消散和梯度爆炸现象RNN训练变得非常困
难。Hochreiter 和 Schmidhuber 提出的长短期记忆( LongShort-TermMemory,
LSTM)模型在RNN结构的基础上进行了改造,从而解决了RNN模型无法刻画时间序列长记忆性的问题。因此,本文基于LSTM实现一个股票价格预测模型。
二、 主要技术介绍
1. RNN模型
在传统的RNN(循环神经网络)中,所有的w都是同一个w,经过同一个cell 的时候,都会保留输入的记忆,再加上另外一个要预测的输入,所以预测包含了之前所有的记忆加上此次的输入。所有RNN都具有一种重复神经网络模块的链式的形式。在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个 tanh层。
当权重大于1时,反向传播误差时,误差将会一直放大,导致梯度爆炸;当权重小于1时,误差将会一直缩小,导致梯度消失,进而导致网络权重更新缓慢,无法体现出RNN的长期记忆的效果,使得RNN太过健忘。RNN模型的结构如图:
图 |
1 |
RNN |
模型结构示意图 |
2. LSTM模型
长短期记忆模型(long-shorttermmemory)是一种特殊的RNN模型,是为了解决反向传播过程中存在梯度消失和梯度爆炸现象,通过引入门(gate)机制,解决了RNN模型不具备的长记忆性问题,LSTM模型的结构如图:
图2 LSTM模型结构示意图三、 实例分析
1. 数据说明
实验数据来自上证指数的csv文件,包含一支股票5430个连续交易日的数据。其中每条数据包括:id,股票代码,交易日,当日收盘价,当日开盘价,当日最高股价,当日最低股价,上一交易日收盘价,涨跌值,涨跌幅百分比,成交量(股),成交金额。
图 |
3 |
数据列表示意图 |
2. 数据可视化
为了直观感受股票价格走势,对当日收盘价,当日开盘价,当日最高股价,当日最低股价以及成交量随交易日的变化趋势进行可视化,结果如图4。我们可以发现股票成交量和股票价格存在一定的关系,那么之后可以在网络中结合股票成交量来预测股票价格。
图4 数据可视化结果
3. 数据预处理
- 去除id、股票代码、前一天的收盘价、交易日期等对训练无用的无效数据。
- 对所有数据统计当日收盘价的最大值max和最小值min,然后对每条数据的当日收盘价进行标准化:
z xmin
maxmin
前99%条数据用作训练数据,后1%条数据用作测试数据。
4. LSTM模型参数
- 输入神经元个数 input_size = 选取列数
- 输出神经元个数 output_size = 1 (预测值个数)
- 隐藏层的维度:32
- 学习率 lr = 0.0001
- 随机初始化网络权重
5. 损失函数
本实验采取常用的均方误差损失。平方损失也可以理解为是最小二乘法,一般在回归问题中比较常见,最小二乘法的基本原理是:最优拟合直线是使各点到回归直线的距离和最小的直线,即平方和最小。
1 N 2
L (Y f (X))
N i1
6. 预测误差
本实验采取相对偏差来衡量模型的预测能力,公式为:
E (predict real)/ real*100%
四、 实验结果
损失函数变化曲线如图:
图5 损失函数的变化曲线
预测股价和真实股价的相对偏差在(-4%,7%)之间,差异的可视化结果如图6所示:
图 |
6 |
预测股价和真实股价的差异 |
五、 总结
通过学习数据挖掘概论这门课,我学习了数据挖掘能解决什么问题,以及常
用的数据挖掘算法。本文利用pytorch搭建了一个LSTM模型实现了对股票价格的预测。实验结果显示预测模型可以较好地预测股票的走势。之后可以通过调整网络参数和网络结构来继续优化模型,进一步提升预测效果。
参考文献:
- S.HochreiterandJ.Schmidhuber,"LongShort-TermMemory,"inNeural Computation, vol. 9, no. 8, pp. 1735-1780, 15 Nov. 1997, doi:
10.1162/neco.1997.9.8.1735.
- 基于 LSTM 的股票预测模型_python 实现_张 xm_的博客-CSDN 博客_股票预测模型
一、 背景
股票作为人民金融投资的普遍方式,如何在股票中赚钱成为股民的共同目标。
要想在股票交易中赚钱便要掌握股票的走势,因此股票价格预测工作引起社会及学术界的广泛关注。股票的走势随市场变动,而且受诸多因素影响,如国际环境,政策变化,行业发展,市场情绪等等,这使得股民很难预测股票的走势。理论上,根据股票以往的价格走势,可以预测股票的未来走势。因为股票预测是高度非线性的,这就要预测模型要能够处理非线性问题,并且,股票具有时间序列的特性,因此适合用循环神经网络对股票进行预测。虽然循环神经网络(RNN),允许信息的持久化,然而,一般的RNN模型对具备长记忆性的时间序列数据刻画能力较弱,在时间序列过长的时候,因为存在梯度消散和梯度爆炸现象RNN训练变得非常困
难。Hochreiter 和 Schmidhuber 提出的长短期记忆( LongShort-TermMemory,
LSTM)模型在RNN结构的基础上进行了改造,从而解决了RNN模型无法刻画时间序列长记忆性的问题。因此,本文基于LSTM实现一个股票价格预测模型。
二、 主要技术介绍
1. RNN模型
在传统的RNN(循环神经网络)中,所有的w都是同一个w,经过同一个cell 的时候,都会保留输入的记忆,再加上另外一个要预测的输入,所以预测包含了之前所有的记忆加上此次的输入。所有RNN都具有一种重复神经网络模块的链式的形式。在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个 tanh层。
当权重大于1时,反向传播误差时,误差将会一直放大,导致梯度爆炸;当权重小于1时,误差将会一直缩小,导致梯度消失,进而导致网络权重更新缓慢,无法体现出RNN的长期记忆的效果,使得RNN太过健忘。RNN模型的结构如图:
图 |
1 |
RNN |
模型结构示意图 |
2. LSTM模型
长短期记忆模型(long-shorttermmemory)是一种特殊的RNN模型,是为了解决反向传播过程中存在梯度消失和梯度爆炸现象,通过引入门(gate)机制,解决了RNN模型不具备的长记忆性问题,LSTM模型的结构如图:
图2 LSTM模型结构示意图三、 实例分析
1. 数据说明
实验数据来自上证指数的csv文件,包含一支股票5430个连续交易日的数据。其中每条数据包括:id,股票代码,交易日,当日收盘价,当日开盘价,当日最高股价,当日最低股价,上一交易日收盘价,涨跌值,涨跌幅百分比,成交量(股),成交金额。
图 |
3 |
数据列表示意图 |
2. 数据可视化
为了直观感受股票价格走势,对当日收盘价,当日开盘价,当日最高股价,当日最低股价以及成交量随交易日的变化趋势进行可视化,结果如图4。我们可以发现股票成交量和股票价格存在一定的关系,那么之后可以在网络中结合股票成交量来预测股票价格。
图4 数据可视化结果
3. 数据预处理
- 去除id、股票代码、前一天的收盘价、交易日期等对训练无用的无效数据。
- 对所有数据统计当日收盘价的最大值max和最小值min,然后对每条数据的当日收盘价进行标准化:
z xmin
maxmin
前99%条数据用作训练数据,后1%条数据用作测试数据。
4. LSTM模型参数
- 输入神经元个数 input_size = 选取列数
- 输出神经元个数 output_size = 1 (预测值个数)
- 隐藏层的维度:32
- 学习率 lr = 0.0001
- 随机初始化网络权重
5. 损失函数
本实验采取常用的均方误差损失。平方损失也可以理解为是最小二乘法,一般在回归问题中比较常见,最小二乘法的基本原理是:最优拟合直线是使各点到回归直线的距离和最小的直线,即平方和最小。
1 N 2
L (Y f (X))
N i1
6. 预测误差
本实验采取相对偏差来衡量模型的预测能力,公式为:
E (predict real)/ real*100%
四、 实验结果
损失函数变化曲线如图:
图5 损失函数的变化曲线
预测股价和真实股价的相对偏差在(-4%,7%)之间,差异的可视化结果如图6所示:
图 |
6 |
预测股价和真实股价的差异 |
五、 总结
通过学习数据挖掘概论这门课,我学习了数据挖掘能解决什么问题,以及常
用的数据挖掘算法。本文利用pytorch搭建了一个LSTM模型实现了对股票价格的预测。实验结果显示预测模型可以较好地预测股票的走势。之后可以通过调整网络参数和网络结构来继续优化模型,进一步提升预测效果。
参考文献:
- S.HochreiterandJ.Schmidhuber,"LongShort-TermMemory,"inNeural Computation, vol. 9, no. 8, pp. 1735-1780, 15 Nov. 1997, doi:
10.1162/neco.1997.9.8.1735.
- 基于 LSTM 的股票预测模型_python 实现_张 xm_的博客-CSDN 博客_股票预测模型
一、 背景
股票作为人民金融投资的普遍方式,如何在股票中赚钱成为股民的共同目标。
要想在股票交易中赚钱便要掌握股票的走势,因此股票价格预测工作引起社会及学术界的广泛关注。股票的走势随市场变动,而且受诸多因素影响,如国际环境,政策变化,行业发展,市场情绪等等,这使得股民很难预测股票的走势。理论上,根据股票以往的价格走势,可以预测股票的未来走势。因为股票预测是高度非线性的,这就要预测模型要能够处理非线性问题,并且,股票具有时间序列的特性,因此适合用循环神经网络对股票进行预测。虽然循环神经网络(RNN),允许信息的持久化,然而,一般的RNN模型对具备长记忆性的时间序列数据刻画能力较弱,在时间序列过长的时候,因为存在梯度消散和梯度爆炸现象RNN训练变得非常困
难。Hochreiter 和 Schmidhuber 提出的长短期记忆( LongShort-TermMemory,
LSTM)模型在RNN结构的基础上进行了改造,从而解决了RNN模型无法刻画时间序列长记忆性的问题。因此,本文基于LSTM实现一个股票价格预测模型。
二、 主要技术介绍
1. RNN模型
在传统的RNN(循环神经网络)中,所有的w都是同一个w,经过同一个cell 的时候,都会保留输入的记忆,再加上另外一个要预测的输入,所以预测包含了之前所有的记忆加上此次的输入。所有RNN都具有一种重复神经网络模块的链式的形式。在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个 tanh层。
当权重大于1时,反向传播误差时,误差将会一直放大,导致梯度爆炸;当权重小于1时,误差将会一直缩小,导致梯度消失,进而导致网络权重更新缓慢,无法体现出RNN的长期记忆的效果,使得RNN太过健忘。RNN模型的结构如图:
图 |
1 |
RNN |
模型结构示意图 |
2. LSTM模型
长短期记忆模型(long-shorttermmemory)是一种特殊的RNN模型,是为了解决反向传播过程中存在梯度消失和梯度爆炸现象,通过引入门(gate)机制,解决了RNN模型不具备的长记忆性问题,LSTM模型的结构如图:
图2 LSTM模型结构示意图三、 实例分析
1. 数据说明
实验数据来自上证指数的csv文件,包含一支股票5430个连续交易日的数据。其中每条数据包括:id,股票代码,交易日,当日收盘价,当日开盘价,当日最高股价,当日最低股价,上一交易日收盘价,涨跌值,涨跌幅百分比,成交量(股),成交金额。
图 |
3 |
数据列表示意图 |
2. 数据可视化
为了直观感受股票价格走势,对当日收盘价,当日开盘价,当日最高股价,当日最低股价以及成交量随交易日的变化趋势进行可视化,结果如图4。我们可以发现股票成交量和股票价格存在一定的关系,那么之后可以在网络中结合股票成交量来预测股票价格。
图4 数据可视化结果
3. 数据预处理
- 去除id、股票代码、前一天的收盘价、交易日期等对训练无用的无效数据。
- 对所有数据统计当日收盘价的最大值max和最小值min,然后对每条数据的当日收盘价进行标准化:
z xmin
maxmin
前99%条数据用作训练数据,后1%条数据用作测试数据。
4. LSTM模型参数
- 输入神经元个数 input_size = 选取列数
- 输出神经元个数 output_size = 1 (预测值个数)
- 隐藏层的维度:32
- 学习率 lr = 0.0001
- 随机初始化网络权重
5. 损失函数
本实验采取常用的均方误差损失。平方损失也可以理解为是最小二乘法,一般在回归问题中比较常见,最小二乘法的基本原理是:最优拟合直线是使各点到回归直线的距离和最小的直线,即平方和最小。
1 N 2
L (Y f (X))
N i1
6. 预测误差
本实验采取相对偏差来衡量模型的预测能力,公式为:
E (predict real)/ real*100%
四、 实验结果
损失函数变化曲线如图:
图5 损失函数的变化曲线
预测股价和真实股价的相对偏差在(-4%,7%)之间,差异的可视化结果如图6所示:
图 |
6 |
预测股价和真实股价的差异 |
五、 总结
通过学习数据挖掘概论这门课,我学习了数据挖掘能解决什么问题,以及常
用的数据挖掘算法。本文利用pytorch搭建了一个LSTM模型实现了对股票价格的预测。实验结果显示预测模型可以较好地预测股票的走势。之后可以通过调整网络参数和网络结构来继续优化模型,进一步提升预测效果。
参考文献:
- S.HochreiterandJ.Schmidhuber,"LongShort-TermMemory,"inNeural Computation, vol. 9, no. 8, pp. 1735-1780, 15 Nov. 1997, doi:
10.1162/neco.1997.9.8.1735.
- 基于 LSTM 的股票预测模型_python 实现_张 xm_的博客-CSDN 博客_股票预测模型