# Anomaly Detection in Infrequently Occurred Patterns ## 概要 [[Baidu]] のプリンシパルアーキテクト [[Dong Wang]] が SREcon17 Americas(2017 年 3 月、サンフランシスコ)で発表したトーク。大規模インターネットサービスにおける祝日期間のトラフィック異常検知の困難さと、データマイニング手法による解決策を述べる。前年の LISA16(2016 年 12 月、ボストン)での発表「Intelligent Anomaly Detection in Heterogeneous Internet Services」の詳細ケーススタディとして位置づけられる。 ## 主要メッセージ - 通常時の異常検知は「頻出パターンからの逸脱」で十分だが、中国の祝日(春節、端午節、中秋節など)はトラフィックパターンが通常と大きく異なるため、従来のアラート戦略では大量の見逃し・偽陽性が発生する(p.6)。 - 中国の祝日は太陰暦に基づき毎年日付が変わるため、時系列の季節性が使えず、かつ祝日自体が低頻度で訓練データが不足する(p.8)。 - 4 種の従来手法(中央値補正、時間補正、Holt-Winters、バックプロパゲーション NN)はいずれも予測精度が不十分(p.7)。 - 解決策として 2 段階のアプローチを提案: (1) 日次トラフィック CDF の k-means クラスタリングによる「類似日」発見、(2) リアルタイム比率補正による予測値の調整(p.9, p.12)。 - 2017 年 1 月 1 日の本番デプロイで良好な結果を確認(p.14)。 ## 視覚的に重要な図表 **p.6 春節前後のメトリクス曲線** ![[_attachments/srecon17amer-wang-anomaly-infrequent/page-006.png]] 春節期間(2 月中旬〜下旬)のトラフィックが通常の日次パターンから大きく乖離する。赤枠は従来手法で見逃しまたは偽陽性が発生した箇所。 **p.7 失敗した 4 手法の比較** ![[_attachments/srecon17amer-wang-anomaly-infrequent/page-007.png]] 中央値補正(Median Residual)、時間補正(Time Compensation)、Holt-Winters、BP(バックプロパゲーション NN)の 4 手法。いずれも predicted data(青)が real data(黒)から大きく乖離する。 **p.8 中国の祝日日付の非固定性** ![[_attachments/srecon17amer-wang-anomaly-infrequent/page-008.png]] 春節・端午節・中秋節の日付が年ごとに異なる。2015 年の春節は 2 月 19 日、2016 年は 2 月 8 日、2017 年は 1 月 28 日。 **p.9 日次 CDF の k-means クラスタリング** ![[_attachments/srecon17amer-wang-anomaly-infrequent/page-009.png]] 各日のトラフィック曲線を CDF に変換し、k-means でクラスタリング。K=10, 7, 5, 3 を比較し、K=3(赤枠)が実用的な分離を達成する。 **p.10 クラスタリング結果の詳細** ![[_attachments/srecon17amer-wang-anomaly-infrequent/page-010.png]] K=3 の 3 クラスタ(Green/Blue/Black)の内訳(2015/3/1〜2016/1/4、計 310 日)。Green=平日 208 日、Blue=主に土曜 30 日+日曜 10 日、Black=日曜 29 日+祝日 21 日+特殊日 3 日。祝日は Black クラスタに集約される。 **p.12 リアルタイム比率補正の数式と概念図** ![[_attachments/srecon17amer-wang-anomaly-infrequent/page-012.png]] 参照曲線 X(同クラスタの過去データ)と当日曲線 x の比率を用い、予測値 X̂(k) を逐次補正する。直近 m 点のスライディングウィンドウで平滑化を行う。CDF は傾向(トレンド)は捉えるが各時点の正確な値は返さないため、この補正が必要。 **p.13 提案手法と既存 4 手法の実験比較** ![[_attachments/srecon17amer-wang-anomaly-infrequent/page-013.png]] 左のグラフが提案手法(日付クラスタリング+リアルタイム補正)の結果。predicted data(青)が real data(黒)に密着し、赤枠の祝日遷移区間も追従している。右の 4 手法は同一データで大幅に乖離する。 **p.14 2017 年 1 月 1 日の本番デプロイ結果** ![[_attachments/srecon17amer-wang-anomaly-infrequent/page-014.png]] expected data(緑)は通常パターンからの予測で大幅に乖離するが、提案手法の predicted data(青)は real data(黒)をよく追従している。赤枠内が祝日の主要トラフィック区間。 ## 口頭説明・補足 - 本トークは LISA16(2016 年 12 月、ボストン)での「Intelligent Anomaly Detection in Heterogeneous Internet Services」の詳細ケーススタディとして企画された。前回トーク後に「アルゴリズムの詳細は何か」「データはどこから来るのか」という質問が多かったことが動機。 - 「特殊日(Specials)」の具体例として 11 月 11 日(中国のブラックフライデー)を挙げた。公式の祝日ではないが、オンラインショッピングの急増でトラフィックパターンが通常と大きく異なる日。 - クラスタリング後、日付の自然属性(曜日・祝日・特殊日)を用いたロジスティック回帰等の分類モデルを構築し、任意の日を 3 クラスタのいずれかに自動分類する。同クラスタの過去データを参照して期待値を生成する。 - リアルタイム補正のウィンドウ内で、直近の点がすべて正常であればより実値に近づける方向に補正し、異常が検出されていれば期待値を実値から遠ざける方向に調整する。 ## Q&A - **Q: 緩やかな低下をマスクするのでは?** — 質問者は「過去の観測に基づいてリアルタイム補正する手法は、急激なドロップは検知できるが徐々に乖離が拡大するケースを見逃すのでは」と指摘。Wang は「その通りで、この手法は急激な変化に特化しており、緩やかな低下には別の閾値ベースの手法を併用している」と回答。 - **Q: 祝日の日付をリアルタイムにどう入力するのか?** — 質問者は分類モデルへの入力方法を確認したが、質問の意図が噛み合わず「オフラインで議論しよう」で終了。 - **Q: 日のクラスタ(Green/Blue/Black)ごとに異なる監視パラメータやアラートスキーマを使っているか?** — Wang は「クラスタごとに異なる応答をするわけではなく、期待値と実値のギャップを監視し、ギャップの大きさに応じて異なる応答をする」と回答。 ## 概念・実体への接続 - [[異常検知]]: 祝日パターンという文脈異常(contextual anomaly)に対する産業事例。「正常パターンが稀にしか出現しない」状況で従来の統計手法が破綻するケース。 - [[Baidu]]: 10 億ユーザー超を抱えるサービスでの SRE 実践。 - [[Dong Wang]]: Baidu プリンシパルアーキテクト。Bell Labs・Google に計 15 年以上在籍した後、Baidu の SRE チームを率い異常検知・障害自動修復に従事。 ## 限界・不確実点 - スライドには適合率・再現率の具体的数値が提示されていない。「pretty satisfying results in terms of alarming precision and recall」(公式ページ概要)とあるが定量評価はトーク中の口頭説明に限定される可能性がある。 - K=3 が最適という根拠がスライド上は視覚的な分離のみで、定量的な評価指標(シルエット係数等)は示されていない。 - リアルタイム比率補正の平滑化ウィンドウ幅 m の選定基準が不明。 - Whisper による文字起こしの精度限界(固有名詞の音声認識誤り等)がある。