Azure Data Explorer での異常検出と予測Anomaly detection and forecasting in Azure Data Explorer

Azure Data Explorer を使用すると、クラウド サービスまたは IoT デバイスからのテレメトリ データを継続的に収集することができます。Azure Data Explorer performs on-going collection of telemetry data from cloud services or IoT devices. このデータを分析することで、監視中のサービスの正常性、物理的な運用プロセス、使用状況の傾向、負荷予測など、さまざまな分析情報を得られます。This data is analyzed for various insights such as monitoring service health, physical production processes, usage trends, and load forecast. 選択したメトリックの時系列の分析を実行することで、その通常の代表的なベースライン パターンと比較した偏差を調べることができます。The analysis is done on time series of selected metrics to locate a deviation pattern of the metric relative to its typical normal baseline pattern. Azure Data Explorer には、複数の時系列を作成、操作、分析するためのネイティブ サポートが組み込まれています。Azure Data Explorer contains native support for creation, manipulation, and analysis of multiple time series. 何千もの時系列を秒単位で作成および分析することができ、これによりリアルタイムに近い監視ソリューションとワークフローが可能になります。It can create and analyze thousands of time series in seconds, enabling near real time monitoring solutions and workflows.

この記事では、Azure Data Explorer の時系列の異常検出および予測の機能について詳しく説明します。This article details the Azure Data Explorer time series anomaly detection and forecasting capabilities. 適用できる時系列関数は、よく知られている堅牢な分解モデルをベースにしています。このモデルでは、元の各時系列が季節、傾向、および残余コンポーネントに分解されます。The applicable time series functions are based on a robust well-known decomposition model, where each original time series is decomposed into seasonal, trend, and residual components. 異常は残余コンポーネントでの外れ値によって検出され、予測は季節コンポーネントおよび傾向コンポーネントを外挿することで行われます。Anomalies are detected by outliers on the residual component, while forecasting is done by extrapolating the seasonal and trend components. Azure Data Explorer の実装では、自動的な季節性の検出、外れ値の堅牢な分析、および何千もの秒単位の時系列を処理するベクター化された実装によって基本的な分解モデルが大幅に強化されています。The Azure Data Explorer implementation significantly enhances the basic decomposition model by automatic seasonality detection, robust outlier analysis, and vectorized implementation to process thousands of time series in seconds.

前提条件Prerequisites

時系列機能の概要について、「Azure Data Explorer の時系列分析」をお読みになってください。Read Time series analysis in Azure Data Explorer for an overview of time series capabilities.

時系列分解モデルTime series decomposition model

時系列の予測および異常検出に対応するの Azure Data Explorer ネイティブ実装では、よく知られている分解モデルが使用されます。Azure Data Explorer native implementation for time series prediction and anomaly detection uses a well-known decomposition model. このモデルは、将来のメトリック値の予測および異常値の検出を行うために、サービス トラフィック、コンポーネント ハートビート、定期的な IoT 測定など、定期的および傾向的な動作を明らかにすることが期待されるメトリックの時系列に適用されます。This model is applied to time series of metrics expected to manifest periodic and trend behavior, such as service traffic, component heartbeats, and IoT periodic measurements to forecast future metric values and detect anomalous ones. この回帰プロセスでは、以前から知られている季節的および傾向的な動作以外に、時系列がランダムに分散されることが前提になっています。The assumption of this regression process is that other than the previously known seasonal and trend behavior, the time series is randomly distributed. 季節的および傾向的なコンポーネント (集合的にベースラインと呼ばれる) から将来のメトリック値を予測し、残りの部分は無視できます。You can then forecast future metric values from the seasonal and trend components, collectively named baseline, and ignore the residual part. また、残りの部分のみを使用することにより、外れ値の分析に基づく異常値の検出を行うこともできます。You can also detect anomalous values based on outlier analysis using only the residual portion. 分解モデルを作成するには、関数 series_decompose() を使用します。To create a decomposition model, use the function series_decompose(). series_decompose() 関数では、時系列のセットを受け取ると、各時系列が季節的、傾向的、残余、ベースラインの各コンポーネントを自動的に分解されます。The series_decompose() function takes a set of time series and automatically decomposes each time series to its seasonal, trend, residual, and baseline components.

たとえば、次のクエリを使用して、内部の Web サービスのトラフィックを分解することができます。For example, you can decompose traffic of an internal web service by using the following query:

[ クリックするとクエリが実行されます ][Click to run query]

let min_t = datetime(2017-01-05);
let max_t = datetime(2017-02-03 22:00);
let dt = 2h;
demo_make_series2
| make-series num=avg(num) on TimeStamp from min_t to max_t step dt by sid 
| where sid == 'TS1'   //  select a single time series for a cleaner visualization
| extend (baseline, seasonal, trend, residual) = series_decompose(num, -1, 'linefit')  //  decomposition of a set of time series to seasonal, trend, residual, and baseline (seasonal+trend)
| render timechart with(title='Web app. traffic of a month, decomposition', ysplit=panels)

時系列分解

  • 元の時系列に num というラベル (赤色) を付けます。The original time series is labeled num (in red).
  • プロセスでは、関数 series_periods_detect() を使用して季節性を自動的に検出することから始まり、次に 季節 のパターン (紫色) を抽出します。The process starts by auto detection of the seasonality by using the function series_periods_detect() and extracts the seasonal pattern (in purple).
  • 元の時系列から季節のパターンを差し引きます。関数 series_fit_line() を使用して線形回帰を実行することで、傾向コンポーネント (薄い青) を検索します。The seasonal pattern is subtracted from the original time series and a linear regression is run using the function series_fit_line() to find the trend component (in light blue).
  • この関数によって傾向が差し引かれ、残りは、残余 コンポーネント (緑色) となります。The function subtracts the trend and the remainder is the residual component (in green).
  • 最後に、この関数で季節コンポーネントと傾向コンポーネントが足し算され、ベースライン (青) が生成されます。Finally, the function adds the seasonal and trend components to generate the baseline (in blue).

時系列の異常検出Time series anomaly detection

関数 series_decompose_anomalies() を使用すると、時系列のセット上の異常なポイントを検索できます。The function series_decompose_anomalies() finds anomalous points on a set of time series. この関数では、series_decompose() を呼び出して分解モデルが作成され、次に残余コンポーネントに対して series_outliers() が実行されます。This function calls series_decompose() to build the decomposition model and then runs series_outliers() on the residual component. series_outliers() では、テューキーのフェンス テストを使用して、残余コンポーネントのポイントごとに異常スコアが算出されます。series_outliers() calculates anomaly scores for each point of the residual component using Tukey's fence test. 異常スコアが 1.5 を超える場合は軽度の異常が発生したことを示し、-1.5 を下回る場合はそれが取り下げられたことを示します。Anomaly scores above 1.5 or below -1.5 indicate a mild anomaly rise or decline respectively. 異常スコアが 3.0 を上回る場合または -3.0 を下回る場合は、重度の異常を示します。Anomaly scores above 3.0 or below -3.0 indicate a strong anomaly.

次のクエリでは、Web サービスの内部トラフィックでの異常を検出できます。The following query allows you to detect anomalies in internal web service traffic:

[ クリックするとクエリが実行されます ][Click to run query]

let min_t = datetime(2017-01-05);
let max_t = datetime(2017-02-03 22:00);
let dt = 2h;
demo_make_series2
| make-series num=avg(num) on TimeStamp from min_t to max_t step dt by sid 
| where sid == 'TS1'   //  select a single time series for a cleaner visualization
| extend (anomalies, score, baseline) = series_decompose_anomalies(num, 1.5, -1, 'linefit')
| render anomalychart with(anomalycolumns=anomalies, title='Web app. traffic of a month, anomalies') //use "| render anomalychart with anomalycolumns=anomalies" to render the anomalies as bold points on the series charts.

時系列の異常検出

  • 元の時系列 (赤色)。The original time series (in red).
  • ベースライン (季節 + 傾向) コンポーネント (青色)。The baseline (seasonal + trend) component (in blue).
  • 元の時系列の上に表示された異常ポイント (紫色)。The anomalous points (in purple) on top of the original time series. 異常ポイントは、期待されるベースライン値から大幅に逸脱しています。The anomalous points significantly deviate from the expected baseline values.

時系列予測Time series forecasting

関数 series_decompose_forecast() では、時系列のセットの将来の値が予測されます。The function series_decompose_forecast() predicts future values of a set of time series. この関数では series_decompose() を呼び出して分解モデルが作成され、さらに、時系列ごとに、将来のベースライン コンポーネントが推定されます。This function calls series_decompose() to build the decomposition model and then, for each time series, extrapolates the baseline component into the future.

次のクエリでは、次の週の Web サービス トラフィックを予測できます。The following query allows you to predict next week's web service traffic:

[ クリックするとクエリが実行されます ][Click to run query]

let min_t = datetime(2017-01-05);
let max_t = datetime(2017-02-03 22:00);
let dt = 2h;
let horizon=7d;
demo_make_series2
| make-series num=avg(num) on TimeStamp from min_t to max_t+horizon step dt by sid 
| where sid == 'TS1'   //  select a single time series for a cleaner visualization
| extend forecast = series_decompose_forecast(num, toint(horizon/dt))
| render timechart with(title='Web app. traffic of a month, forecasting the next week by Time Series Decomposition')

時系列予測

  • 元のメトリック (赤色)。Original metric (in red). 既定では、将来の値は存在せず、0 に設定されます。Future values are missing and set to 0, by default.
  • 次の週の値を予測するベースライン コンポーネント (青色) を推定します。Extrapolate the baseline component (in blue) to predict next week's values.

スケーラビリティScalability

Azure Data Explorer のクエリ言語構文では、1 回の呼び出しで複数の時系列を処理できます。Azure Data Explorer query language syntax enables a single call to process multiple time series. それ固有の最適化された実装では、リアルタイムに近いシナリオで何千ものカウンターを監視する場合、異常検出と予測を効果的に行うのに不可欠な高いパフォーマンスを実現できます。Its unique optimized implementation allows for fast performance, which is critical for effective anomaly detection and forecasting when monitoring thousands of counters in near real-time scenarios.

次のクエリを見ると、3 つの時系列が同時に処理されているのがわかります。The following query shows the processing of three time series simultaneously:

[ クリックするとクエリが実行されます ][Click to run query]

let min_t = datetime(2017-01-05);
let max_t = datetime(2017-02-03 22:00);
let dt = 2h;
let horizon=7d;
demo_make_series2
| make-series num=avg(num) on TimeStamp from min_t to max_t+horizon step dt by sid
| extend offset=case(sid=='TS3', 4000000, sid=='TS2', 2000000, 0)   //  add artificial offset for easy visualization of multiple time series
| extend num=series_add(num, offset)
| extend forecast = series_decompose_forecast(num, toint(horizon/dt))
| render timechart with(title='Web app. traffic of a month, forecasting the next week for 3 time series')

時系列のスケーラビリティ

まとめSummary

このドキュメントでは、時系列の異常検出および予測を行うための Azure Data Explorer ネイティブ関数について詳しく説明しています。This document details native Azure Data Explorer functions for time series anomaly detection and forecasting. 元の各時系列は異常検出または予測を目的として季節、傾向、残余の各コンポーネントに分解されます。Each original time series is decomposed into seasonal, trend and residual components for detecting anomalies and/or forecasting. これらの機能は、障害検出、予測メンテナンス、需要と負荷の予測などのリアルタイムに近い監視シナリオで使用することができます。These functionalities can be used for near real-time monitoring scenarios, such as fault detection, predictive maintenance, and demand and load forecasting.

次のステップNext steps

Azure Data Explorer の機械学習機能について学習します。Learn about Machine learning capabilities in Azure Data Explorer.