Loading...

在流式时间序列数据中进行异常检测的在线学习,使用亚马逊托管的 Apache Flink 服务 机器学

2026-01-27 13:42:11

实时流数据中的异常检测与在线学习

关键要点

时间序列数据分类:时间序列数据以时间为基础,展示趋势、季节变化等模式。异常检测定义:识别时间序列中意外的模式或数据点。解决方案架构:利用Amazon Apache Flink和AWS其他服务创建实时异常检测方案。数据处理过程:涵盖从数据接收、处理到可视化的完整流程。

时间序列数据是一种独特的类别,在其结构中以时间作为基本元素。时间序列中的数据点按顺序收集,通常在固定时间间隔内生成,通常会展示出某些模式,例如趋势、季节性变化或周期性行为。常见的时间序列数据示例包括销售收入、系统性能数据如CPU利用率和内存使用情况、信用卡交易、传感器读数和用户活动分析。

时间序列异常检测是识别随时间推移而呈现的意外或不寻常模式的过程。当数据点明显偏离预期模式时,就会发生异常,也称为“离群值”。

对于一些时间序列,比如那些具有明确定义预期范围的序列如机器操作温度或CPU使用率,阈值方法可能就足够了。然而,在欺诈检测和销售等领域,简单规则不够灵活,无法捕捉复杂关系下的异常情况,因此需要更复杂的技术来识别意外事件。

在本文中,我们将演示如何构建一个强大的实时异常检测解决方案,针对流时间序列数据,利用AWS托管服务Apache Flink及其他AWS管理服务。

解决方案概述

下图展示了异常检测堆栈解决方案的核心架构。

该解决方案利用机器学习ML进行异常检测,无需用户具备前期的AI专长。它提供了一个AWS CloudFormation模板,便于在AWS账户中简单部署。借助于CloudFormation模板,您可以部署应用堆栈,并提供用于检测异常所需的AWS资源。设置一堆栈可创建一个具有单一异常检测任务或探测器的应用。您可以设置多个这样堆栈同时运行,每个堆栈分析数据并报告异常。

部署应用后,通过随机切割森林RCF算法构建ML模型。最初从Amazon Managed Streaming for Apache KafkaAmazon MSK获取输入时间序列数据,使用此实时流进行模型训练。训练完成后,模型继续处理来自流的输入数据点,将这些点与相应时间序列的历史趋势进行对比。模型还会在处理时生成初步的原始异常分数,并维护一个内部阈值以消除噪声数据点。随后,模型为每个被视为异常的数据点生成标准化的异常分数,这些分数范围在0到100之间;接近100的分数意味着更高的异常程度。您可以灵活设置自定义阈值来定义您认为异常的标准。

此解决方案使用的CloudFormation模板,接收如MSK代理端点、主题、AWS身份与访问管理IAM角色及其他与虚拟私有云VPC配置相关的参数。模板创建必要的资源,如Apache Flink应用和AWS SageMaker实时端点。

飞兔云加速器下载

在流式时间序列数据中进行异常检测的在线学习,使用亚马逊托管的 Apache Flink 服务 机器学

欲获取此解决方案的访问权限,请发送电子邮件至 anomalydetectionsupportcanvas@amazoncom。

在本文中,我们将描述如何构建一个端到端解决方案,使用异常检测堆栈。设想一个假设的销售场景,如AnyBooks,这是大学校园内的书店,向大学生出售各种文具。由于课程时间的安排,销售的季节性是,在偶数小时他们售出约20件A商品和30件B商品,而在奇数小时的销售量大约是其一半。最近,销售数量出现了一些无法解释的尖峰,管理团队希望开始跟踪这些数量异常,以便更好地规划员工和库存水平。

下图展示了端到端解决方案的详细架构。

接下来的部分将探讨图中显示的每一层。

数据接收层

在接收层,AWS Lambda函数每分钟检索当前分钟的销售交易,从PostgreSQL事务性数据库中获取数据,将每条记录转换为JSON消息,并发布到输入Kafka主题。该Lambda函数配置为使用Amazon EventBridge Scheduler每分钟运行。

异常检测堆栈

Flink应用程序开始从输入MSK主题读取原始数据,训练模型并启动异常检测,最终将其记录到MSK输出主题。以下代码是输出结果JSON:

json{detectorNamecanvasadblogdemo1measurequantitytimeseriesIdf3c7f14e7a445b79a3a9877dfa02064d56533cc29fb0891945da4512c103e893anomalyDecisionThreshold70dimensionList[{nameproductnamevalueitemA}]aggregatedMeasureValue140anomalyScore00detectionPeriodStartTime20240829 133500detectionPeriodEndTime20240829 133600processedDataPoints1261anomalyConfidenceScore804674989791107anomalyDecision0modelStageINFERENCEexpectedValue00}

以下是输出字段的简要说明:

字段描述measure代表我们跟踪的异常指标,此情况下为ItemA的销售数量aggregatedMeasureValue表示时间窗口内的数量聚合值timeseriesId唯一标识符,代表唯一值的组合,此场景为产品名称ItemAanomalyConfidenceScore随着模型学习和推理,置信度分数将逐渐提高anomalyScore此字段表示异常检测的得分。将anomalyThreshold设定为70,超过此值被视为潜在异常modelStage在学习阶段,anomalyScore为00,此字段值设为LEARNING,学习完成后为INFERENCEanomalyDecisionThreshold在CloudFormation堆栈中提供的决策阈值anomalyDecision如果anomalyScore超出anomalyDecisionThreshold,值为1,表示检测到异常

数据转换层

在转换层,配置一个Amazon Data Firehose流,从Kafka输出主题消费数据,并调用Lambda函数进行转换。该Lambda函数将Kafka主题中的嵌套JSON数据展平。转换后的结果按日期进行分区,并以Parquet格式存储在Amazon Simple Storage ServiceAmazon S3存储桶中。AWS Glue爬虫用于爬取Amazon S3位置中的数据,并在AWS Glue数据目录中进行编目,以便查询和分析。

数据可视化

为了可视化数据,我们创建了一个连接到Amazon S3中数据的AWS QuickSight仪表板,并使用Amazon Athena查询它。仪表板可以刷新以显示最新检测到的异常,如下图所示。

在此示例中,线图中的深蓝色线条代表ItemA的数量指标随时间的季节性变化,偶数小时值较高,奇数小时较低。粉色线条表示异常检测得分,绘制在右侧Y轴。当数量值显著偏离其季节性模式时,异常得分接近100。蓝线代表设定的异常阈值,为70。当anomalyScore超过该阈值时,anomalyDecision被设为1。

KPI监控时间序列数量 显示当前模型监控的时间序列数量。在此例中,由于正在监控A商品和B商品,因此计数为2。KPI处理的数据点数量显示模型处理的数据点总数,而异常置信度分数表示预测异常的信心水平。起初,该分数较低,随着模型的成熟会接近100。

通知

尽管可视化对于调查异常非常有价值,但数据分析师通常更喜欢接收近实时的关键性异常通知。这通过添加一个Lambda函数来实现,该函数从输出Kafka主题读取结果并进行分析。如果anomalyScore值超过定义的阈值,该函数会调用AWS简单通知服务Amazon SNS主题,以向指定列表发送电子邮件或短信通知,提醒团队近实时检测到异常。

结论

本文演示了如何利用AWS托管服务Apache Flink及其他服务构建一个稳健的实时异常检测解决方案,实现流时间序列数据的异常检测。我们阐述了一个端到端的架构,从源数据库接收数据,通过Apache Flink应用程序训练ML模型并检测异常,并将异常数据存储在S3数据湖中。异常得分和决策通过连接AWS Glue和Athena的Amazon S3数据的QuickSight仪表板进行可视化。此外,Lambda函数对结果进行分析并近实时发送通知。

借助Amazon MSK、Data Firehose、Lambda和SageMaker等AWS托管服务,您可以快速部署和扩展适用于您自己时间序列用例的异常检测解决方案。这使您能够自动识别数据流中的意外行为或模式,无需手动设定规则或阈值。

试试这个解决方案,探索如何在AWS上实现实时异常检测以解锁洞察并优化业务运营!

关于作者

Noah Soprala 是一名来自达拉斯的解决方案架构师。他是客户值得信赖的顾问,帮助他们利用AWS技术构建创新解决方案。Noah在咨询、开发和解决方案架构及交付方面拥有超过20年的经验。

Dan Sinnreich 是Amazon SageMaker的高级产品经理,专注于扩展无需代码/低代码服务。他致力于让机器学习和生成性AI更易于接触,并将其应用于解决具有挑战性的问题。在工作之外,他喜欢打冰球、潜水和阅读科幻小说。

Syed Furqhan 是AWS AI和ML的高级软件工程师。他参与了多个AWS服务的发布,如Amazon Lookout for Metrics、Amazon Sagemaker和Amazon Bedrock。当前,他专注于作为Amazon Bedrock核心系统的一部分的生成AI项目。他是清晰代码倡导者,并且在无服务器和事件驱动架构方面是主题专家。您可以在LinkedIn上关注他,syedfurqhan。

Nirmal Kumar 是Amazon SageMaker服务的高级产品经理。他致力于拓宽AI/ML的可访问性,推动无代码和低代码机器学习解决方案的发展。在工作之外,他喜欢旅行和阅读非小说类书籍。

加载评论

在 Amazon RDS for Oracle 中设置数据库资源管理器 数据库博客
在 Amazon RDS for Oracle 中设置数据库资源管理器 数据库博客

在 Amazon RDS for Oracle 中设置数据库资源管理器关键要点在将 Oracle 数据库迁移至 Amazon RDS for Oracle 后,您可能希望对 CPU 及其他资源进行更高...

如果你错过了:管理云成本、提升财务表现,以及如何开始云财务管理 云财务管理
如果你错过了:管理云成本、提升财务表现,以及如何开始云财务管理 云财务管理

云成本管理与财务绩效提升指南关键要点在当今的云计算环境中,有效管理云成本对于实现业务目标至关重要。本文为您提供了三大AWS资源,帮助您理解和优化IT花费,同时推动企业财务表现的提升。AWS云计算为您提...