使用 Tensorflow 和 InfluxDB 进行时间序列预测入门
作者:Charles Mahler / 产品, 用例, 开发者
2021 年 11 月 24 日
导航至
如果能够完美预测未来,那岂不是很好?我们离实现这一目标还很遥远,但这基本上是数据科学领域任何从业者的目标——获取大量历史数据,然后尝试根据这些数据进行未来预测。
时间序列数据和机器学习
在本文中,您将学习如何使用时间序列数据进行预测,特别是通过结合 InfluxDB 来存储时间序列数据,并结合 TensorFlow 进行预测。时间序列数据在使用机器学习技术时有些独特,因为数据点实际上彼此相关,这被称为自相关。这意味着许多数据科学算法不能用于处理时间序列数据,因为它们基于底层数据不相关的假设。因此,与时间序列数据进行机器学习工作与其他领域相比略有不同。
什么是 TensorFlow?
TensorFlow 是 Google 创建的开源机器学习框架。它已迅速成为机器学习生态系统中最流行的工具之一。随着时间的推移,TensorFlow 添加了更多工具和功能,不仅使机器学习模型的开发更容易,而且使机器学习在生产中的部署也更容易。
什么是 InfluxDB?
InfluxDB 是一个专门构建的数据库,用于存储和处理时间序列数据。InfluxDB 能够处理每分钟写入的数百万个数据点,并使这些时间序列数据能够以极快的速度进行查询,以应对标准数据库往往难以应付的工作负载类型。
除了存储之外,InfluxDB 还提供许多工具,使时间序列数据的处理更加容易。Telegraf 是一个开源服务器代理,有 250 个插件可用于收集指标。然后,Telegraf 可以使用处理器插件转换或丰富这些数据,然后再将其输出到 InfluxDB 或其他 50 个可用的数据存储插件。
一旦您的数据进入 InfluxDB,您可以使用 Flux(一种专为处理时间序列数据而设计的查询语言)查询您的数据。您还可以使用内置的可视化工具或导出到 Grafana 等工具。
InfluxDB 旨在使您使用时间序列数据的任何情况都对开发者更加友好,但在本文中,我们将重点关注对数据科学家或机器学习工程师的好处。在这种用例中,InfluxDB 最有帮助的是帮助简化数据工程,这将在稍后详细介绍。
机器学习与统计模型
机器学习和神经网络不是魔法;在某些情况下,对于预测,使用更标准的统计方法仍然有意义。一般来说,使用统计模型将需要更少的计算资源,并且更适合单变量预测。统计模型的缺点是它们通常需要大量的调整和数据准备,这可能非常耗时。在业务环境中,如果您的时间序列数据稀疏、不规则且是多变量的,或者您需要生成许多不同的模型,那么使用机器学习可能更有意义。机器学习也往往更适合于本质上是多变量的预测情况。
M-4 竞赛是权衡取舍的一个实际例子。M-4 是一项自 1982 年以来一直在进行的时间序列预测竞赛。2020 年,获胜模型来自 Uber,它实际上使用了一个混合模型,该模型使用了深度学习和统计建模策略。但许多其他竞争对手使用了标准的统计模型,并且在单变量时间序列预测方面优于许多纯机器学习模型。
简而言之,对于您拥有多变量时间序列且数据稀疏的业务用例,使用机器学习是有意义的,因为它们经过工程设计可以解决这些数据问题。如果最大精度很重要,那么使用混合方法可能更有意义。
为什么将 TensorFlow 与时间序列数据一起使用
TensorFlow 成为处理时间序列数据的良好选择的主要原因是社区。作为最流行的可用机器学习框架,您可以从生态系统中获得许多有用的工具。它还使为您的团队提供教育材料或聘请熟悉 TensorFlow 的经验丰富的工程师更容易获得资金。
TensorFlow Lite 是另一个特别令人感兴趣的理由,可以考虑将 TensorFlow 用于时间序列数据用例,因为它专为在计算能力较低的设备上工作而设计。物联网是 TensorFlow Lite 的完美用例,并且可以让您从收集的时间序列传感器数据在边缘使用机器学习。TensorFlow Lite 针对移动和嵌入式设备进行了优化,其二进制文件大小比标准 TensorFlow 小得多,并且初始化时间更快。
为什么将 TensorFlow 与 InfluxDB 一起使用
InfluxDB 是一个专为处理时间序列数据而设计的数据库。当将 TensorFlow 与 InfluxDB 一起使用时,可以简化许多与数据工程和整体数据管道相关的问题。InfluxDB 能够有效地压缩时间序列数据,这将为您节省存储成本,并且在摄取实时数据时也可以充当缓冲区。
InfluxDB 还提高了机器学习管道的可用性。您可以通过简单地修改查询将您的模型应用于新的数据流。通过将您的历史数据和实时数据放在同一个位置,可以更顺畅地从测试过渡到生产。
有关将 InfluxDB 与 Keras(TensorFlow 的包装器,使 TensorFlow 的使用更加容易)结合使用的实际示例,您可以查看这个 GitHub 存储库,它向您展示了如何通过使用 TensorFlow 创建 LSTM 神经网络来进行天气预测。
InfluxDB 和数据科学的未来
时间序列数据的量继续呈指数级增长。随着客户对更可靠软件的需求增加,公司需要更精细的指标。物联网设备和传感器的数量也在增加。根据麦肯锡的说法,到 2030 年,物联网市场规模将增长到 5.5 万亿至 12.6 万亿美元之间。
所有这些数据都是时间序列数据,并且收集这些数据不仅仅是为了闲置。这些数据的主要目标是进行预测、提高效率以及提高现实世界和软件虚拟世界中一切事物的可靠性。
InfluxDB 将在未来继续为数据科学和机器学习工作负载提供价值。InfluxDB IOx 是 InfluxDB 的新存储引擎,它将利用 Apache Arrow 和 DataFusion,这将使 InfluxDB 更容易与大数据工具生态系统集成。
其他资源
现在您已经了解了如何以及为什么要将 InfluxDB 与 TensorFlow 和其他数据科学工作流程一起使用,我将为您提供一些其他资源,如果您想更深入地了解如何将 InfluxDB 用于数据科学,可以查看这些资源。