KDD Cup 2021 時系列異常検知コンペ 参加報告

KDD Cup 2021
時系列異常検知コンペ
Multi-dataset Time Series Anomaly Detection
参加報告
産総研 / 三菱電機
吉村 玄太
2021-09-24
KDD2021 参加報告&論文読み会
This work is based on results obtained from a project, JPNP20006, commissioned by
the New Energy and Industrial Technology Development Organization (NEDO).
自己紹介
吉村 玄太 (@intellygenta)
興味
• 時系列データマイニング
• 透明性の高い機械学習
• データ要約・可視化
所属
• 三菱電機 情報技術総合研究所
• ビル・空調機,自動車,工場機器などで計測した
時系列データの分析およびAIの研究開発
• 産総研 人工知能研究センター 特定集中研究専門員
• NEDO「人と共に進化する次世代人工知能に関する技術開発事業」
• 人動作時系列のデータ分析・学習手法の研究
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 2
趣味:全国の灯台めぐり
KDD Cup 2021
KDD Cupは1997年以降毎年開催されているデータ分析コンペ
25回目の今回は3課題
1. Multi-dataset Time Series Anomaly Detection
• 複数の単変量時系列から異常検知
• University of California, Riverside
2. City Brain Challenge
• 都市規模の交通シミュレーション環境上で
信号を制御して車両数を最大化
• Shanghai Jiao Tong University
3. Open Graph Benchmark Large-Scale Challenge (OGB-LSC)
• 大規模グラフの3タスク(node classification,
link prediction, graph regression)
• Stanford University
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 3
従来の時系列異常検知データセット※の問題点
“Current Time Series Anomaly Detection Benchmarks are Flawed
and are Creating the Illusion of Progress” と主張 [Wu+20]
1. Triviality:極めて単純なアルゴリズムで解ける
2. Mislabeling:明らかに間違った真値が散見される
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 4
※ Yahoo, Numenta, NASA, OMNI, …
Multi-dataset Time Series Anomaly Detection
• 前述の問題点を軽減した時系列異常検知向けのデータセット
• 様々なドメインで収集された250種類の単変量時系列から成る
• 各時系列はそれぞれある既知の時点で前後に分割されている
• 前半=train:異常を1つも含まない
• 後半=test:異常区間を1つだけ含む
• 推定した異常位置が異常区間の真値の±100以内であれば正解
• 求)250時系列に対する正解率 (Accuracy) が高い
汎用的な時系列異常検知アルゴリズム
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 5
異常の例
• 異常の種類は様々
• 異常部位の長さも様々
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 6
Source: 6位解法の説明動画
https://www.youtube.com/watch?v=aAtRv8fiXD4
ルール
制約
• チームは最大4人まで
• 1日1サブまで
• 投稿毎に2つのファイルを添付
• 250時系列の異常検知結果 (csv) ⇒ Public LB
• 上記結果を出力するコード (≠code competition)
禁止事項
• チーム外へのPrivate sharing
• Hand-labeling
• 外部データや事前学習モデルの使用
• 時系列間の知識共有(各時系列で独立に異常検知しないといけない)
• データセットへの意図的なoverfitting(汎用的なアルゴリズムが欲しい)
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 7
スケジュール
Phase 1
• 3/15 ~ 4/7
• 25種類の時系列
Phase 2
• 4/8 ~ 6/1
• Phase 1を含む250種類の時系列
Code Review
• 6/2 ~ 6/7 → 8/4
• 主催者による禁止事項確認・再現実験 → Private LBが確定
KDD2021
• 8/14 ~ 8/18
• KDD CupのWorkshopで上位入賞者が発表
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 8
結果
ソロ参加で正解率 86.8% (=217/250) を達成
• Private LB 176チーム中 5位
• 1位 88.4% (=221/250) まであと4つ足らず
Top-10の正解率が突出
• うち半数が中国企業
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 9
Source: 主催者のスライド
1位 $2,000 USD
2位 $1,000 USD
3位タイ $500 USD
3位タイ $500 USD
5位 Honorable Mention
上位解法まとめ
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 10
※ 上位解法の発表を個人的にまとめたので間違っている可能性アリ
Affiliation Accuracy Ensemble
Machine Learning
(Deep Learning)
Period
Estimation
Similarity
(Distance)
Filtering /
Smoothing
Notes
1st
DeepBlue
Technology
88.4%
Weighted
Averaging
Regression
(GBDT, CNN)
Auto Period
Finder
MP
Fourier
Transform
2階差分も使用
1階差分は不使用
2nd Huawei 87.6%
Cascading
+ Selection
― FFT MP
STL
Decomposition
11種類のモデルを
既定の順序で適用
3rd
A
Hikvision
Research
Institute
87.2%
Simple
Averaging
Deep SAD ― ― Smoothing
10種類の
Data Augmentationで
異常サンプルを作成
3rd
B
Hitachi
America
R&D
87.2%
Cascading
+ Voting
― ACF DTW LOESS
四分位範囲 (IQR) 外
を異常とみなす
5th AIST 86.8%
Model
Selection
― ―
MP,
NMP
Moving
Average
11種類のモデルを
並列して比較
6th Alibaba 84.8% Cascading ― RobustPeriod MP
RobustTrend,
RobustSTL
矩形波はシンボリッ
ク表現 (SAX) に変換
7th
Humboldt
University
84.4%
Simple
Averaging
― FFT 5-NN DP
ROCKET
features
長い時系列は50kに
リサンプリング
5位解法の概要
単純な2ステップの時系列異常検知アルゴリズム
Step 1. 複数の非負の異常スコアを算出
Step 2. 最も突出したピークを持つ異常スコアを選択
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 11
𝑡0
0 𝑇
𝑋
𝑡
Ƹ
𝑡
Step 1
異常区間
Step 2
異常スコア1
異常スコア2
異常スコア3
…
最も突出したピーク
𝑡𝑏 𝑡𝑒
Train Test
Step 1. 複数の非負の異常スコアを算出
1-(1) スコア算出 (sliding window)
• 様々な長さ・種類の異常に対応
• 32種類の窓幅(部分列長)
• 11種類の異常スコア関数
1-(2) 平滑化 (moving average)
• スコアのノイズを低減して
異常検知を安定化
• 区間 における
平均的な異常度合い
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 12
𝑠𝑡 = mean(𝑌𝑡−𝑤+1:𝑡+1)
(𝑡 − 𝑤, 𝑡 + 𝑤)
𝑦𝑡 = 𝑓 𝑋𝑡:𝑡+𝑤 ≥ 0 (𝑡0 ≤ 𝑡 < 𝑇 − 𝑤)
x1.1 x1.1
𝑤 ∈ {40, 44, 48, … , 767}
𝑋𝑡:𝑡+𝑤 = 𝑥𝑡, 𝑥𝑡+1, … , 𝑥𝑡+𝑤−1
𝑓 ∈ {𝑓1, 𝑓2, … , 𝑓11}
𝑡0 𝑡 𝑇
𝑋
𝑌
𝑆
𝑤
𝑦𝑡 = 𝑓 𝑋𝑡:𝑡+𝑤
𝑠𝑡 = mean(𝑌𝑡−𝑤+1:𝑡+1)
Step 2. 最も突出したピークを持つ異常スコアを選択
2-(1) 各異常スコアに対してピークの突出度を算出
• 突出度=テスト期間における最大のピークと2番目のピークの比率
2-(2) 突出度が最大となる異常スコアを選択
• 最大のピーク位置を異常位置として検知
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 13
𝑡1 = argmax
𝑡0≤𝑡<𝑇
𝑠𝑡 𝑡2 = argmax
𝑡0≤𝑡<𝑡1−𝑤
𝑡1+𝑤≤𝑡<𝑇
𝑠𝑡
𝑀 𝑤, 𝑓 =
𝑠𝑡1
𝑠𝑡2
w f1 f2 f3 … f11
40 2.4 8.3 1.0 … 4.2
44 3.7 5.9 1.2 … 2.3
48 4.3 10.5 2.1 … 1.3
… … … … … …
767 9.1 4.3 7.2 … 6.2
最も突出したピーク
𝑡0 𝑡1 𝑇
𝑆
𝑡2
𝑡
𝑠𝑡1
= 4.8
𝑠𝑡2
= 2.0 ⇒ 𝑀 𝑤, 𝑓 = 2.4
Ƹ
𝑡 = 𝑡1
異常スコア関数
水色で塗った3種類の異常スコア関数について説明
(*) 最終日 (6/1) の投稿コードに追加したが締切のタイムゾーンが不明瞭だったため投稿できず
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 14
No. Name Description
1 orig_p2p Peak-to-peak value of the original time series X (orig)
2 diff_p2p Peak-to-peak value of the 1st-order difference of X (diff)
3 acc_p2p Peak-to-peak value of the 2nd-order difference of X (acc)
4 orig_p2p_inv Inverse of peak-to-peak value of orig
5 diff_small Percentage of time when the absolute value of diff is small
6 acc_std Standard deviation of acc
7 acc_std_inv Inverse of standard deviation of acc
8 orig_mp_novelty Matrix Profile (AB-join) of orig
9 orig_mp_outlier Matrix Profile (self-join) of orig
10 orig_np_novelty Normalized Matrix Profile (AB-join) of orig
11 orig_np_outlier Normalized Matrix Profile (self-join) of orig
12 diff_large* Percentage of time when the absolute value of diff is large
13 diff_cross* Percentage of time when diff crosses zero
例1.Peak-to-peak value
• 部分列の振幅
• Rolling max/minを用いて簡単に算出
• 3種類の時系列に対して算出
• 元の時系列 (orig)
• 1階差分 (diff)
• 2階差分 (acc)
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 15
𝑓 𝑋𝑡:𝑡+𝑤 = max(𝑋𝑡:𝑡+𝑤) − min(𝑋𝑡:𝑡+𝑤)
𝑡 𝑇
𝑤
𝑋
𝑡0
𝑌
例2.Matrix Profile
• Matrix Profile (MP) [Yeh+16]
• 最近傍部分列への距離(標準化された部分列同士のユークリッド距離)
• Novelty: AB-join (A=test, B=train)
• Outlier: self-join (train+test)
• 効率的な計算アルゴリズムが存在
• STAMP, STOMP, GPU-STOMP, SCRIMP++, SCAMP [UCR]
• STUMPY: pythonライブラリ [Law+19]
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 16
𝑓 𝑋𝑡:𝑡+𝑤 = 𝑑𝑡 = min
0≤𝑢<𝑡0
dist 𝑋𝑡:𝑡+𝑤, 𝑋𝑢:𝑢+𝑤 = min
0≤𝑢<𝑡0
෨
𝑋𝑡:𝑡+𝑤 − ෨
𝑋𝑢:𝑢+𝑤 2
෨
𝑋𝑡:𝑡+𝑤 =
𝑋𝑡:𝑡+𝑤 − mean(𝑋𝑡:𝑡+𝑤)
std(𝑋𝑡:𝑡+𝑤)
𝑡 𝑇
𝑤
𝑢
𝑑𝑡
𝑋
𝑡0
𝑌
例3.Normalized Matrix Profile
• 場合によっては正常な時系列のMPが大きくなってしまう
• 例えば,正常な時系列のノイズが大きい場合
• Normalized Matrix Profile (NMP) という新しい異常スコアを提案
• Local Outlier Factor (LOF) [Breunig+00] に着想を得た
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 17
𝑧𝑡 = min
0≤𝑣<𝑢−
𝑤
2
𝑢+
𝑤
2≤𝑣<𝑡0
dist 𝑋𝑢:𝑢+𝑤, 𝑋𝑣:𝑣+𝑤
𝑓 𝑋𝑡:𝑡+𝑤 =
𝑑𝑡
𝑧𝑡
𝑋𝑡:𝑡+𝑤 𝑋𝑢:𝑢+𝑤
𝑋𝑣:𝑣+𝑤
𝑑𝑡
𝑧𝑡
𝑡 𝑇
𝑤
𝑢
𝑣
𝑧𝑡 𝑑𝑡
𝑋
𝑡0
𝑌
5位解法のまとめ
• 単純な2ステップの時系列異常検知アルゴリズムを提案
1. 複数の非負の異常スコアを算出
2. 最も突出したピークを持つ異常スコアを選択
• ソロ参加で高い正解率 86.8% (=217/250) を達成
• Private LB 176チーム中 5位
• 1位 88.4% (=221/250) まであと4つ
• さらなる利点
1. 再現性が高い(完全に決定論的)
2. スケーラブル(ボトルネックのMP計算はGPUや分散処理で高速化)
3. 人が理解できる(選択されたw, fから異常の長さ・種類を推察)
• GitHubでPythonコードを公開
• https://github.com/intellygenta/KDDCup2021
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 18
上位解法まとめ(再掲)
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 19
※ 上位解法の発表を個人的にまとめたので間違っている可能性アリ
Affiliation Accuracy Ensemble
Machine Learning
(Deep Learning)
Period
Estimation
Similarity
(Distance)
Filtering /
Smoothing
Notes
1st
DeepBlue
Technology
88.4%
Weighted
Averaging
Regression
(GBDT, CNN)
Auto Period
Finder
MP
Fourier
Transform
2階差分も使用
1階差分は不使用
2nd Huawei 87.6%
Cascading
+ Selection
― FFT MP
STL
Decomposition
11種類のモデルを
既定の順序で適用
3rd
A
Hikvision
Research
Institute
87.2%
Simple
Averaging
Deep SAD ― ― Smoothing
10種類の
Data Augmentationで
異常サンプルを作成
3rd
B
Hitachi
America
R&D
87.2%
Cascading
+ Voting
― ACF DTW LOESS
四分位範囲 (IQR) 外
を異常とみなす
5th AIST 86.8%
Model
Selection
― ―
MP,
NMP
Moving
Average
11種類のモデルを
並列して比較
6th Alibaba 84.8% Cascading ― RobustPeriod MP
RobustTrend,
RobustSTL
矩形波はシンボリッ
ク表現 (SAX) に変換
7th
Humboldt
University
84.4%
Simple
Averaging
― FFT 5-NN DP
ROCKET
features
長い時系列は50kに
リサンプリング
Ensemble
様々な種類・長さの異常を検知するためにアンサンブルが有効
1. Model Selection (5th, 2nd)
• 複数のモデルの中から指標※が最良のモデルを1つ選択
2. Averaging (1st, 3rd-A, 7th)
• Simple Averaging:各モデルの出力(=異常度)の平均
• Weighted Averaging:各モデルの出力の重み※付き平均
3. Cascading (2nd, 3rd-B, 6th)
• 既定の順序でモデルを適用していき基準※を超えたら検知して終了
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 20
Source: 6位解法の説明動画
https://www.youtube.com/watch?v=aAtRv8fiXD4
Source: 2位解法の説明動画
https://www.youtube.com/watch?v=4PdlUcmwWu0
※「Test期間に異常区間を1つだけ含む」という前提を利用
Machine Learning (Deep Learning)
1st:Regression
• 前後の部分列から時系列値を回帰(補間)
• 残差を異常度として出力
• モデルはいくつか試してGBDTとCNNを採用
3rd-A:Deep SAD
• Lukas Ruff, et al. “Deep Semi-Supervised Anomaly Detection” (ICLR2020)
• 10種類のData augmentationで異常サンプルを作成
• 様々な部分列長に対してそれぞれモデルを学習してSimple Averaging
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 21
Source: 1位解法の説明動画
https://www.youtube.com/watch?v=1v64_tzJPTE
Source: 3位解法の説明動画
https://www.youtube.com/watch?v=1v64_tzJPTE
その他の特筆事項
Period Estimation
• データセットに周期的な波形が多かったため5チームが周期を推定
• 周期推定の方法:FFT, ACF, 独自のアルゴリズム
• 推定した周期を用いてsliding windowの窓幅などのパラメータを決定
Similarity (Distance)
• 主催者が提案したMatrix Profile (MP) を4チームが利用
• 最近傍部分列との距離が大きい部分列を異常とみなす
• 時間伸縮を考慮したDynamic Time Warping (DTW) を用いたチームも
Filtering / Smoothing
• 時系列の前処理 (Filtering) や異常度の後処理 (Smoothing)
• STL Decompositionなど各チームが様々な処理を検討
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 22
おわりに
コンペの改善点
• Public/Private LBのデータセットが同じ(overfittingを誘発)
• コードレビューが人手(≠code competition)
• アナウンス不足(締切のタイムゾーン,結果発表の遅れ)
自身の反省点
• 場当たり的に進めてしまい後半は時間が不足
• Period EstimationやRegressionは試そうとしたが手が回らず
• 異常スコアの多様性を広げきれなかった
• 新規アイデア (NMP) が上手くいって安心してしまった
感想
• データ分析コンペは初参加だが楽しくやれた
• 上位解法を俯瞰して整理することによる学び
• 時系列データマイニングの研究界隈がますます盛り上がることを期待
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 23
参考文献
[Breunig+00]
Markus M. Breunig, et al.
"LOF: Identifying Density-Based Local Outliers.“
ACM SIGMOD 2000 (2000).
[Yeh+16]
Chin-Chia M. Yeh, et al.
"Matrix Profile I: All Pairs Similarity Joins for Time Series:
A Unifying View that Includes Motifs, Discords and Shapelets.“
IEEE ICDM 2016 (2016).
[Law+19]
Sean M. Law
"STUMPY: A Powerful and Scalable Python Library for Time Series Data Mining.“
Journal of Open Source Software (2019).
[Wu+20]
Renjie Wu, and Eamonn J. Keogh
"Current Time Series Anomaly Detection Benchmarks are Flawed and are Creating the Illusion of Progress.“
arXiv preprint arXiv:2009.13807 (2020).
[UCR]
The UCR Matrix Profile Page
https://www.cs.ucr.edu/~eamonn/MatrixProfile.html
Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 24
1 sur 24

Contenu connexe

Tendances(20)

PCAの最終形態GPLVMの解説PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説
弘毅 露崎23.8K vues
モデル高速化百選モデル高速化百選
モデル高速化百選
Yusuke Uchida24.7K vues
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向
Motokawa Tetsuya23K vues
深層生成モデルと世界モデル深層生成モデルと世界モデル
深層生成モデルと世界モデル
Masahiro Suzuki16.6K vues
敵対的生成ネットワーク(GAN)敵対的生成ネットワーク(GAN)
敵対的生成ネットワーク(GAN)
cvpaper. challenge95.2K vues
ドメイン適応の原理と応用ドメイン適応の原理と応用
ドメイン適応の原理と応用
Yoshitaka Ushiku5.4K vues

Similaire à KDD Cup 2021 時系列異常検知コンペ 参加報告

Tomoya Sato Master ThesisTomoya Sato Master Thesis
Tomoya Sato Master Thesispflab
2.6K vues31 diapositives
Cgc2Cgc2
Cgc2Chong-Kuan Chen
398 vues109 diapositives

KDD Cup 2021 時系列異常検知コンペ 参加報告

  • 1. KDD Cup 2021 時系列異常検知コンペ Multi-dataset Time Series Anomaly Detection 参加報告 産総研 / 三菱電機 吉村 玄太 2021-09-24 KDD2021 参加報告&論文読み会 This work is based on results obtained from a project, JPNP20006, commissioned by the New Energy and Industrial Technology Development Organization (NEDO).
  • 2. 自己紹介 吉村 玄太 (@intellygenta) 興味 • 時系列データマイニング • 透明性の高い機械学習 • データ要約・可視化 所属 • 三菱電機 情報技術総合研究所 • ビル・空調機,自動車,工場機器などで計測した 時系列データの分析およびAIの研究開発 • 産総研 人工知能研究センター 特定集中研究専門員 • NEDO「人と共に進化する次世代人工知能に関する技術開発事業」 • 人動作時系列のデータ分析・学習手法の研究 Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 2 趣味:全国の灯台めぐり
  • 3. KDD Cup 2021 KDD Cupは1997年以降毎年開催されているデータ分析コンペ 25回目の今回は3課題 1. Multi-dataset Time Series Anomaly Detection • 複数の単変量時系列から異常検知 • University of California, Riverside 2. City Brain Challenge • 都市規模の交通シミュレーション環境上で 信号を制御して車両数を最大化 • Shanghai Jiao Tong University 3. Open Graph Benchmark Large-Scale Challenge (OGB-LSC) • 大規模グラフの3タスク(node classification, link prediction, graph regression) • Stanford University Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 3
  • 4. 従来の時系列異常検知データセット※の問題点 “Current Time Series Anomaly Detection Benchmarks are Flawed and are Creating the Illusion of Progress” と主張 [Wu+20] 1. Triviality:極めて単純なアルゴリズムで解ける 2. Mislabeling:明らかに間違った真値が散見される Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 4 ※ Yahoo, Numenta, NASA, OMNI, …
  • 5. Multi-dataset Time Series Anomaly Detection • 前述の問題点を軽減した時系列異常検知向けのデータセット • 様々なドメインで収集された250種類の単変量時系列から成る • 各時系列はそれぞれある既知の時点で前後に分割されている • 前半=train:異常を1つも含まない • 後半=test:異常区間を1つだけ含む • 推定した異常位置が異常区間の真値の±100以内であれば正解 • 求)250時系列に対する正解率 (Accuracy) が高い 汎用的な時系列異常検知アルゴリズム Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 5
  • 6. 異常の例 • 異常の種類は様々 • 異常部位の長さも様々 Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 6 Source: 6位解法の説明動画 https://www.youtube.com/watch?v=aAtRv8fiXD4
  • 7. ルール 制約 • チームは最大4人まで • 1日1サブまで • 投稿毎に2つのファイルを添付 • 250時系列の異常検知結果 (csv) ⇒ Public LB • 上記結果を出力するコード (≠code competition) 禁止事項 • チーム外へのPrivate sharing • Hand-labeling • 外部データや事前学習モデルの使用 • 時系列間の知識共有(各時系列で独立に異常検知しないといけない) • データセットへの意図的なoverfitting(汎用的なアルゴリズムが欲しい) Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 7
  • 8. スケジュール Phase 1 • 3/15 ~ 4/7 • 25種類の時系列 Phase 2 • 4/8 ~ 6/1 • Phase 1を含む250種類の時系列 Code Review • 6/2 ~ 6/7 → 8/4 • 主催者による禁止事項確認・再現実験 → Private LBが確定 KDD2021 • 8/14 ~ 8/18 • KDD CupのWorkshopで上位入賞者が発表 Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 8
  • 9. 結果 ソロ参加で正解率 86.8% (=217/250) を達成 • Private LB 176チーム中 5位 • 1位 88.4% (=221/250) まであと4つ足らず Top-10の正解率が突出 • うち半数が中国企業 Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 9 Source: 主催者のスライド 1位 $2,000 USD 2位 $1,000 USD 3位タイ $500 USD 3位タイ $500 USD 5位 Honorable Mention
  • 10. 上位解法まとめ Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 10 ※ 上位解法の発表を個人的にまとめたので間違っている可能性アリ Affiliation Accuracy Ensemble Machine Learning (Deep Learning) Period Estimation Similarity (Distance) Filtering / Smoothing Notes 1st DeepBlue Technology 88.4% Weighted Averaging Regression (GBDT, CNN) Auto Period Finder MP Fourier Transform 2階差分も使用 1階差分は不使用 2nd Huawei 87.6% Cascading + Selection ― FFT MP STL Decomposition 11種類のモデルを 既定の順序で適用 3rd A Hikvision Research Institute 87.2% Simple Averaging Deep SAD ― ― Smoothing 10種類の Data Augmentationで 異常サンプルを作成 3rd B Hitachi America R&D 87.2% Cascading + Voting ― ACF DTW LOESS 四分位範囲 (IQR) 外 を異常とみなす 5th AIST 86.8% Model Selection ― ― MP, NMP Moving Average 11種類のモデルを 並列して比較 6th Alibaba 84.8% Cascading ― RobustPeriod MP RobustTrend, RobustSTL 矩形波はシンボリッ ク表現 (SAX) に変換 7th Humboldt University 84.4% Simple Averaging ― FFT 5-NN DP ROCKET features 長い時系列は50kに リサンプリング
  • 11. 5位解法の概要 単純な2ステップの時系列異常検知アルゴリズム Step 1. 複数の非負の異常スコアを算出 Step 2. 最も突出したピークを持つ異常スコアを選択 Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 11 𝑡0 0 𝑇 𝑋 𝑡 Ƹ 𝑡 Step 1 異常区間 Step 2 異常スコア1 異常スコア2 異常スコア3 … 最も突出したピーク 𝑡𝑏 𝑡𝑒 Train Test
  • 12. Step 1. 複数の非負の異常スコアを算出 1-(1) スコア算出 (sliding window) • 様々な長さ・種類の異常に対応 • 32種類の窓幅(部分列長) • 11種類の異常スコア関数 1-(2) 平滑化 (moving average) • スコアのノイズを低減して 異常検知を安定化 • 区間 における 平均的な異常度合い Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 12 𝑠𝑡 = mean(𝑌𝑡−𝑤+1:𝑡+1) (𝑡 − 𝑤, 𝑡 + 𝑤) 𝑦𝑡 = 𝑓 𝑋𝑡:𝑡+𝑤 ≥ 0 (𝑡0 ≤ 𝑡 < 𝑇 − 𝑤) x1.1 x1.1 𝑤 ∈ {40, 44, 48, … , 767} 𝑋𝑡:𝑡+𝑤 = 𝑥𝑡, 𝑥𝑡+1, … , 𝑥𝑡+𝑤−1 𝑓 ∈ {𝑓1, 𝑓2, … , 𝑓11} 𝑡0 𝑡 𝑇 𝑋 𝑌 𝑆 𝑤 𝑦𝑡 = 𝑓 𝑋𝑡:𝑡+𝑤 𝑠𝑡 = mean(𝑌𝑡−𝑤+1:𝑡+1)
  • 13. Step 2. 最も突出したピークを持つ異常スコアを選択 2-(1) 各異常スコアに対してピークの突出度を算出 • 突出度=テスト期間における最大のピークと2番目のピークの比率 2-(2) 突出度が最大となる異常スコアを選択 • 最大のピーク位置を異常位置として検知 Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 13 𝑡1 = argmax 𝑡0≤𝑡<𝑇 𝑠𝑡 𝑡2 = argmax 𝑡0≤𝑡<𝑡1−𝑤 𝑡1+𝑤≤𝑡<𝑇 𝑠𝑡 𝑀 𝑤, 𝑓 = 𝑠𝑡1 𝑠𝑡2 w f1 f2 f3 … f11 40 2.4 8.3 1.0 … 4.2 44 3.7 5.9 1.2 … 2.3 48 4.3 10.5 2.1 … 1.3 … … … … … … 767 9.1 4.3 7.2 … 6.2 最も突出したピーク 𝑡0 𝑡1 𝑇 𝑆 𝑡2 𝑡 𝑠𝑡1 = 4.8 𝑠𝑡2 = 2.0 ⇒ 𝑀 𝑤, 𝑓 = 2.4 Ƹ 𝑡 = 𝑡1
  • 14. 異常スコア関数 水色で塗った3種類の異常スコア関数について説明 (*) 最終日 (6/1) の投稿コードに追加したが締切のタイムゾーンが不明瞭だったため投稿できず Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 14 No. Name Description 1 orig_p2p Peak-to-peak value of the original time series X (orig) 2 diff_p2p Peak-to-peak value of the 1st-order difference of X (diff) 3 acc_p2p Peak-to-peak value of the 2nd-order difference of X (acc) 4 orig_p2p_inv Inverse of peak-to-peak value of orig 5 diff_small Percentage of time when the absolute value of diff is small 6 acc_std Standard deviation of acc 7 acc_std_inv Inverse of standard deviation of acc 8 orig_mp_novelty Matrix Profile (AB-join) of orig 9 orig_mp_outlier Matrix Profile (self-join) of orig 10 orig_np_novelty Normalized Matrix Profile (AB-join) of orig 11 orig_np_outlier Normalized Matrix Profile (self-join) of orig 12 diff_large* Percentage of time when the absolute value of diff is large 13 diff_cross* Percentage of time when diff crosses zero
  • 15. 例1.Peak-to-peak value • 部分列の振幅 • Rolling max/minを用いて簡単に算出 • 3種類の時系列に対して算出 • 元の時系列 (orig) • 1階差分 (diff) • 2階差分 (acc) Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 15 𝑓 𝑋𝑡:𝑡+𝑤 = max(𝑋𝑡:𝑡+𝑤) − min(𝑋𝑡:𝑡+𝑤) 𝑡 𝑇 𝑤 𝑋 𝑡0 𝑌
  • 16. 例2.Matrix Profile • Matrix Profile (MP) [Yeh+16] • 最近傍部分列への距離(標準化された部分列同士のユークリッド距離) • Novelty: AB-join (A=test, B=train) • Outlier: self-join (train+test) • 効率的な計算アルゴリズムが存在 • STAMP, STOMP, GPU-STOMP, SCRIMP++, SCAMP [UCR] • STUMPY: pythonライブラリ [Law+19] Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 16 𝑓 𝑋𝑡:𝑡+𝑤 = 𝑑𝑡 = min 0≤𝑢<𝑡0 dist 𝑋𝑡:𝑡+𝑤, 𝑋𝑢:𝑢+𝑤 = min 0≤𝑢<𝑡0 ෨ 𝑋𝑡:𝑡+𝑤 − ෨ 𝑋𝑢:𝑢+𝑤 2 ෨ 𝑋𝑡:𝑡+𝑤 = 𝑋𝑡:𝑡+𝑤 − mean(𝑋𝑡:𝑡+𝑤) std(𝑋𝑡:𝑡+𝑤) 𝑡 𝑇 𝑤 𝑢 𝑑𝑡 𝑋 𝑡0 𝑌
  • 17. 例3.Normalized Matrix Profile • 場合によっては正常な時系列のMPが大きくなってしまう • 例えば,正常な時系列のノイズが大きい場合 • Normalized Matrix Profile (NMP) という新しい異常スコアを提案 • Local Outlier Factor (LOF) [Breunig+00] に着想を得た Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 17 𝑧𝑡 = min 0≤𝑣<𝑢− 𝑤 2 𝑢+ 𝑤 2≤𝑣<𝑡0 dist 𝑋𝑢:𝑢+𝑤, 𝑋𝑣:𝑣+𝑤 𝑓 𝑋𝑡:𝑡+𝑤 = 𝑑𝑡 𝑧𝑡 𝑋𝑡:𝑡+𝑤 𝑋𝑢:𝑢+𝑤 𝑋𝑣:𝑣+𝑤 𝑑𝑡 𝑧𝑡 𝑡 𝑇 𝑤 𝑢 𝑣 𝑧𝑡 𝑑𝑡 𝑋 𝑡0 𝑌
  • 18. 5位解法のまとめ • 単純な2ステップの時系列異常検知アルゴリズムを提案 1. 複数の非負の異常スコアを算出 2. 最も突出したピークを持つ異常スコアを選択 • ソロ参加で高い正解率 86.8% (=217/250) を達成 • Private LB 176チーム中 5位 • 1位 88.4% (=221/250) まであと4つ • さらなる利点 1. 再現性が高い(完全に決定論的) 2. スケーラブル(ボトルネックのMP計算はGPUや分散処理で高速化) 3. 人が理解できる(選択されたw, fから異常の長さ・種類を推察) • GitHubでPythonコードを公開 • https://github.com/intellygenta/KDDCup2021 Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 18
  • 19. 上位解法まとめ(再掲) Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 19 ※ 上位解法の発表を個人的にまとめたので間違っている可能性アリ Affiliation Accuracy Ensemble Machine Learning (Deep Learning) Period Estimation Similarity (Distance) Filtering / Smoothing Notes 1st DeepBlue Technology 88.4% Weighted Averaging Regression (GBDT, CNN) Auto Period Finder MP Fourier Transform 2階差分も使用 1階差分は不使用 2nd Huawei 87.6% Cascading + Selection ― FFT MP STL Decomposition 11種類のモデルを 既定の順序で適用 3rd A Hikvision Research Institute 87.2% Simple Averaging Deep SAD ― ― Smoothing 10種類の Data Augmentationで 異常サンプルを作成 3rd B Hitachi America R&D 87.2% Cascading + Voting ― ACF DTW LOESS 四分位範囲 (IQR) 外 を異常とみなす 5th AIST 86.8% Model Selection ― ― MP, NMP Moving Average 11種類のモデルを 並列して比較 6th Alibaba 84.8% Cascading ― RobustPeriod MP RobustTrend, RobustSTL 矩形波はシンボリッ ク表現 (SAX) に変換 7th Humboldt University 84.4% Simple Averaging ― FFT 5-NN DP ROCKET features 長い時系列は50kに リサンプリング
  • 20. Ensemble 様々な種類・長さの異常を検知するためにアンサンブルが有効 1. Model Selection (5th, 2nd) • 複数のモデルの中から指標※が最良のモデルを1つ選択 2. Averaging (1st, 3rd-A, 7th) • Simple Averaging:各モデルの出力(=異常度)の平均 • Weighted Averaging:各モデルの出力の重み※付き平均 3. Cascading (2nd, 3rd-B, 6th) • 既定の順序でモデルを適用していき基準※を超えたら検知して終了 Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 20 Source: 6位解法の説明動画 https://www.youtube.com/watch?v=aAtRv8fiXD4 Source: 2位解法の説明動画 https://www.youtube.com/watch?v=4PdlUcmwWu0 ※「Test期間に異常区間を1つだけ含む」という前提を利用
  • 21. Machine Learning (Deep Learning) 1st:Regression • 前後の部分列から時系列値を回帰(補間) • 残差を異常度として出力 • モデルはいくつか試してGBDTとCNNを採用 3rd-A:Deep SAD • Lukas Ruff, et al. “Deep Semi-Supervised Anomaly Detection” (ICLR2020) • 10種類のData augmentationで異常サンプルを作成 • 様々な部分列長に対してそれぞれモデルを学習してSimple Averaging Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 21 Source: 1位解法の説明動画 https://www.youtube.com/watch?v=1v64_tzJPTE Source: 3位解法の説明動画 https://www.youtube.com/watch?v=1v64_tzJPTE
  • 22. その他の特筆事項 Period Estimation • データセットに周期的な波形が多かったため5チームが周期を推定 • 周期推定の方法:FFT, ACF, 独自のアルゴリズム • 推定した周期を用いてsliding windowの窓幅などのパラメータを決定 Similarity (Distance) • 主催者が提案したMatrix Profile (MP) を4チームが利用 • 最近傍部分列との距離が大きい部分列を異常とみなす • 時間伸縮を考慮したDynamic Time Warping (DTW) を用いたチームも Filtering / Smoothing • 時系列の前処理 (Filtering) や異常度の後処理 (Smoothing) • STL Decompositionなど各チームが様々な処理を検討 Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 22
  • 23. おわりに コンペの改善点 • Public/Private LBのデータセットが同じ(overfittingを誘発) • コードレビューが人手(≠code competition) • アナウンス不足(締切のタイムゾーン,結果発表の遅れ) 自身の反省点 • 場当たり的に進めてしまい後半は時間が不足 • Period EstimationやRegressionは試そうとしたが手が回らず • 異常スコアの多様性を広げきれなかった • 新規アイデア (NMP) が上手くいって安心してしまった 感想 • データ分析コンペは初参加だが楽しくやれた • 上位解法を俯瞰して整理することによる学び • 時系列データマイニングの研究界隈がますます盛り上がることを期待 Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 23
  • 24. 参考文献 [Breunig+00] Markus M. Breunig, et al. "LOF: Identifying Density-Based Local Outliers.“ ACM SIGMOD 2000 (2000). [Yeh+16] Chin-Chia M. Yeh, et al. "Matrix Profile I: All Pairs Similarity Joins for Time Series: A Unifying View that Includes Motifs, Discords and Shapelets.“ IEEE ICDM 2016 (2016). [Law+19] Sean M. Law "STUMPY: A Powerful and Scalable Python Library for Time Series Data Mining.“ Journal of Open Source Software (2019). [Wu+20] Renjie Wu, and Eamonn J. Keogh "Current Time Series Anomaly Detection Benchmarks are Flawed and are Creating the Illusion of Progress.“ arXiv preprint arXiv:2009.13807 (2020). [UCR] The UCR Matrix Profile Page https://www.cs.ucr.edu/~eamonn/MatrixProfile.html Genta Yoshimura KDD Cup 2021: Multi-dataset Time Series Anomaly Detection 24