在 Azure 异常检测器中何时使用“/entire”与“/last”API?

When to use “/entire” vs “/last” API in Azure Anomaly Detector?

当我查看异常检测器 API 的文档时,我发现有两个 API(或 "modes"):/last 和 /entire。该文档说他们正在流式传输与批处理模式。但是,我认为消息不是很清楚,而且两个 APIs/modes 似乎具有非常相似的功能。 我有一些来自工厂车间传感器的物联网数据;我可以预处理数据以确保它满足 API 要求;我可以在我的应用程序中使用 C# 进行编码。 谁能帮助详细说明如何选择更好的 API 用于我的场景?

我在 Azure notebooks

中尝试了两个 API

感谢您使用异常检测器。

异常检测器 API 的批量检测端点可让您通过整个时间序列数据检测异常。在这种检测模式下,将创建一个单一的统计模型并将其应用于数据集中的每个点。如果您的时间序列具有以下特征,我们建议使用批量检测在一次 API 调用中预览您的数据。

  1. 季节性时间序列,偶尔会出现异常。
  2. 平坦趋势时间序列,偶尔 spikes/dips。

我们不建议将批量异常检测用于实时数据监控,或将其用于不具备上述特征的时间序列数据。

  1. 批量检测只创建和应用一个模型,每个点的检测是在整个系列的上下文中完成的。

    如果时间序列数据在没有季节性的情况下呈上下趋势,模型可能会遗漏一些变化点(数据中的下降和上升)。同样,数据集中的某些变化点不如后来的变化点重要,因此可能不足以被纳入模型。

  2. 批量检测比实时数据监控时检测最新点的异常状态要慢,因为分析的点数较多。

对于实时数据监控,我们建议只检测您最新数据点的异常状态。通过持续应用最新点检测,可以更高效、更准确地进行流式数据监控。

下面的例子描述了这些检测模式对性能的影响。第一张图显示了沿着 28 个以前看到的数据点连续检测异常状态最新点的结果。红点是异常。

An image showing anomaly detection using the latest point

下面是使用批量异常检测的相同数据集。为操作构建的模型忽略了几个异常,用矩形标记。

An image showing anomaly detection using the batch method

再次感谢,我们会将信息添加到 AD 服务的 public 文档中。