事実1:どのデータにも最適な手法はない
ドイツのハッソ・プラットナー研究所のSchmidl、Wenig、Papenbrockは、71の時系列異常検知アルゴリズムを967の時系列で比較した評価を、データベース分野の国際会議論文誌PVLDB(2022年)に発表しました。この評価の最初の結論は、どのデータにも最適な手法はなかった、というものです。
同じ評価では、教師あり手法が教師なし・半教師あり手法を上回ることもありませんでした。異常のラベルを付けて学習させれば精度が上がる、という直感は、この評価の範囲では成り立っていません。
製造業での意味は明確です。他社の事例や論文で精度が高かった手法が、自社の設備データでも同じように効くとは限りません。手法は自社のデータで比べて選ぶ必要があります。
事実2:距離ベースが頑健で、再構成型の多くはランダムに近い
同評価では、KNN(k近傍)やSubsequence LOF(部分系列の局所外れ値係数)などの距離ベースの手法が頑健で有効でした。一方、オートエンコーダなどの再構成ベースの手法は、多くがAUC-ROC 0.5付近にとどまりました。AUC-ROCの0.5は、ランダムに判定したのと同じ水準です。
また、カオス的な(規則性が乏しい)系列は、ほとんどの手法で難しかったと報告されています。周期的な系列は非周期的な系列より、単変量は多変量より検出しやすいという結果です。
事実3:代表的なベンチマーク自体に欠陥がある
カリフォルニア大学リバーサイド校のWuとKeoghは、2020年の論文(arXiv 2009.13807)で、Yahoo、Numenta、NASAなどの代表的な時系列異常検知ベンチマークの多くが、4つの欠陥のいずれかを抱えていると指摘しました。そのため、近年の手法の「進歩」は過大評価されている可能性があるとし、代わりにUCR Time Series Anomaly Archiveを提案しています。
指摘された欠陥の性質を製造業の言葉で言い直すと、次のようになります(論文の主張の要約で、詳細は原文を参照してください)。
- 異常が簡単すぎて、1行程度の単純な判定でも見つけられる
- 異常の密度が高すぎて、現実の「まれな異常」の状況と違う
- 正解ラベルが誤っている、あるいは曖昧
- 異常が系列の終わりの方に偏っていて、位置だけで当たりやすい
こうしたベンチマークで高いスコアを出した手法は、実際の工場データで同じ性能を出す保証がありません。
評価方法にも落とし穴がある:点調整の問題
ベンチマークだけでなく、評価の計算方法にも注意が必要です。時系列異常検知の論文では、「点調整(point-adjust)」という評価方法がよく使われてきました。これは、異常区間の中で1点でも検知できれば、その区間全体を検知できたとみなす方法です。
点調整を使うと、ランダムに近い判定でも長い異常区間にたまたま1点当たれば高いスコアになり、性能が過大に見えやすくなります。論文やベンダー資料の精度を見るときは、どの評価方法で計算したかを確認してください。
製造の現場で意味のある評価は、点単位でも点調整でもなく、イベント単位です。
- 異常(故障や品質異常)が起きる何分前に検知できたか
- 1日あたり何件の誤報が出たか
- 検知できなかった異常は何件あったか
詳しくは異常検知の誤報を減らすで扱っています。
自社のPoCでの評価の組み立て方
3つの事実を踏まえると、自社で異常検知の手法を評価するときは、次のように組み立てるのが妥当です。
ベンダーの提案を比べるときも、同じ評価データと同じ評価方法で結果を出してもらうよう依頼してください。各社が自社の得意なデータと評価方法で出した数字は比べられません。PoCの評価全般はPoCの評価指標と合格ラインの決め方を参照してください。時系列異常検知の方式の全体像は時系列データの異常検知AI入門で整理しています。
よくある質問
UCR Anomaly Archiveを自社の手法評価に使えますか
手法の一般的な性能を確認する目的には使えます。ただし製造データ特有の運転モードの切替や多変量の関係は含まれていないため、最終的な判断は自社データで行ってください。
AUC-ROCは現場の評価に使えますか
AUC-ROCは閾値に依存しない指標で、手法の比較には便利です。しかし運用では1つの閾値を決めて使うため、その閾値での見逃し件数と誤報件数で評価する必要があります。AUC-ROCが高くても、現場が受け入れられる誤報件数に収まる閾値で見逃しが多ければ使えません。
ベンダーの精度の数字はどう確認すればよいですか
評価に使ったデータ(公開ベンチマークか、実際の工場データか)、評価方法(点単位、点調整、イベント単位)、閾値の決め方を質問してください。答えられない場合、その数字は自社の判断材料になりません。
