使用 TensorFlow 进行时间序列预测:组件、模型和步骤
已发表: 2021-05-02目录
什么是时间序列预测?
你知道亚太地区是全球增长最大的深度学习市场,CAGR(复合年增长率)超过 40% 吗? 时间序列 TensorFlow预测是深度学习和机器学习中的一个重要概念。 所有深度学习/ML 模型都有一个相应的数据集,该数据集是观察的集合。 这些观察通常包括时间成分。 时间序列按时间顺序排列观察结果,从而为数据集增加了一个新的维度,即时间。
有人可能会想,通过增加数据集的维度会实现什么? 好吧,向您的数据集添加时间维度将在观察之间创建详细级别的依赖关系。 然后在先前观察的时间序列预测的帮助下预测结果。
使用时间序列数据(历史数据)来预测未来被称为时间序列预测。 还应确保未来完全未知,只能根据历史数据进行预测。
分析时间序列数据以开发有效描述数据的模型。 时间序列被分解为几个用于开发 apt 模型的组件。 一旦开发出最能描述历史数据的模型,就可以将其用于预测。 不应将时间序列分析与时间序列预测混为一谈,因为后者只有在前者完成时才会起作用。
时间序列组件
在了解时间序列 TensorFlow预测之前,应该熟悉时间序列的组成部分。 在时间序列分析过程中,时间序列被分解为四个部分。 这些组件有助于正确理解数据集。 时间序列的四个组成部分如下:
- 趋势——系列/数据集随时间的行为由趋势解释。 时间序列的增加和减少行为由趋势解释。
- 级别- 级别是时间序列的基值,考虑到序列的表示是一条直线。 许多专家还将水平定义为系列的平均值。
- 季节性——随时间重复的系列行为称为季节性。 一些专家还将季节性称为周期性波动。
- 噪声——每个数据集都包含一些时间序列模型无法解释的数据点/异常值。 这些数据集具有不可预测的属性,无法通过时间序列分析/预测进行映射。
应该注意,时间序列必须有一个水平和一些噪音。 但是,时间序列中的趋势和季节性是可选的。
为什么选择 TensorFlow?
虽然市场上有许多用于时间序列预测的框架,但在所有可用框架中,深度技术专业人士更喜欢 TensorFlow。 TensorFlow 是用 Python、C++ 和 CUDA 编写的,这些都是广泛使用的编程语言。 TensorFlow 是一个专为机器学习和深度学习而设计的开源软件库。
TensorFlow 帮助我们在时间序列分析期间构建用于预测的 ML 模型。 它为用户提供构建各种类型的模型,如 CNN(卷积神经网络)、RNN(循环神经网络)等。TensorFlow 可以帮助您根据用户和数据集预测单个时间步或多个时间步。 在时间序列 TensorFlow预测时,您可以:
- 预测单个时间步长的单个特征/维度。
- 预测单个时间步长的数据集的所有维度。
- 一次预测多个步骤(一次做出所有预测)。
- 一次进行一个预测的多个步骤的预测(自回归)。
为时间序列预测设置数据
在时间序列预测之前,我们需要相应地准备数据。 时间序列预测的设置包括数据提取、可视化、探索、清理等各种过程。让我们看看设置时间序列预测数据的步骤:
- 基本步骤是导入数据或提取数据。 您需要有一个数据集,可以使用时间序列预测从中提取丰富的见解。
- 下一步是数据清理,删除重复或不相关的数据点。 在这一步也处理丢失的数据。 如果早期发现任何异常值,请将它们从数据集中删除。 结构错误也可以在数据清洗下修复。
- 时间序列中随时间变化的量称为信号。 这些信号还代表时间序列中的各种物理事件。 例如,如果在不同日期有任何位置的天气描述时间序列,则信号将是温度、降雨等物理事件。继续将信号转换为 sin cos 格式。
- 除了将信号转换为 sin cos 格式外,还将时间和日期转换为秒。 完成后,绘制时间和 sin cos 函数。
- 在预测和训练我们的数据之前,我们将根据时间拆分数据以进一步简化。
- 现在要在训练之前对数据进行归一化。 数据标准化最简单的步骤是从每个数据点中减去数据集的平均值,然后除以标准差。
- 完成数据标准化后,您必须检查数据偏差。 数据偏差被定义为与其他元素相比,数据集的某些元素被大量表示的情况。 有偏见的数据会导致准确性降低以及分析偏斜。 您可以绘制小提琴图以消除数据集中存在的任何数据偏差。
数据窗口
您一定想知道在时间序列预测之前涉及到很多过程。 好吧,年轻的技术爱好者应该知道,数据准备是训练或分析数据之前的关键步骤。 数据窗口化是为时间序列 TensorFlow预测设置数据的最后一步。 数据窗口有助于将数据与各种模型一起使用,而无需担心。
例如,如果模型预测未来 1 小时,您需要 6 小时的历史数据窗口才能有效预测。 历史数据窗口称为“输入宽度”,而要预测的数据窗口在数据窗口期间称为“偏移”。
结帐:最受欢迎的 TensorFlow 项目
TensorFlow 单步模型
当您拥有最简单的数据集并仅预测未来一个时间步时,您将使用 TensorFlow 的单步模型。 例如,如果您创建了一个“小时”的数据窗口,则预测一个时间步长,这意味着您预测未来一小时。 在 TensorFlow 中创建了一个“WindowGenerator”对象来开发单步对,即输入和标签。
还建议在训练模型之前创建基线模型。 创建基线模型将帮助您将初始单步模型与未来的复杂模型进行比较。 例如,如果您要预测未来 1 小时的温度,则创建一个基线模型,将当前温度作为预测返回(无变化)。
由于温度随时间缓慢变化,因此一小时后温度可能没有变化。 请注意,在预测多个时间步长时,基线模型将无效。
使用 TensorFlow 创建单个时间步长模型的另一个示例是在输入和输出之间插入线性变换。 确保输出仅取决于使用 TensorFlow 创建线性模型时要评估的单个时间步长。 密集模型是使用 TensorFlow 创建的另一个单步模型。
通过 TensorFlow 的卷积神经网络也可用于预测单个时间步长。 TensorFlow 中的卷积层将采用多个时间步长作为预测时间步长的输入。 RNN 也广泛用于时间序列预测。
机器的内部状态也会从一个时间步跳到另一个时间步,因为 RNN 会逐步处理时间序列(默认情况下)。 通过 RNN 进行时间序列 TensorFlow预测是一个不错的选择,因为 RNN 模型倾向于记住很长的输入历史(历史数据)。
TensorFlow 多步模型
在多步模型中,预测是在一系列时间步长上进行的。 与单步模型不同,多步模型使用历史数据预测一系列未来值。 多步模型可以通过单次预测一次预测整个未来时间序列。 您还可以使用自回归预测,其中模型一次进行单步预测。 自回归预测中单步预测的结果作为下一个时间步预测的输入。
结论
与其他框架相比,时间序列 TensorFlow预测提供了准确的结果。 我们讨论了一些可用于通过 TensorFlow 进行单步预测的单步模型(CNN、RNN、Dense 等)。
您还可以使用多步模型来预测一系列未来值。 还应注意,数据准备是时间序列 TensorFlow预测之前的关键步骤。 您可以通过选择upGrad 的 DL 和 ML 高级证书计划来了解有关 DL(深度学习)和 ML 中时间序列预测的更多信息。 开始使用 TensorFlow 学习时间序列预测!
使用 TensorFlow 有什么限制?
尽管 TensorFlow 减少了代码的长度,但它也使代码有点复杂。 与其竞争对手相比,TensorFlow 速度较慢且可用性较差。 TensorFlow 在为不定序列提供符号循环方面落后于时代。 TensorFlow 只有 NVIDIA GPU 支持和 Python GPU 编程支持。 它没有其他形式的支持。 对于 Windows 操作系统的用户来说,它没有太多优势。
数字化仪记录的每个有限序列的边界处的不连续幅度通过加窗减小。 窗口系统允许许多应用程序同时共享计算机的图形显示和演示资源。 您可能希望在具有图形用户界面 (GUI) 的计算机上同时使用多个应用程序。
TensorFlow 难学吗?
TensorFlow 对某些人来说很容易,而有些人则认为它很难学习。 如果你有各种编程语言的先验知识,并且熟悉各种机器学习技术,那么学习 TensorFlow 对你来说会很容易。 但是,难度级别也取决于您的兴趣。 如果你真的对 TensorFlow 感兴趣,学习它不会是一件很困难的事。