共用方式為


使用異常偵測器單變量 API 的最佳做法

重要

從 2023 年 9 月 20 日起,您將無法建立新的異常偵測器資源。 異常偵測器服務將於 2026 年 10 月 1 日淘汰。

異常偵測器 API 是無狀態的異常偵測服務。 其結果的精確度和效能可能會受到下列影響:

  • 準備時間序列資料的方式。
  • 已使用的異常偵測器 API 參數。
  • API 要求中的資料點數目。

使用本文以了解使用 API 取得最佳資料結果的最佳做法。

何時使用批次 (整個) 或最新 (最後一個) 異常偵測點

異常偵測器 API 的批次偵測端點可讓您偵測整個時間序列資料中的異常。 在此偵測模式中,會建立單一統計模型並套用至資料集中的每個點。 如果您的時間序列具有下列特性,建議您使用批次偵測在一個 API 呼叫中預覽資料。

  • 偶爾出現異常的季節性時間序列。
  • 偶爾出現峰值/谷值的平坦趨勢時間序列。

不建議使用批次異常偵測進行即時資料監視,或在沒有上述特性的時間序列資料上使用。

  • 批次偵測只會建立並套用一個模型,每個點的偵測都是在整個序列的內容中進行。 如果時間序列資料呈上升和下降趨勢而沒有季節性,則模型可能遺漏了某些變異點 (資料中的谷值和峰值)。 同樣地,某些變異點比資料集中較晚出現的點顯著性更低,因此可能不具有足以納入模型的顯著性。

  • 進行即時資料監視時,由於批次偵測會分析點的數量,因此速度會比偵測最新點的異常狀態更慢。

若要進行即時資料監視,建議您只偵測最新資料點的異常狀態。 藉由持續套用最新點偵測,就能更有效率且精確地進行串流資料監視。

下列範例說明這些偵測模式可能會對效能造成的影響。 第一張圖片顯示持續偵測最新點及 28 個先前所看到資料點的異常狀態結果。 紅點表示異常。

此圖顯示使用最近時間點的異常偵測

以下是使用批次異常偵測的相同資料集。 針對作業所建立的模型已略過數個異常,並以矩形標示。

此圖顯示使用批次方法的異常偵測

資料準備

異常偵測器 API 接受格式化為 JSON 要求物件的時間序列資料。 時間序列可以是一段時間內循序記錄的任何數值資料。 您可以將時間序列資料視窗傳送至異常偵測器 API 端點來提升 API 的效能。 您可以傳送的資料點數目下限為 12,上限為 8640 點。 資料粒度已定義為您資料的取樣率。

傳送至異常偵測器 API 的資料點必須具有有效的國際標準時間 (UTC) 時間戳記,以及一個數值。

{
    "granularity": "daily",
    "series": [
      {
        "timestamp": "2018-03-01T00:00:00Z",
        "value": 32858923
      },
      {
        "timestamp": "2018-03-02T00:00:00Z",
        "value": 29615278
      },
    ]
}

如果您的資料是依非標準時間間隔取樣,您可以透過在要求中新增 customInterval 屬性進行指定。 例如,如果您的序列每隔 5 分鐘取樣一次,您可以將下列內容新增至您的 JSON 要求:

{
    "granularity" : "minutely", 
    "customInterval" : 5
}

遺漏資料點

平均分佈的時間序列資料集中經常會遺漏資料點,特別是具有精細資料粒度的資料集 (短取樣間隔。例如每隔幾分鐘取樣的資料)。 在您的資料中遺漏小於 10% 的預期點數,不應該會對偵測結果造成負面影響。 請考慮根據資料的特性來填補資料的間隙,例如替代早期的資料點、線性插補或移動平均。

彙總分散式資料

異常偵測器 API 最適用於平均分佈的時間序列。 如果您的資料是隨機分佈的,您應該依時間單位 (例如每分鐘、每小時或每日) 進行彙總。

對具有季節性模式的資料進行異常偵測

如果您知道時間序列資料具有季節性模式 (會定期出現),則可以改善精確度和 API 回應時間。

若在建構 JSON 要求時指定 period,可將異常偵測延遲降低高達 50%。 period 是一個整數,可大致指定時間序列重複模式所需的資料點數目。 例如,每天有一個資料點的時間序列會有 7period,而每小時有一點的時間序列 (具有相同的每週模式) 會有 7*24period。 如果您不確定資料的模式,則不需要指定此參數。

為了獲得最佳結果,請提供四個 period 的資料點,再加上一個額外的資料點。 例如,上述具有每週模式的每小時資料應該在要求本文中提供 673 個資料點 (7 * 24 * 4 + 1)。

取樣資料進行即時監視

如果您的串流資料是依短間隔 (例如秒或分鐘) 取樣,則傳送建議的資料點數目可能會超過異常偵測器 API 允許的數目上限 (8640 個資料點)。 如果您的資料顯示穩定的季節性模式,請考慮以較大的時間間隔 (例如小時) 傳送時間序列資料的樣本。 以這種方式取樣您的資料,也可明顯改善 API 回應時間。

下一步