時系列データの異常検知に使えるAmazon Lookout for Metricsの紹介

記事タイトルとURLをコピーする

サーバーワークスの村上です。

今回は時系列データの異常を検出し、その原因の特定に有用なAmazon Lookout for Metricsについて紹介します。

まずは結論

まずはイメージを掴んでいただくため、どのようなインサイトが得られるか紹介します。

時系列データを追加し、異常値を検出したい変数(Measures)を設定すると、以下のようにAmazon Lookout for Metricsは学習・推論を行い異常値を検出してくれます。

検出ごとに、予測値からどの程度外れているかを示す重大度スコアが表示されます。

以下の例ではViews(閲覧数)とRevenue(収益)がメジャーに設定されています。

異常値を検出したい変数(Measures)ごとに予測値からどの程度外れているかを示す重大度スコアが出る

検出した異常値の詳細を見ることで、そのメジャーのサブグループであるディメンションを確認することができます。

この例ではViewsに対して、Marketplace(市場)とPlatform(プラットフォーム)が定義されており、日本におけるPCからの閲覧数に異常が出ていることが分かります。

このように、機械学習の知識がなくても時系列データを追加するだけで異常検出ができるのがAmazon Lookout for Metricsのメリットといえます。

セットアップの流れ

AWS Workshopで提供されているサンプルデータを使って、Amazon Lookout for Metrics利用の流れを見ていきます。

サンプルデータは以下のようなCSVファイルで、platformやmarketplace別に1時間ごとの閲覧数と収益が記録されているファイルです。

プラットフォームや地域別に1時間ごとの閲覧数と収益が記録されている

Detectorの作成

まずはDetectorを作成します。

ここではDetectorの名前と時系列データの間隔を設定します。

サンプルデータは1時間ごとのデータですので、1hourを選択します。選択できるのは5minute, 10minute, 1hour, 1dayです。

データソースの選択

時系列データの保存場所です。

今回はS3を選択しCSVファイルを保存しますが、他にもAmazon RDSやAmazon CloudWatchなどのAWSサービス、SalesforceやTrendmicroなどのサードパーティ製品にも対応しています。

docs.aws.amazon.com

Detector modeの選択

Amazon Lookout for Metricsによる異常検出には2つの検出モードがあります。

バックテスト

過去のデータを使って行うテストモードです。

投入した過去の時系列データのうち、70%をモデルの学習に使用し、直近30%のデータに対して推論を行います。

ユーザー側はモデルが異常と判定した箇所を確認し、期待に沿っているか確認することができます。

連続モード(continuous mode)

連続的に生成されるデータを使用し、異常検出を行います。本番利用はこのモードの使用が想定されます。

履歴データ(historical data)がない場合はすぐに推論できるわけではなく、モデルの学習に一定の時間を要します。例えば5分間隔の時系列データの場合は25時間が必要とのことです。

A dataset can have continuous data, historical data or both. A detector looks for anomalies in continuous data, and uses historical data for learning.
(機械翻訳)データセットには、連続データ、履歴データ、またはその両方を含めることができます。検出器は連続データ内の異常を探し、履歴データを学習に使用します。
Lookout for Metrics terms and concepts - Amazon Lookout for Metrics

For coldstart anomaly detection (no historical data), the amount of time it takes for Lookout for Metrics to detect anomalies depends on the interval of your data collection as follows:
(機械翻訳)コールドスタート異常検出 (履歴データなし) の場合、Lookout for Metrics が異常を検出するのにかかる時間は、次のようにデータ収集の間隔によって異なります。
・5 minute interval – 25 hours
・10 minute interval – 50 hours
・1 hour interval – 4 days
・1 day interval – 14 days
https://docs.aws.amazon.com/ja_jp/lookoutmetrics/latest/dev/gettingstarted-quotas.html#gettingstarted-quotas-coldstart

メジャー(Measures)の設定

メジャーは異常値を検出したい変数です。

今回の場合、Views(閲覧数)とRevenue(収益)を設定しています。設定可能なメジャーの数は最大10個です。

ディメンション(Dimensions)の設定(オプション)

ディメンションはメジャーのサブグループです。

ディメンションを設定することで、メジャーをより詳細に分析することが可能です。

今回の場合はディメンションにMarketplace(市場)とPlatform(プラットフォーム)を設定しているので、市場ごと/プラットフォームごとのViewsおよびRevenueの異常検出が可能です。

後述しますが、メジャー数 × ディメンション数 = メトリクス という考え方になっており、メトリクスが増えると料金も増えるという課金になっているので注意が必要です。

以上でセットアップが完了です。

しばらく待つと、冒頭に記載したような異常検出ができるようになります。

アラート通知

異常が検出されたときに通知することも可能です。

通知したい重大度スコアやメジャーを設定し、Amazon SNSやAWS Lambda経由で通知することが可能です。

料金の考え方

メトリクスあたり0.75 USDの料金がかかります。メトリクス数が増えるごとにボリュームディスカウントが効きますので詳細は公式ページをご確認ください。

aws.amazon.com

先述のとおり、メジャー数 × ディメンション数 = メトリクス という考え方となっています。

例えば、メジャーがViewsとRevenueの2つ、ディメンションのmarketplaceが日本・アメリカ・フランスの3つの地域、ディメンションのplatformがPC・スマホの2種類だった場合、232 = 12がメトリクス数になります。

よって12 * 0.75 USD = 9 USDがコストとなります。

コンソール画面でも見積りが表示される

まとめ

  • Amazon Lookout for Metricsは時系列データの異常検出サービスである
  • データソースはAmazon S3やAmazon RDS、サードパーティ製品などを選択できる
  • 設定したメジャーおよびディメンションごとに異常検出が可能で、異常の度合いに応じて重大度スコアが算出される。
  • 異常検出時のアラート通知も可能
  • 料金の考え方は要注意

村上博哉 (執筆記事の一覧)

2020年4月入社。機械学習が好きです。記事へのご意見など:hiroya.murakami@serverworks.co.jp