VUS(Volume Under the Surface):時系列異常検知を正しく測る評価指標

時系列の異常検知モデルを作ったとき、その性能をどう測るでしょうか。多くの論文は F1スコアを使い、しかも point-adjust(ポイント調整) という補正をかけます。ところがこの定番のやり方には、深刻な落とし穴があります。

実は、でたらめにスコアを出すだけのランダムな検出器でも、point-adjust F1なら 0.93 という「ほぼ満点」が出てしまうのです。これでは、本当に良い検出器とランダムな検出器の区別がつきません。

この問題に正面から取り組み、「時系列異常検知を正しく測る」ために提案されたのが VUS(Volume Under the Surface) です(Paparrizos et al., VLDB 2022)。本記事では、まず既存指標の何が問題なのかを実際に計算して見せ、そのうえでVUSがどう計算され、なぜ頑健なのかを、論文の図とコードで分かりやすく追います。

本記事の内容

  • なぜ point-adjust F1 は性能を水増しするのか(実測)
  • 閾値・ラグ・ノイズ・異常率への依存(論文の限界分析)
  • buffer連続ラベルRange-AUC(境界のゆらぎを許す)
  • buffer長を動かして体積を取る VUS-ROC / VUS-PR
  • 10データセット900系列を使ったロバスト性検証
  • 評価指標の一貫性とランキングの安定性

前提・関連記事

時系列異常検知の深掘りサーベイ
手法分類と評価の落とし穴の全体像。本記事はその評価編。
USAD:敵対的オートエンコーダによる多変量時系列の異常検知
point-adjust F1で評価された代表手法。VUSの視点で読み直すと面白い。
SARAD:空間的関連の崩壊で多変量異常を検知する
VUSを評価指標として採用した代表的な新世代手法。

まず問題を見る:point-adjust の水増し

point-adjust とは、「異常区間のうち1点でも検出できたら、その区間全体を正しく検出したことにする」という補正です。連続する異常を1点で代表させる実務的発想ですが、これが性能を大きく水増しします。

確かめてみましょう。長さ2000の系列に5つの異常区間を置き、(1) 異常付近でスコアが高い「良い検出器」と、(2) 完全に乱数の「ランダム検出器」を用意して、4つの指標で比べます。

import numpy as np
from sklearn.metrics import average_precision_score, precision_recall_curve
rng = np.random.default_rng(0); T = 2000
y = np.zeros(T, int)
for s in [200, 560, 900, 1300, 1650]: y[s:s+40] = 1          # 異常区間(異常率0.10)
good = 0.15*rng.standard_normal(T) + np.convolve(y, np.ones(15)/15, mode="same")*1.2
randsc = rng.random(T)                                        # 完全な乱数

def point_adjust(yy, pred):                                  # 区間内1点でも当たれば区間全体を正解に
    pred = pred.copy(); i = 0
    while i < len(yy):
        if yy[i] == 1:
            j = i
            while j < len(yy) and yy[j] == 1: j += 1
            if pred[i:j].any(): pred[i:j] = 1
            i = j
        else: i += 1
    return pred

def best_f1_pa(yy, s):                                       # 閾値を全探索した point-adjust 最良F1
    best = 0
    for th in np.quantile(s, np.linspace(0.5, 0.999, 60)):
        pa = point_adjust(yy, (s >= th).astype(int))
        tp = ((pa==1)&(yy==1)).sum(); fp = ((pa==1)&(yy==0)).sum(); fn = ((pa==0)&(yy==1)).sum()
        p = tp/(tp+fp+1e-9); r = tp/(tp+fn+1e-9); best = max(best, 2*p*r/(p+r+1e-9))
    return best

for name, s in [("良い検出器", good), ("ランダム検出器", randsc)]:
    print(name, "point-adjust F1 =", round(best_f1_pa(y, s), 3),
          " AUC-PR =", round(average_precision_score(y, s), 3))

結果はこうなります。

point-adjustの水増しとVUSの頑健さ

衝撃的なのはランダム検出器(赤)の point-adjust F1 が 0.93 になることです。良い検出器(1.00)とほとんど差がありません。理由は単純で、閾値を下げれば乱数でも各異常区間のどこかに必ず1点は当たり、point-adjustがその区間を「全部正解」にしてしまうからです。一方、AUC-PR(0.11)と VUS-PR(0.20)はランダムを正しく低く評価し、良い検出器(0.99 / 0.79)ときちんと区別します。「派手なF1」が当てにならないことが、はっきり分かります。

なぜAUC系は水増しされないのか。鍵は「閾値を選ばない」ことにあります。

閾値を選ばない:ROC と PR の復習

F1は、スコアにしきい値を当てて0/1を決めてから計算します。そのためしきい値の選び方で値が大きく変わります

F1の閾値依存性

上は良い検出器のF1を、しきい値を変えながら描いたものです。しきい値次第で乱高下します。これでは「ある1つのしきい値でのF1」を比べても不公平です。

そこで ROC曲線(FPR対TPR)や PR曲線(Recall対Precision)を使い、その曲線の下の面積(AUC) を指標にします。AUCはすべてのしきい値をまたいだ評価なので、しきい値を選ぶ必要がありません。これが AUC-PR がランダムを水増ししなかった理由です。

ただし、既存指標には閾値の問題以外にも深刻な欠陥があります。ラグ・ノイズ・異常率への感度です。

既存指標の3つの弱点:ラグ・ノイズ・異常率

論文は既存の13種類の評価指標を、4種類の摂動——(a)閾値、(b)ラグ、(c)ノイズ、(d)正常/異常の比率——に対してどれだけ頑健かを体系的に検証します。以下の論文図がその結果を端的に示しています。

既存指標4つの弱点:閾値/ラグ/ノイズ/比率への感度(論文Fig.2)

出典: J. Paparrizos et al., “Volume Under the Surface”, VLDB 2022, Fig.2

各行が1種類の摂動を示しています。列(a.1)/(a.3)は摂動なし/あり、列(a.5)/(a.6)は精度値と差。以下、3つの弱点を読み取ります。

ラグ感度(Lag influence, 行b)。異常スコアの山が真の異常区間から少しずれる($-0.25 \times \ell$ のラグ)だけで、Precision、Recall、F スコアは大きく変動します。一方 AUC-ROC と AUC-PR は比較的安定しています。しかし、行(b.5)と(b.6)を見ると AUC-PR でさえ差(約0.1〜0.2)が生じており、ラグへの耐性は不完全です。Range-AUC/VUSだけがラグに最も頑健で、buffer領域が境界のズレを吸収するからです。

ノイズ感度(Noise influence, 行c)。スコアに10%のノイズを加えると、Precision系の指標が大きく揺れます。AUC-ROCはほぼ影響を受けませんが、PR系(AUC-PR / Precision / Rprecision)はノイズに弱い。これはノイズがFalse Positiveを増やし、Precisionを下げるためです。

異常率感度(Normal/Abnormal ratio, 行d)。正常/異常の比率が 0.2 と 0.05 の場合を比べると、点ベースの指標(Recall、Precision@k)はほぼ全部が大きく変動します。クラス不均衡が激しいデータセットほど、このバイアスが問題になります。

この分析から、点単位の指標はいずれも何らかの摂動に弱いことが分かります。閾値非依存の AUC でさえラグ・ノイズへの耐性に課題が残ります。この問題を解決するのが Range-AUC と VUS です。

ただし、時系列の異常検知ではもうひとつ厄介な点があります。異常の境界はあいまいだということです。

buffer連続ラベル:境界のゆらぎを許す

人間がつけた異常ラベルの境界は、数点ずれていることがよくあります(連続的な信号を離散的な0/1に写すので避けられない)。境界の1点手前で検出しても「外れ」とするのは厳しすぎます。

VUSの土台 Range-AUC は、この問題を buffer領域 で解きます。異常区間の境界の周りに緩衝地帯を設け、そこのラベルを0/1でなく連続的に減衰させるのです。論文の図がこれを端的に示しています。

2値ラベルとbuffer連続ラベル(論文Fig.4)

出典: J. Paparrizos, P. Boniol, T. Palpanas, R. Tsay, A. Elmore, M. Franklin “Volume Under the Surface / VUS: Effective and Efficient Accuracy Measures for Time-Series Anomaly Detection”, VLDB 2022 / VLDB Journal (arXiv:2502.13318), Fig.4.”

具体的には、異常区間 $[s, e)$ と buffer長 $\ell$ に対して、連続ラベルを次のように定義します(論文 式13)。

$$ \begin{equation} \mathrm{label}^{\ell}_i = \begin{cases} \bigl(1 – \dfrac{|s-i|}{\ell}\bigr)^{1/2}, & s-\dfrac{\ell}{2} \le i < s \\[6pt] 1, & s \le i < e \\[6pt] \bigl(1 - \dfrac{|e-i|}{\ell}\bigr)^{1/2}, & e \le i < e+\dfrac{\ell}{2} \\[6pt] 0, & i < s \;\text{かつ}\; e \le i \end{cases} \end{equation} $$

ここで $s, e \in [0, |\mathrm{label}|]$ はそれぞれ異常区間の開始インデックスと終了インデックス($[s, e)$ が異常)、$\ell$ は buffer の総幅です。各 buffer の片側幅は $\ell/2$ です。

注意点が2つあります。第一に、この $\mathrm{label}^{\ell}_i$ は ground truth ラベルの変換であり、モデルの予測 $\mathrm{pred}_i$ とは独立に決まります($\mathrm{pred}$ への依存は式14で $\mathrm{TP}_\ell$ を計算するときに初めて現れます)。第二に、隣接する異常区間の buffer 領域が重なる場合は、それぞれの減衰曲線を重ね合わせた最大値を取ります。

buffer連続ラベルの概念

異常区間の内側はラベル $1$、その外側の buffer(片側幅 $\ell/2$)では境界からの距離に応じて $1 \to 0$ へ平方根曲線で滑らかに減衰します。これにより、境界付近の高スコアに部分点が与えられ、ラベルの数点のズレに頑健になります。buffer幅 $\ell$ の既定値は時系列の周期 $w$ の半分(または異常の平均長)です。

論文自身が、実際の異常スコアに対してこの連続ラベルがどう作られるかを描いています。

異常スコア(a)とbuffer領域つき連続ラベル(b):Static/Dynamic Sectionの区別(拡張版Fig.6)

出典: J. Paparrizos et al., “Volume Under the Surface / VUS”, VLDB Journal 2025 (arXiv:2502.13318), Fig.6.(VLDB Journal 拡張版の図番号。本記事後半で引用する VLDB 2022 会議版とは図番号体系が異なる点に注意)

上段(a)が生の異常スコア、下段(b)が元の2値ラベル(青破線)と buffer 込みの修正ラベル(橙実線, Modified Labels) の対比です。修正ラベルは異常区間の手前と直後で台形状に滑らかに立ち上がり/立ち下がっており、まさに式13の平方根減衰が効いています。ここで重要なのが図中の Static Section / Dynamic Section の区別です。異常区間から十分離れた灰色の Static Section では、ラベルが 0 のまま buffer の影響を受けないため、TP/FP/TN/FN は buffer 長 $\ell$ を変えても一切変化しません。値が動くのは異常境界周辺の Dynamic Section だけ——この局所性が、後で VUS の計算量を下げる伏線にもなります。

range版のTP/FP/TN/FNの計算

この連続ラベルを使うと、各時刻 $i$ での TP/FP/TN/FN も連続値になります。論文 式14 では、ベクトル内積の形で全時刻の総和を一括表記しています。

$$ \begin{equation} \mathrm{TP}_\ell = \mathrm{label}_\ell^\top \cdot \mathrm{pred}, \qquad \mathrm{FN}_\ell = \mathrm{label}_\ell^\top \cdot (\mathbf{I} – \mathrm{pred}) \end{equation} $$

$$ \begin{equation} \mathrm{TN}_\ell = (\mathbf{I} – \mathrm{label}_\ell)^\top \cdot (\mathbf{I} – \mathrm{pred}), \qquad \mathrm{FP}_\ell = (\mathbf{I} – \mathrm{label}_\ell)^\top \cdot \mathrm{pred} \end{equation} $$

ここで $\mathbf{I} = [1, 1, \ldots, 1]^\top$ は全1ベクトル、$\mathrm{pred} \in \{0,1\}^n$ は閾値で二値化した予測です。$\mathrm{label}_\ell \in [0,1]^n$ が連続値なので TP/FN/TN/FP もすべて実数になります。

正の点数 $P_\ell$ と負の点数 $N_\ell$ の定義(論文 式15)

Range-AUC の TPR/FPR を計算するには分母の「陽性の総数 $P_\ell$」と「陰性の総数 $N_\ell$」が必要です。buffer 領域を広げると $\mathrm{label}_\ell$ の合計が純粋に増えすぎるため、論文は 2値ラベルと連続ラベルの平均を取って抑制しています(論文 式15):

$$ \begin{equation} P_\ell = \frac{(\mathrm{label} + \mathrm{label}_\ell)^\top \cdot \mathbf{I}}{2}, \qquad N_\ell = |\mathrm{label}_\ell| – P_\ell \end{equation} $$

ここで $\mathrm{label} \in \{0,1\}^n$ は元の 2値ラベル、$|\mathrm{label}_\ell| = n$ は系列長です。直感的には、$P_\ell$ は「元の異常点数と buffer 込み連続ラベルの合計の算術平均」であり、buffer が小さいとき(異常区間が長い)は 2値ラベルの合計に近く、buffer が大きいとき(異常区間が短い)でも過剰に膨らまないよう調整されています。

これにより、閾値を変えながら range 版の TPR・FPR・Precision を計算し、ROC/PR の面積を取ったものが Range-AUC-ROC / Range-AUC-PR です。

「一部でも捉えれば加点」:存在報酬と Range 版の 3 指標(論文 式16)

range 版の TPR・FPR・Precision は次のように定義されます(論文 式16):

$$ \begin{equation} \mathrm{TPR}_\ell = \mathrm{Recall}_\ell = \frac{\mathrm{TP}_\ell}{P_\ell} \cdot \frac{1}{|R|}\sum_{R_i \in R} \mathrm{ExistenceR}(R_i, P) \end{equation} $$

$$ \begin{equation} \mathrm{FPR}_\ell = \frac{\mathrm{FP}_\ell}{N_\ell}, \qquad \mathrm{Precision}_\ell = \frac{\mathrm{TP}_\ell}{\mathrm{TP}_\ell + \mathrm{FP}_\ell} \end{equation} $$

ここで $R$ は真の異常区間の集合、$P$ は検出区間の集合です。$\mathrm{ExistenceR}(R_i, P)$ は「異常区間 $R_i$ と検出区間の共通点数の合計が $\ge 1$ なら 1、でなければ 0」という報酬です:

$$ \mathrm{ExistenceR}(R_i, P) = \begin{cases} 1, & \sum_{j=1}^{N_p} |R_i \cap P_j| \ge 1 \\ 0, & \text{それ以外} \end{cases} $$

$\mathrm{TPR}_\ell$ に存在報酬が入る理由は、時系列の異常検知では長い異常区間の一部だけでも捉えられれば実務的に大きな価値があるからです(オペレーターはそこから調査を始められる)。点単位の精密な一致(range detection = $\mathrm{TP}_\ell / P_\ell$ の部分)と、区間を見逃さない大局的な検出(existence detection = ExistenceR の部分)の両方を、ひとつの Recall に織り込んでいます。

一方、$\mathrm{Precision}_\ell$ には存在報酬を含めません。また、$\mathrm{FPR}_\ell$ の分母は $N_\ell$(式15の buffer 補正済みの陰性数)です。この非対称な設計のため、range 版では ROC 曲線と PR 曲線が点ベース版のような一対一対応を持たなくなります。

これらの 3 指標を閾値 $\mathrm{Th}$ を変えながら計算し、ROC 曲線・PR 曲線の面積(台形則)を取ったものが Range-AUC-ROC / Range-AUC-PR です。

論文の比較図を見れば、既存指標(閾値ベース・AUCベース)と提案指標(Range-AUC・VUS)の構造的な違いが一目でわかります。

既存指標(閾値/AUC)と提案指標(Range-AUC/VUS surface)の概念比較(論文Fig.1)

出典: J. Paparrizos et al., “Volume Under the Surface”, VLDB 2022, Fig.1 (提案指標部分)

左の Range-AUC は、buffer領域(橙色のグラデーション)を持つ連続ラベルのもとで閾値を掃引して曲線面積を取ります。右の VUS は、さらに buffer長 $\ell$ を動かして ROC/PR の2次元曲面を作り、その体積(Volume Under the Surface)を取ります。このように、VUS は閾値と buffer長の「2つの軸」をまたいだ二重積分であることが構造から明快に読み取れます。

ところが、まだ1つパラメータが残っています——buffer長 $\ell$ です。

VUS:buffer長を動かして「体積」を取る

buffer長 $\ell$ をどう決めるか。$\ell$ を変えると Range-AUC の値も変わるので、$\ell$ の選び方で結果が左右されてしまいます。

VUSの発想はシンプルです。$\ell$ を 0 から最大値まで動かして、それぞれの Range-AUC を計算し、その平均(面積)を取る。こうすれば、buffer長というパラメータも消えます。

$\ell$ を動かすと連続ラベルそのものがどう変形していくかを、論文は1枚の3次元図にまとめています。

buffer長 L を動かしたときの連続ラベルの変化(拡張版Fig.7)

出典: J. Paparrizos et al., “Volume Under the Surface / VUS”, VLDB Journal 2025 (arXiv:2502.13318), Fig.7.

奥行き方向の軸が buffer長 $L$ です。手前($L$ が小さい)では修正ラベル(橙)が元の矩形ラベル(青)にほぼ一致し、奥($L$ が大きい)に進むほど境界周りの台形がなだらかに広がっていきます。VUS はこの「$L$ を 0 から最大まで連続的にずらしながら計算した Range-AUC の束」を1つの軸として束ね、その平均を取る操作にほかなりません。図の上段が示すとおり、$L$ を変えても影響を受けるのは Dynamic Section(緑)の境界付近だけで、Static Section(灰)の評価は不変——だからこそ「$L$ を全部試す」ことが現実的なコストで済みます。横軸に $\ell$、Range-AUC を縦軸に取ると曲線になり、さらに ROC/PR の軸を加えると 3次元の曲面(surface) になります。その曲面の下の体積(Volume Under the Surface) が VUS です。

概念的な積分で表すと次のようになります:

$$ \begin{equation} \mathrm{VUS\text{-}ROC} = \frac{1}{\ell_{\max}} \int_0^{\ell_{\max}} \mathrm{Range\text{-}AUC\text{-}ROC}(\ell) \, d\ell \end{equation} $$

$$ \begin{equation} \mathrm{VUS\text{-}PR} = \frac{1}{\ell_{\max}} \int_0^{\ell_{\max}} \mathrm{Range\text{-}AUC\text{-}PR}(\ell) \, d\ell \end{equation} $$

離散実装式(論文 式17 / 式18)

実装では閾値 $\mathrm{Th}$ と buffer 長 $\ell$ の両方を離散グリッドで動かし、二重台形則で数値積分します。buffer 長のグリッドを $\ell_0 = 0 < \ell_1 < \cdots < \ell_L = \ell_{\max}$、閾値のグリッドを $\mathrm{Th}_0 = 0 < \mathrm{Th}_1 < \cdots < \mathrm{Th}_N = 1$ とすると(論文 式17):

$$ \begin{equation} \mathrm{VUS\text{-}ROC} = \frac{1}{4} \sum_{w=1}^{L} \sum_{k=1}^{N} \Delta(k,w) \cdot \Delta_w \end{equation} $$

$$ \Delta(k,w) = \Delta^k_{\mathrm{TPR}_{\ell_w}} \cdot \Delta^k_{\mathrm{FPR}_{\ell_w}} + \Delta^k_{\mathrm{TPR}_{\ell_{w-1}}} \cdot \Delta^k_{\mathrm{FPR}_{\ell_{w-1}}} $$

$$ \Delta^k_{\mathrm{FPR}_{\ell_w}} = \mathrm{FPR}_{\ell_w}(\mathrm{Th}_k) – \mathrm{FPR}_{\ell_w}(\mathrm{Th}_{k-1}) $$

$$ \Delta^k_{\mathrm{TPR}_{\ell_w}} = \mathrm{TPR}_{\ell_w}(\mathrm{Th}_{k-1}) + \mathrm{TPR}_{\ell_w}(\mathrm{Th}_k) $$

$$ \Delta_w = |\ell_w – \ell_{w-1}| $$

ここで係数 $\frac{1}{4}$ は、閾値方向の台形則に $\frac{1}{2}$、buffer 長方向の台形則に $\frac{1}{2}$ が入り、$\frac{1}{2} \times \frac{1}{2} = \frac{1}{4}$ になることから来ています。$\Delta(k,w)$ は隣接する 2 つの buffer 長 $\ell_w, \ell_{w-1}$ それぞれで計算した ROC 台形の高さ(TPR の和×FPR 差)を合計したもので、buffer 長方向の台形則に相当します。

VUS-PR も同様に(論文 式18):

$$ \begin{equation} \mathrm{VUS\text{-}PR} = \frac{1}{4} \sum_{w=1}^{L} \sum_{k=1}^{N} \Delta(k,w) \cdot \Delta_w \end{equation} $$

$$ \Delta(k,w) = \Delta^k_{\mathrm{Precision}_{\ell_w}} \cdot \Delta^k_{\mathrm{Recall}_{\ell_w}} + \Delta^k_{\mathrm{Precision}_{\ell_{w-1}}} \cdot \Delta^k_{\mathrm{Recall}_{\ell_{w-1}}} $$

$$ \Delta^k_{\mathrm{Recall}_{\ell_w}} = \mathrm{Recall}_{\ell_w}(\mathrm{Th}_k) – \mathrm{Recall}_{\ell_w}(\mathrm{Th}_{k-1}) $$

$$ \Delta^k_{\mathrm{Precision}_{\ell_w}} = \mathrm{Precision}_{\ell_w}(\mathrm{Th}_{k-1}) + \mathrm{Precision}_{\ell_w}(\mathrm{Th}_k) $$

計算量は $O(N \times L)$($N$:閾値ステップ数 = 系列長、$L$:buffer 長ステップ数)です。これは AUC の $O(N)$ より重いものの、1000点程度の系列なら数秒で計算できます。

なお、素朴に「$\ell$ を変えるたびに連続ラベルを作り直して全時刻で TP/FP/TN/FN を計算し直す」と $L$ 倍のコストがそのまま乗りますが、ここで先ほどの Static / Dynamic Section の分離(Fig.6・Fig.7)が効きます。$\ell$ を増やしても値が動くのは異常境界周辺の Dynamic Section だけなので、拡張版(arXiv:2502.13318)はそこだけを差分更新する $\mathrm{VUS}_{\mathrm{opt}}$ / $\mathrm{VUS}_{\mathrm{mem\text{-}opt}}$ を導入し、$L$ への依存を Static 領域を含む全長 $N$ から異常区間の総長 $\ell_a$ オーダーへと縮めています。直感的には「動く部分だけ計算する」最適化で、長い系列でも実用的な速度を保ちます。これが、VUS が「$\ell$ を全部試す」という一見高価な操作を現実的なコストで実現できる理由です。

Range-AUC vs buffer長とVUS=面積

上図は、buffer長 $\ell$ を動かしたときの Range-AUC-PR です。この曲線の下の面積(=平均)が VUS-PR。良い検出器(緑)は大きく、ランダム検出器(赤)は小さいまま。buffer長を1つに決め打ちせず全体をまたぐので、$\ell$ に依存しない単一の指標になります。VUS-ROC も同様に、ROC曲面の体積として定義されます。

まとめると、VUSは2つの「動かす軸」を持ちます。

  • しきい値をまたぐ(→ 閾値非依存、AUCの性質)
  • buffer長 $\ell$ をまたぐ(→ bufferパラメータ非依存)

この二重の積分により、VUS-ROC / VUS-PR は 閾値非依存・パラメータフリーで、ラベルのズレ・ノイズ・異常の個数比にも頑健な、信頼できる指標になります。

評価設定:10データセット・900系列

VUSの有効性を検証するために、著者らは TSB-UAD ベンチマーク(Paparrizos et al.が公開するベンチマーク)から10のデータセット・約900の時系列を使い、13の評価指標と9つの AD 手法を比較しました。

評価に使ったデータセットの概要(論文Table 2)

出典: J. Paparrizos et al., “Volume Under the Surface”, VLDB 2022, Table 2

Table 2 のデータセットを見ると、平均系列長は数百〜数万点、異常点の密度(Abnormal Density)は 0.56% から 12.39% まで幅広い分布があります。NASA-MSL(55次元・13%異常)や NASA-SMAP(25次元・13%異常)は宇宙機テレメトリ、Dodgers(30k点・11%)は交通量センサー、ECG(850k点・0.56%)は心電図です。このように異種のドメインと異常率をカバーすることで、指標の汎化性を評価しています。比較した AD 手法は、統計的手法(Normal)から機械学習手法(POLY, Forest, MatrixProfile, LOF, CNN, LSTM)まで多岐にわたります。

評価結果:なぜ VUS が AUC より優れるか

論文 Fig.5 は、2つの実例(MBA(805): ECG データ、MBA(806): ラグを含む例)に対して、5種類の評価指標(AUC-ROC, AUC-PR, Range-AUC-ROC, Range-AUC-PR, VUS-ROC, VUS-PR)と2手法(AE と OCSVM)を可視化した図です。

2つの実例での評価指標比較:曲面の形の違い(論文Fig.5)

出典: J. Paparrizos et al., “Volume Under the Surface”, VLDB 2022, Fig.5

上半分(MBA(805), ノイズ+ラグ)では、各サブ図の意味を追うと:

  • (b) AUC-ROC(青)/ R-AUC-ROC(橙): 2次元のROC曲線。AUCは単一の曲線だが、Range-AUCは buffer の連続ラベルを使っているため曲線の形が変わります
  • (c) AUC-PR(青)/ R-AUC-PR(橙): PR空間での同様の比較
  • (d) VUS-ROC: buffer長を変えながら ROC 曲線を積み上げた3次元曲面。面が広いほど VUS が高い
  • (e) VUS-PR: 同様に PR 空間での3次元曲面

(f) の精度比較バーグラフに注目すると、ラグが入った MBA(806)(下半分)では AE と LOF の相対的な優位が既存指標(AUC-ROC/PR)と Range-AUC/VUS で逆転する場面があります。これは AUC-PR がラグに対して脆い(図2の行bで確認した弱点)一方、VUSがラグの影響を buffer 領域で吸収するためです。どの指標で測るかによって「どの手法が優れているか」という結論が変わってしまう——これが評価指標の選択を重要にする本質的な理由です。

ロバスト性:ランダムラグ・ノイズへの耐性

ロバスト性実験では、異常スコアに $\ell \in [-0.25 \times f, 0.25 \times f]$($f$: 異常区間長)のランダムラグを10回注入し、その精度値の標準偏差(ブレ幅)を比べています。

13指標のロバスト性比較:ラグ注入での標準偏差(論文Fig.6)

出典: J. Paparrizos et al., “Volume Under the Surface”, VLDB 2022, Fig.6

各サブ図は1つの AD 手法(NormA, POLY, Forest, MatrixProfile, LOF, LSTM)に対する13指標の標準偏差(縦軸=精度値のブレ)を示しています。グラフを読むと:

  • Recall、Precision、F スコア系:箱ひげ図のひげが長く、ラグへの感度が高い(中央値から大きくブレる)
  • AUC-ROC、AUC-PR:ほぼどの手法でも標準偏差が小さく、ラグへの耐性は高い
  • R-AUC-ROC、R-AUC-PR、VUS-ROC、VUS-PR:さらに標準偏差が小さく、特に VUS-PR が最も安定

大局図(Overall Averaged standard deviation, 図の下段)を見ると、全手法・全データセットを平均したときに VUS-PR の標準偏差が最小であることが確認できます。ノイズ感度・異常率感度についても同様の傾向があります。

Critical Diagram:統計的な優位性の確認

ラグ・ノイズ・比率の3つの摂動に対して、Wilcoxon 符号付き順位検定($\alpha = 0.1$)を用いた Critical Difference Diagram が論文 Fig.8 で示されています。

Wilcoxon検定によるCritical Difference Diagram(論文Fig.8)

出典: J. Paparrizos et al., “Volume Under the Surface”, VLDB 2022, Fig.8

Critical Difference Diagram は、指標の「平均順位」を横軸に並べ、統計的に有意な差がない指標をバーで繋いだ図です。読み方は:

  • 左(小さい数字)ほど「ロバスト性が高い(ブレが少ない)」
  • 同じバーで繋がれた指標間は「有意差なし」

3つのサブ図(ラグ・ノイズ・比率)で共通して、VUS-ROC と VUS-PR が左端(最高ロバスト性) にあり、AUC-PR や Recall より統計的に有意に優れていることが読み取れます。特にラグ感度(a.1)では、VUS-PR が独立したグループとして最上位に位置し、他のほぼ全指標と有意差があります。ノイズ感度(a.2)では R-AUC-ROC、VUS-ROC、VUS-PR が同グループで最上位。比率感度(a.3)でも VUS-ROC/VUS-PR が上位グループをリードします。

この結果は、VUSが「ラグ・ノイズ・クラス不均衡」という現実的な3つの課題すべてに対して、統計的に有意に頑健であることを示しています。

指標間の比較:何が違うのか

ここで各指標の特性を整理しておきます。

指標 閾値非依存 点ベース 連続系列 ラベルズレ許容 パラメータフリー
F1(最良閾値) × × ×
point-adjust F1 × ×
AUC-ROC / AUC-PR × ×
Range-AUC-ROC/PR × ○(buffer固定) ×
VUS-ROC / VUS-PR ×

「点ベース」は各時点を独立に評価、「連続系列」は部分系列(サブシーケンス)の検出を正しく扱えるか、「ラベルズレ許容」は境界の数点のズレに部分点を与えられるかを示します。VUSは4条件をすべて満たす唯一の指標群です。

論文の比較表でも、VUSは「異常数への非依存・閾値非依存・連続系列への適合・パラメータフリー」の4条件をすべて満たす唯一の指標群とされています。

まとめ

VUS(Volume Under the Surface)を、できるだけ分かりやすく追いました。

  • 問題:point-adjust F1 はランダム検出器でも 0.93 を出すほど水増しする。既存指標はラグ・ノイズ・異常率にも脆い(Fig.2)
  • Range-AUC:異常境界に buffer(連続ラベル 式13)を設け、$P_\ell$・$N_\ell$ を補正(式15)し、TPR/FPR/Precision を range 版に拡張(式16)。境界ズレに頑健な AUC を取る(閾値非依存)
  • VUS:buffer長 $\ell$ を 0→最大まで動かし、ROC / PR の 2 次元曲面の体積を二重台形則(式17/18)で計算する(パラメータフリー)
  • 結果:VUS-PR は 10データセット・900系列でラグ・ノイズ・比率の3摂動に対し統計的に最高のロバスト性(Critical Diagram で最上位)
  • 採用状況:TSB-AD ベンチマークの推奨指標。SARAD(NeurIPS2024)など最新手法が VUS-PR を採用

新しい異常検知手法を読むときは、F1(とくに point-adjust)の数字だけを鵜呑みにせず、どの指標で測ったかを確認しましょう。実装は github.com/thedatumorg/VUS で公開され、ベンチマーク TSB-AD でも VUS-PR が推奨指標になっています。

時系列異常検知の深掘りサーベイ
手法分類と評価の落とし穴の全体像。
Anomaly Transformer:関連乖離のアーキテクチャ
point-adjustで評価された代表手法。VUSの視点で読み直すと面白い。
SARAD:空間的関連の崩壊で多変量異常を検知する
VUS-ROC/VUS-PRを評価指標として採用した最新手法。
point-adjustとAffiliation指標:異常検知評価のトレードオフ
point-adjustの水増し問題とAffiliation指標の位置づけを対比して整理。
異常検知の評価ハブ
異常検知の評価指標に関する関連記事の入口。

参考文献

  • J. Paparrizos, P. Boniol, T. Palpanas, R. S. Tsay, A. Elmore, M. J. Franklin. “Volume Under the Surface: A New Accuracy Evaluation Measure for Time-Series Anomaly Detection.” PVLDB 15(11), 2022. 拡張版: VLDB Journal, 2025 (arXiv:2502.13318). コード: github.com/thedatumorg/VUS
  • N. Tatbul ら. “Precision and Recall for Time Series (range-based).” NeurIPS 2018
  • S. Kim ら. “Towards a Rigorous Evaluation of Time-Series Anomaly Detection.” AAAI 2022(point-adjust批判)
  • J. Paparrizos ら. “TSB-UAD: An End-to-End Benchmark Suite for Univariate Time-Series Anomaly Detection.” PVLDB 15(8), 2022