URL:https://azure.microsoft.com/en-us/blog/azure-data-explorer-and-stream-analytics-for-anomaly-detection/
James Ding,首席云解决方案架构师
异常检测在全球很多行业扮演了重要角色,例如金融行业的欺诈检测,医院的健康监控,制造、油气、基础设施、交通运输、航空以及汽车行业的故障检测和运营环境监视等。
异常检测旨在从数据中发现与预期行为不符的模式。决策者必须能发现异常,并在需要时提前采取应对措施。以油气行业为例,深水钻机和各类设备必须由数百种传感器密切监控,并以不同频率和格式传输各种类型的测量结果。然而传统软件平台很难对其进行分析或可视化,而任何由于未能检测到异常情况导致深水钻井平台不能按照预期工作的问题都会造成巨大的经济损失。
企业需要诸如Azure IoT、Azure Stream Analytics、Azure Data Explorer以及机器学习等新技术来摄取和处理数据,并将其转换为战略性的商业智能,借此改善探索和生产,提高制造效率,保障人员和环境安全。这些托管服务还可以帮助客户大幅缩短软件开发时间,加快产品上市速度,提供成本效益,实现更高的可用性和可扩展性。
虽然Azure平台提供了丰富的异常检测能力,客户可以选择最能满足自己需求的服务,但很多客户在实践运用中依然会产生一些问题,例如每种解决方案最适合哪些用例。下文将揭示这些问题的答案,但首先需要明确一些定义:
时序(Time series)是什么?时序是按照时间顺序索引在一起的一系列数据点。在油气行业,大部分设备或传感器读数都是这种按照连续时点或深度点获取的数据。
叠加时序的分解又是什么?分解(Decomposition)是指将一个时序拆分为类似下图所示多个组件的操作。
时序预测和异常检测
异常检测是指找出与大部分数据集存在显著不同观测值的过程。
这是一个利用Azure Data Explorer进行异常检测的范例
>> 红线是原始时序。
>> 蓝线是基准(季节+趋势)组件。
>> 紫色点是原始时序基础上的异常点。
为了检测异常,可以使用Azure Stream Analytics或Azure Data Explorer进行实时分析并检测,如下图所示。
Azure Stream Analytics是一种面向关键业务工作负载设计的,简单易用的实时分析服务。我们只需点击几次鼠标即可构建出端到端的Serverless流处理管道,使用SQL在几分钟内从零开始将其投入生产应用,或使用自定义代码对其进行扩展并通过内置的机器学习能力将其用于其他高级场景。
Azure Data Explorer是一个快速、完全托管的数据分析服务,可用于对来自应用程序、网站、IoT设备等来源的海量数据流进行近乎实时的分析。我们可以提出问题,并以迭代的方式即时探索数据,借此改善产品,改进客户体验,监控设备,促进运维,从数据中快速发现模式、异常和趋势。
选择Azure Stream Analytics还是Azure Data Explorer?
用例
Stream Analytics适用于持续的或流式的实时分析,它提供的聚合函数可支持跳转(Hopping)、滑动(Sliding)、翻转(Tumbling)或会话(Session)窗口。但如果你希望用JavaScript或C#之外的语言编写自己的UDF或UDA,或如果你的解决方案位于多种云或本地环境中,那么它可能并不适合你。
Data Explorer适用于按需或交互式近实时分析,针对海量数据流进行数据探索,季节性分解,即席工作,仪表板,以及从近实时数据或历史数据进行根本原因分析。如果需要将分析能力部署在边缘,那么它并不适合你。
预测
我们可以通过设置让Stream Analytics作业与Azure Machine Learning Studio集成。
Data Explorer提供了根据相同分解模型预测时序的原生功能。这样的预测能力适合很多场景,例如预防式维护、资源规划等。
季节性
Stream Analytics不能支持季节性,对滑动窗口大小的支持也较为有限。
Data Explorer则提供了在时序内自动检测周期的功能,或者我们可以将其用于验证某个指标应具备特定的不同周期(前提是我们知道这些周期的存在)。
分解
Stream Analytics不支持分解。
Data Explorer可以获取一系列时序并自动将每个时序分解为季节性、趋势、残存以及基线组件。
筛选和分析
Stream Analytics可以检测峰谷或变化点。
Data Explorer提供的分析能力可以从一系列时序中找出异常点,并能在检测到异常后进行根本原因分析(RCA)。
筛选
Stream Analytics提供了可包含参考数据、慢速移动或静态数据的筛选器。
Data Explorer则提供了两种常规功能:
>> 有限冲激响应(Finite impulse response,FIR),可用于移动平均线、分化和形状匹配。
>> 无限冲激响应(Infinite impulse response,IIR),可用于指数平滑和累积总和。
异常检测
Stream Analytics提供了下列检测:
>> 峰谷(临时异常)
>> 变动点(持久异常,例如水平或趋势的变化)
Data Explorer提供了下列检测:
>> 基于增强型季节性分解模型的峰谷(支持自动化季节性检测,以及训练数据中异常现象的健壮性)。
>> 分段线性回归的变动点(水平偏移、趋势变化)。
>>通过KQL内联Python/R插件实现与借助Python或R实现的其他模型的扩展性。
下一步?
总的来说,Azure Data Analytics能够为每种类型的工作负载提供最适合的技术。新增的实时分析架构(参阅上文示意图)可供我们为每类工作负载使用最适合的技术进行流式分析或时序分析,包括进行异常检测。下列资源可以帮你进一步了解这些功能:
>> 如果还未进行,请通过这个GitHub代码库了解Azure Stream Analytics异常检测。
>> 通过这个GitHub代码库了解Azure Data Explorer异常检测和预测以及Azure Data Explorer时序分析。
>> Azure Stream Analytics异常检测概述。
>> Azure Data Explorer异常检测和预测概述。
>> Azure Data Explorer时序分析文档和这篇博客文章。
>> Kusto查询语言文档和时序分析。