Tensorflow和InfluxDB的时序预测入门
作者:Charles Mahler / 产品,用例,开发者
2021年11月24日
导航到
能否完美预测未来不是一件令人愉快的事情吗?我们离这个目标还有很长的路要走,但基本上这是数据科学领域的每个人都希望达成的目标——收集大量历史数据,然后基于这些数据尝试进行未来预测。
时序数据和机器学习
在这篇文章中,您将了解如何使用时序数据进行预测,特别是通过结合InfluxDB存储时序数据和Tensorflow进行预测。在机器学习技术中,时序数据相对独特,因为数据点实际上是相互关联的,这被称为自相关性。这意味着许多数据科学算法不能用于处理时序数据,因为它们基于数据不相关的假设。因此,与处理其他领域相比,机器学习中的时序数据处理有点不同。
什么是Tensorflow?
TensorFlow是由谷歌创建的开源机器学习框架。它迅速成为机器学习生态系统中最受欢迎的工具之一。随着时间的推移,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的二进制大小小得多,并且初始化时间更快。
为什么要在InfluxDB中使用TensorFlow
InfluxDB是一个为处理时间序列数据而设计的数据库。当使用InfluxDB与TensorFlow一起工作时,可以简化许多与数据工程和整体数据管道相关的问题。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如何用于数据科学,以下是一些您可以查看的附加资源。