はじめに
たまたま Amazon Lookout for Metrics というサービスについて触れることがあったので検証した内容をまとめてみました。
Amazon Lookout for Metrics とは?
機械学習を使用してメトリクス内の異常を自動的に検知してくれる AWS サービスです。
検証内容
今回は以下の記事を参考に行っています。
概要説明
あるファーストフードチェーンが一部の店舗でポイントプログラムを導入しました。
そのプログラムの内容は以下です。
- 商品を購入するとその金額に応じてポイントが溜まる
- 溜まったポイントは割引券や特典と交換することができる
このポイントの獲得と交換パターンにおいてパターン異常を検知する設定を行うという内容です。
データ概要
ここで取り扱うデータの項目とその内容については以下となります。
項目 | 説明 |
---|---|
TIMESTAMP | データの取得日です。 今回は yyyy-MM-dd を扱っています。 |
LOCATION_ID | ポイントプログラムが導入された店舗の ID です。 A-1001 ~ A-1008 の 8 店舗が集計対象です。 |
EARNED_POINTS | 獲得ポイントです。 顧客が商品を購入して得られたその日の総数です。 |
REDEEM_POINTS | 交換ポイントです。 顧客が店舗で交換したその日のポイントの総数です。 |
設定
今回の構築ステップは大きく分けて以下の 3 ステップとなります。
- Amazon S3 バケットの作成と解析データのアップロード
- Detector の作成
- データセットの作成
S3バケットの作成とサンプルデータのアップロード
ここでは Amazon Lookout for Metrics で解析するためのデータ置き場とそのデータの準備を行います。
利用するデータは AWS Samples というところにあるデータを利用します。
- まず、AWS Samples より、 loyalty.csv というファイルのダウンロードをします。
- 次に S3 バケットを作成し、先ほどダウンロードし loyalty.csv をアップロードします。
Detector の作成
対象となるデータセットの監視と検出をするための Detector を作成します。
-
まず、
AWS マネジメントコンソール > Amazon Lookout for Metrics
をクリックします。 -
次に
Create detector
をクリックします。
Create detector
Detector details で Detector の情報を入力します。
- Detector name に loyalty-point-anomaly-detector を入力します。
- Interval は Detector がデータセットを分析する間隔なので、今回の利用データは一日単位のため 1 day intervals を指定します。
-
Create
をクリックします。
データセットの作成
ここではデータの場所と Detector へ異常を伝えるためのデータセットを作成します。
- Detector の作成が完了すると以下の画面が表示されるので
Add a dataset
をクリックします。
-
Name に
loyalty-point-anomaly-dataset
を入力します。 -
Timezone に
Asia/Tokyo
を指定します。
-
Datasource に
Amazon S3
を選び、Detector mode にBacktest
を選択して先ほどアップロードしたデータソースのファイルパスを入力します。 -
[Detect format settings]
をクリックします。
- 全てデフォルトの状態で
Next
をクリックします。
meaures と dimensions の設定
Mesures は KPI (Key Performance Indicator : 重要業績評価指標) を設定する項目で、Dimensions は カテゴリー や セグメント を設定する項目になります。
-
Mesures で
EARNED_POINTS
とREDEEM_POINTS
を指定します。 -
Dimensions では地域別に計測したいので
LOCATION_ID
を指定します。
timestamps の設定
Timestamp はデータの タイムスタンプ が記録されている項目とそのフォーマットを指定します。
-
Timestamp は
TIMESTAMP
という項目を指定し、 Format ではEnter a timestamp format
を選んで Timestamp format にyyyy-MM-dd
を入力します。
コストの見積もり
Cost Estimate を利用すると検知にかかる費用を事前に見積もることができます。
今回の場合、 Measures 数が 2 つで Dimension 数が 8 つのため、Metrics 数は 2 (Measures) × 8 (Dimension) = 16 (Metrics)
になります。
また、1 Metrics あたり $0.75 になるのため、発生する費用は 16 (Metrics) × $0.75 = $12.00
となります。
※ ここで見積もりを間違うと請求が大変なことになるので気をつけましょう。
-
Next
をクリックします
Review and create
- 内容を確認して問題なければ
Save and activate
をクリックします。
-
Activate your detector という確認画面がポップアップされるため、 confirm を入力して
Activate
をクリックします。
Activate detector の項目が Activating backtest...
から Backtest complete
となったら完了です。
解析結果
バックテストが完了したら検出した異常について確認します。
-
Amazon Lookout for Metrics > Detectors > loyalty-point-anomaly-detector > Anomalies
をクリックします。 -
すると
REDEEM_POINTS Impacted
というのが表示されているのでクリックします。
Severity score は検知した異常の重大度を示し、 Start time detected は異常を検知した時刻(TIMESTAMP値)が表示されます。
ここでは重要度が 91
の異常を Sep 01, 2022 00:00 JST
に検知しています。
また、異常に対する寄与率も確認できます。
今回は異常の全てが A-1002
からのものということを表しています。
おわりに
データを S3 に置くだけで簡単に異常検知を行ってくれるのでとても便利だなと感じました。
ただ、 Dimensions はうっかり間違うと大変なことになるため注意が必要です。
参考