编程技术网

关注微信公众号,定时推送前沿、专业、深度的编程技术资料。

 找回密码
 立即注册

QQ登录

只需一步,快速开始

极客时间

使用深度卷积网络的动手股票价格时间序列预测

Deepesh Python 2022-1-10 23:46 176人围观

腾讯云服务器

Written by: Avinash Kumar Pandey (Research Associate, ISB Hyderabad)

介绍:

在本文中,我们将学习如何应用深度卷积网络以预测Python中的1D时间序列/序列。该模型可以很容易地应用于股价预测问题。深度CNNS在图像处理,计算机视觉等地区非常受欢迎,最近,研究界已经表现出对使用CNN进行时间序列预测问题的兴趣日益增长。本文对广泛的读者有用,包括深入学习爱好者,财务专业人士,院士和数据科学的爱好者。

Image Source: Unsplash

卷积神经网络:计算机视觉与时间序列预测之间的类比

在本节中,我们将从图像处理示例开始,以使用CNN直观地了解计算机视觉和时间序列分析之间的相似性。让我们开始使用涉及这个小狗的例子(因为它很可爱)。

https://unsplash.com/photos/atOlntWcO4k

CNN对图像矩阵的解释

以数字方式可用的每个图像实际上是像素值的矩阵。根据像素的强度,每个像素值可以从0到255的范围。每个图像还包括根据图像的颜色组成的通道。灰色图像具有一个通道,因为每个通道对应它包含的颜色。彩色图像有三个通道,包括红色,蓝色和绿色。卷积神经网络将每个图像感知为图像宽度,长度和信道数量的像素值的矩阵。

例如,让我们假设Puppy的图像是2000像素宽,高度为2500像素。此外,由于它是彩色图像,因此它将有3个通道。因此,图像将包括3个尺寸的3个矩阵[2500,2000]。总的来说,我们有一个维度的3D矩阵[2500,2000,3]。然后,该3D矩阵作为CNN模型的输入。因此,对于CNN模型,上述图像被解释为(在过简化的示例中)作为矩阵,如下所示:

Image Source: provided by the author

现在我们对机器学习模型的感知图像如何了解如何理解深度CNN模型的主要组件,并了解这些组件的时间序列预测。以下是普通CNN模型的主要层。

1.卷积层

2.汇集层

3.完全连接的图层

这些层简要解释,以便更好地理解。

卷积层

在卷积层中,图像输入矩阵乘以特征矩阵以提取图像的重要特征。滤波器矩阵通过输入矩阵滑动,并且基本上提取来自图像的较小子部分的信息。有各种滤波器矩阵可用于从图像中提取不同类型的特征。下图显示了我们输入图像矩阵上的基本滤波器操作。

图像来源:由作者提供

Image Source: Image provided by the author

汇集层

在池池层中,然后将结果矩阵乘以池矩阵,其提取来自小部分的最大值或平均值。汇总图像大小大小地压缩而不是主图像矩阵。下面显示了一个基本的插图。

Image Source: Image provided by the author

完全连接的层

然后将汇集的矩阵变平,然后馈送到完全连接的层,通过其神经网络来学习图像。在我们的时间序列股票价格预测示例中,使用下面的方法将1D时间序列转换为3D矩阵,神经网络类比保持相同。下面示出了用于时间序列预测的CNN应用的完整流程图。计算机视觉问题和时间序列之间的唯一区别是我们向模型提供的输入(用于计算机视觉的图像矩阵和时间序列预测的1D阵列)。

Source link : Python For Finance Cookbook

因此,如果我们能够将1D时间序列序列转换为输入图像矩阵形状,我们可以将CNN模型应用于预测问题。我们现在将讨论我们将应用模型的方法和简单的测试序列。

CNN模型方法:

我们将遵循以下途径,将CNN应用于单变量1D时间序列:

1)导入Keras库和依赖项

2)定义从序列中提取功能和输出的功能。

3)以CNN型号可接受的格式重塑输入x

4)设计卷积层(COMM-1D)的CNN模型架构,汇集(在我们的情况下最大限度),平整层和完全连接的神经层。

5)培训模型并在我们的单变量序列上测试。

数据

Important Note regarding the data sequence: In this article, I will be showing you how to apply a CNN model to a 1D time series sequence. For illustration purposes, we will be using a very simple sequence from [100 to 190 ] with a common difference of 10 and see if our CNN model is able to pick up on that. You can always use stock price time-series data from open sources such as yahoo finance by using python library yfinance and I would leave that exercise on the reader.

代码部分:

第1步:首先,将来自Keras的所有库导入神经网络架构。

步骤2:接下来,我们将定义一个函数,该函数从序列中提取功能(滞后值)和输出。

作为一个例子,假设子序列是[10,20,30,40],我们决定使用最后两个滞后值(定义为函数中的“步骤”)来预测序列)。然后在我们的小示例中,模型将使用第一和第二值[10,20]作为特征,培训并学会预测第3个值(在我们的情况下“30”)。类似地,将使用前面的前述术语([20,30])预测最后一个值(“40”)。我们的函数split_sequence从序列中创建这样的功能列表,并将输出源给培训模型。

步骤3:初始化序列,步骤和重新串起输出以将其输入到我们的CNN模型中。

如步骤2中所述,我们创建了一种将1D序列转换为子序列(特征和预测值)的函数。在这一步骤中,我们将以100到190的差距将人工序列定义为10。显然,我们知道这个序列中的下一个逻辑号应该是200.现在,我们想看看CNN模型是否要学习序列模式并预测下一个术语。

上述代码部分的输出:

重塑X矩阵后,我们将获得输出,如下所示:

代码上述部分的输出:

第4步:定义CNN模型架构

在此步骤中,我们将定义模型并为模型缩小必要的设置。我们将使用“Relu”作为我们的激活功能。自从我们处理一维序列,我们将Conv1d添加为我们的卷积层。然后,我们添加MaxPooling层和扁平层,用于汇集和平整输入矩阵,以作为完全连接的神经网络(100神经元)的输入来学习我们的序列中的模式。最后,我们为我们的输出设置了一个神经元(密集= 1)。我们将使用均方的误差作为我们的损耗函数与亚当(Adaptive Mondge Escripator)作为我们在梯度血缘问题中的优化器。

第5步:CNN模型配件

第6步:运行模型:

We see that the CNN model is able to identify the pattern and is able to predict the next steps. Full code is available at this Github link and you are free to use it. Also, code for multiple steps in the future is also included which you can use with stock price data.

结论:

我们学习了如何将1D单变量时间序列转换为适用于CNN模型输入的输入矩阵。然后,我们设计了一个深入的CNN模型,能够在序列中学习模式并准确地预测输出。CNN模型通过其卷积层检测像素矩阵中的图案是流行的。类似地,在合适的处理时,CNN模型可以有效地学习时间序列数据中的图案(周期性和趋势分量)。

高级CNN架构,结合其他深度学习模型,如LSTM可以产生更好的性能。这些模型目前正在研究院士和从业者。

关于作者 :

Hi, My name is Avinash Pandey. I am passionate about Machine Learning applications in Finance and Portfolio Management. I am a graduate of IIT-BHU and currently working as a Research Associate in Finance Dept. at ISB Hyderabad. You can reach out to me on Linkedin or email me at [email protected]

参考 :

1) Artificial Intelligence in Finance (A python-based guide): Yves Hilpisch (O’Reilly Publication)

2)Chollet, François. 2017. Deep Learning with Python. Shelter Island: Manning 

3) Cui, Chen, W., and Chen, Y. (2016). Multi-scale convolutional neural networks for time series classification. arXiv preprint arXiv:1603.06995: https://arxiv.org/pdf/ 1603.06995.pdf

4) Python for Finance Cookbook: Erik Lewinson (Packt Publishing)

本文中显示的媒体不受分析vidhya所拥有的,并在提交人的自由裁量权使用。

有关的

转自:https://www.analyticsvidhya.com/blog/2021/08/hands-on-stock-price-time-series-forecasting-using-deep-convolutional-networks/
原作者: Avinash Kumar Pandey
腾讯云服务器 阿里云服务器


关注微信
^