第 11 章 实时机器学习的时间窗口特征 用于实时机器学习的时间窗口特征
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在第 8 章中,我们简要探讨了将时间窗口特征(如始发机场滑出延误的移动平均值)作为模型输入的问题。我们发现时间窗口特征减少了模型误差。但是,我们还不清楚客户(他们只知道自己乘坐的航班)如何才能提供正确的数值。因此,我们决定放弃时间窗口功能。在本章中,我们将通过使用 Cloud Dataflow 和 Vertex AI 实现实时、流式机器学习管道来解决这一缺陷。
本章中的所有代码片段都在GitHub 代码库的11_realtime文件夹中。请参阅该目录中的README.md文件,了解如何执行本章所述步骤。
时间平均值
我们有哪些时间窗口汇总功能想用却用不了?航班到达时间是根据出发机场在该特定时段的平均打车时间安排的。机器学习模型可以很容易地学习到这个平均值,因为我们显示的是整个数据集,并告诉机器学习模型出发机场的名称。例如,在纽约肯尼迪机场的高峰时段,一个小时左右的打车离开时间非常常见,因此航空公司在发布航班时刻表时会考虑到这一点。只有当滑出时间超过平均值时,我们才应该担心。这种全球平均值通常不是我们需要纳入模型的特征(尽管如果我们这样做也无妨)。
另一方面,还需要计算近期航班的时间平均值。例如,我们的直觉认为,出发机场的平均起飞和滑出延误时间会影响我们是否可能准时到达。即使我们乘坐的航班刚好准时起飞,也是如此。从一个机场起飞的大量航班出现延误,通常与天气或其他原因导致的跑道关闭有关。这会导致空域拥堵,因此后续航班也会受到影响,因为天气延误可能会持续,而且跑道数量可能会受到限制。与全球平均滑出时间不同,最近的平均起飞延误时间需要实时计算。根据历史数据,我们需要计算飞机起飞时间前一小时的平均值。在实时情况下,这一计算将通过流式数据进行。
Apache Beam 和 Cloud Dataflow
我们将利用 Apache Beam 解决用时间窗口聚合特征增强数据集的问题。
为什么选择 Apache Beam?
Apache Beam 允许我们在批处理和流处理中使用相同的代码--例如,在历史数据上计算聚合特征,然后在预测时实时计算相同的聚合特征(见图 11-1)。
图 11-1. 相同的转换代码用于将历史数据中的 BigQuery 行和实时的 Pub/Sub 事件转换为 ML 模型使用的特征。
为什么选择数据流?
Cloud Dataflow 是一项完全托管的服务,用于执行使用 Apache Beam 编写的数据处理管道。完全托管意味着什么?想想 BigQuery 而不是 Cloud SQL。两者都允许对数据进行 SQL 查询,但 Cloud SQL 只是云虚拟机上的 MySQL 托管版本,而 BigQuery 则是完全无服务器的。这使得 BigQuery 可以进行更大规模的即时可用 SQL 处理。1Cloud Dataflow 为程序化数据管道提供了类似的无服务器自动扩展服务。
与 Cloud Dataproc 不同,使用 Cloud Dataflow 时,我们不需要启动集群来进行数据处理。相反,我们只需提交代码,它就会被执行,并自动扩展到有效完成任务所需的任意数量的机器上。我们将根据任务涉及的计算资源数量收取费用。为什么我要使用 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access