本文将探讨如何将深度卷积网络(CNN)应用于一维时间序列/序列的预测,特别是在股票价格预测问题中的应用。CNN在图像处理和计算机视觉等领域已经非常流行,并且研究社区对使用CNN进行时间序列预测的兴趣也在增长。
图像矩阵与时间序列的类比
在本节中,将从一个图像处理的例子开始,直观地理解计算机视觉和使用CNN进行时间序列分析之间的相似性。让以这个可爱的小狗为例。
# 假设小狗的图片宽度为2000像素,高度为2500像素,并且是彩色图片,因此它包含3个通道。
因此,这张图片可以被看作是一个三维矩阵,其维度为[2500, 2000, 3]。这个三维矩阵随后被作为输入传递给CNN模型。
深度CNN模型的主要组成部分
将简要介绍普通CNN模型的主要层,以便更好地理解。
1. 卷积层2. 池化层3. 全连接层
在卷积层中,图像输入矩阵与特征矩阵相乘以提取图像的重要特征。在池化层中,结果矩阵被乘以池化矩阵,从较小的子部分中提取最大或平均值。在全连接层中,池化后的矩阵被展平,然后输入到全连接层,通过其神经网络学习图像。
CNN模型在时间序列预测中的应用
在时间序列股票价格预测的例子中,一维时间序列被转换为三维矩阵,神经网络的类比保持不变。唯一的区别在于给模型的输入(计算机视觉的图像矩阵和时间序列预测的一维数组)。
# 以下是将一维时间序列序列转换为适合CNN模型输入的输入矩阵的方法。
将遵循以下路径将CNN应用于单变量1D时间序列:
- 导入Keras库和依赖项
- 定义一个从序列中提取特征和输出的函数
- 将输入X重塑为CNN模型可接受的格式
- 设计CNN模型架构,包括卷积层(Conv-1D)、池化层(本例中为最大池化)、展平层和全连接神经层
- 在单变量序列上训练和测试模型
数据和方法论
在本文中,将展示如何将CNN模型应用于一维时间序列序列。为了说明目的,将使用一个非常简单的序列[100到190],公差为10,并看看CNN模型是否能够捕捉到这个序列的模式。
# 以下是将1D序列转换为子序列(特征和预测值)的函数。
在本节中,将定义一个从100到190的人工序列,间隔为10。显然,知道这个序列中下一个逻辑数字应该是200。现在,希望看看CNN模型是否能够学习这个序列的模式并预测接下来的项。
CNN模型架构定义
在这一步中,将定义模型并为模型设置必要的设置。将使用“ReLu”作为激活函数。添加Conv1D作为卷积层,因为处理的是一个一维序列。然后添加MaxPooling层和Flatten层,用于池化和展平输入矩阵,以便作为输入传递给全连接神经网络(100个神经元)来学习序列中的模式。最后,为输出设置一个神经元(Dense = 1)。将使用均方误差作为损失函数,并使用Adam(自适应矩估计器)作为在梯度下降问题中的优化器。