Azure Data Explorer と Stream Analytics での異常検出

2020年1月16日 に投稿済み

Principal Cloud Solution Architect

異常検出は、世界中の数多くの業界で非常に重要な役割を果たしています。例として、金融業界の不正検出、病院の健康状態の監視、製造業界、石油&ガス業界、公益事業、運送業界、航空業界、自動車業界の業務環境の監視が挙げられます。

異常検出は、異常な動きするデータのパターンを見つけ出すプロセスです。意思決定者が異常検出し、必要に応じて事前に措置を講じられることは重要です。たとえば、石油&ガス業界では、さまざまな機器を備えた深海掘削装置が、さまざまな頻度および形式で計測データを送信する数百ものセンサーによって集中的に監視されています。従来のソフトウェア プラットフォームを用いて分析や視覚化を行うのは困難であり、異常を検出できなかった場合、深海掘削装置プラットフォームで非生産時間が生じる原因となり、多額の金銭的損失が日々発生するおそれがあります。

データを取り込んで処理し、それを戦略的なビジネス インテリジェンスに変えることで、探鉱と生産を強化し、生産効率を高め、安全を確保し、環境の保護を徹底するために、Azure IoT、Azure Stream Analytics、Azure Data Explorer、機械学習などの新しいテクノロジが必要になります。これらのマネージド サービスは、ソフトウェアの開発期間を大幅に短縮するとともに、市場導入までの時間を短縮し、コスト効率、高可用性、および高スケーラビリティを実現します。

Azure プラットフォームは異常検出のオプションを数多く提供し、お客様は自社のニーズに最適なテクノロジを選択できますが、各ソリューションに最適なユース ケースについて尋ねる質問がさまざまなお客様からフィールド担当アーキテクトのもとに届いています。その質問に対する答えをこれから探っていきますが、まずは以下のいくつかの用語の定義について知っておく必要があります。

時系列とは時間順に示される一連のデータ ポイントです。石油&ガス業界の大半の機器やセンサーの読み取りデータは、一連の時間/深度で読み取られて順番に示されます。

累積時系列の分解とは分解は、以下のグラフのように、時系列を複数のコンポーネントに分けるタスクです。

分解は、時系列を複数のコンポーネントに分けるタスクである

時系列の予測と異常検出

時系列と予測を示すグラフ

異常検出は、データセットの大部分と大きく異なる測定値を特定するプロセスです。

異常検出の例を示すグラフ

これは、Azure Data Explorer での異常検出の例です。

  • 赤線は、元の時系列です。
  • 青線は、ベースライン (季節 + 傾向) コンポーネントです。
  • 元の時系列上に示されている紫の点は、異常を示す点です。

以下の図で示すように、Azure Stream Analytics または Azure Data Explorer のいずれかを用いて分析と検出をリアルタイムに行うことで異常を検出できます。

Azure によるリアルタイム分析のパターンを示す図

Azure Stream Analytics は、ミッション クリティカルなワークロード向けに設計された使いやすいリアルタイム分析サービスです。わずか数クリックでエンドツーエンドのサーバーレス ストリーミング パイプラインを構築したり、SQL で数分以内にゼロから稼働させたり、カスタム コードと組み込みの機械学習機能を用いてより高度なシナリオに対応するように簡単に拡張したりできます。

Azure Data Explorer は、アプリケーション、Web サイト、IoT デバイスなどから流れてくる大量のデータ ストリーミングをほぼリアルタイムに分析するための高速なフル マネージドのデータ分析サービスです。さまざまな質問を送ってオンザフライでデータを繰り返し探査することにより、製品の改良、カスタマー エクスペリエンスの強化、デバイスの監視、運用の向上、パターン/異常/傾向の迅速な特定が可能です。

Azure Stream Analytics と Azure Data Explorer の比較

ユース ケース

Stream Analytics は、集計関数 (ホッピング ウィンドウ、スライディング ウィンドウ、タンブリング ウィンドウ、セッション ウィンドウ) をサポートし、継続的な、またはストリーミングのリアルタイム分析に適しています。JavaScript や C# 以外の言語で UDF または UDA を記述したいと考えているお客様や、ソリューションがマルチクラウド環境やオンプレミス環境内にあるお客様のユース ケースには適していません。

Data Explorer は、オンデマンドの、またはインタラクティブなほぼリアルタイムの分析、大量のデータ ストリームのデータ探索、季節性分解、アドホック作業、ダッシュボード、およびほぼリアルタイムのデータから履歴データまでの根本原因分析に適しています。エッジに分析機能を展開する必要があるお客様のユース ケースには適していません。

予測

Azure Machine Learning Studio と統合する Stream Analytics ジョブを設定できます。

Data Explorer は、同一の分解モデルに基づいて時系列を予測するためのネイティブ機能を提供します。予測は、予防的メンテナンスやリソース計画などの数多くのシナリオで役立ちます。

季節性

Stream Analytics は、スライディング ウィンドウのサイズの制約があり、季節性のサポートを提供していません。

Data Explorer は、時系列の期間を自動的に検出する機能を提供します。メトリックに個別の特定の期間が含まれることがわかっている場合、それらが存在することを確認することもできます。

分解

Stream Analytics は、分解をサポートしていません。

Data Explorer は、一連の時系列を取得し、各時系列を季節性、傾向、残余、およびベースライン コンポーネントに自動的に分解する機能を提供します。

フィルタリングと分析

Stream Analytics は、スパイクおよびディップまたは変化点を検出する機能を提供します。

Data Explorer は、一連の時系列で異常を示す点を検出するための分析機能、および異常検出後の根本原因分析 (RCA) 機能を提供します。

フィルタリング

Stream Analytics では、参照データ、ゆっくりした変化を示すデータ、または静的なデータでフィルターする機能を提供します。

Data Explorer は、2 つの汎用機能を提供します。
•    移動平均、微分、シェイプ マッチングで使用できる有限インパルス応答 (FIR)
•    指数平滑法や累積和で使用できる無限インパルス応答 (IIR)

異常検出

Stream Analytics は、以下の検出機能を提供します。
•    スパイクおよびディップ (一時的な異常)
•    変化点 (レベルや傾向の変化などの永続的な異常)

Data Explorer は、以下の検出機能を提供します。
•    拡張された季節性分解モデルに基づいたスパイクおよびディップ (季節性の自動検出、トレーニング データの異常に対する堅牢性のサポート)
•    セグメント化された線形回帰による変化点 (レベルの変化、傾向の変化)
•    KQL Inline Python/R プラグインを使用することで、Python または R に実装された他のモデルによる拡張が可能

今後について

Azure Data Analytics は、一般的には各ワークロードに最適なテクノロジを提供します。新しいリアルタイム分析アーキテクチャ (上記を参照) により、異常検出を含む、ストリームおよび時系列分析の各種ワークロードに最適なテクノロジを活用することが可能になっています。すぐに使用を開始する際には、下記の資料もご参照ください。