1章:異常検知・変化検知の基本的な考え方

はじめに

この記事は,異常検知と変化検知を学ぶアドベントカレンダー2018 – Takala’s Memory1日目の記事です.MLPシリーズの 「異常検知と変化検知」 の1章まとめとなります.

素人がoutput駆動の勉強用に書いています.不備や勘違いもあるかもしれません.差し支えなければ間違え等については,ご指摘・ご教授頂けると助かります.よろしくお願いします.

また,本記事において使用している図表はすべて,上記参考書を基にして作成したものです.

コンテンツ

  • 異常値とは何か
  • 異常検知モデルの性能をどう評価するか

異常を捉える

異常とは?

異常検知・変化検知の最も根源的な欲求は,「なんか変」を人間(職人)の間に頼らずに見つけ出すことである.しかしながら,この「なにか変」を機械に検出させるには様々な困難を伴う.例えば以下に示す図で赤点・赤線は,人の目には明らかに「変な点・箇所」であるが,これを判定するモデルには種々の工夫が必要となる.

以降では,この「なにか変」を判定するモデルをどう組み立てていくかを説明していく.

また,各図において,赤点のような異常値を検出する問題を外れ値検出,赤線のようななんらかのパターンの変化点(箇所)を見つける問題を変化点検知などと呼ぶ.

異常や変化の度合を確率分布で表す

「なにか変」を表現するためには,確率分布を用いるのが一般的である..具体的な方法を見ていく.


ラベル付きデータの場合

まず,$N$個の標本を含む訓練データ

$$
\mathcal{D} = \left\{ ( x^{(i)}, y^{(i)}) | i=1,2,…,N \right\}
$$

を考える.ここで,$x^{(i)}$は各標本の観測値(*1),$y^{(i)}$はそれに対応するラベルである.
ラベルは正常値ならば$y^{(i)}=0$となり,異常値ならば$1$をとる.

さてここで,「え?ラベル?それ答えじゃん?」と思う方もいるだろう.

そうです.答え付き(ラベル付き)です.そのため,ここで扱うの正常時・異常時の確率分布が既知の場合の異常検知手法である.未知の場合については後述する.

少しわかりにくいが,「$\mathcal{D}$を知っている状態で,全く新しい観測値$x’$は異常か?」という問題を考えていると理解できる.

さて,このような問題は,正常時の確率分布異常時の確率分布を利用して,ある観測値がどちららの分布から取り出された(ぽい)かを議論することになる.ここで,異常時の確率分布からの実現値ぽさを異常度といい,$a(x’)$と表現するとしよう.

この$a(x’)$の定義はいろいろ考えられるが,条件付き確率分布を利用した以下の定義が最も有名である.

$$
a(x’) = \ln \frac{p(x’|y=1,\mathcal{D})}{p(x’|y=0,\mathcal{D})}
$$

つまり,「正常時の確率分布のもとで$x’$が実現する確率」と「異常時の確率分布のもとで$x’$が実現する確率」の比の対数をとっている(*2).

イメージ的にはこんな感じ.

ここで,上記定義式による異常度$a(x’)$がある閾値を超えたら異常と判定する方法をネイマン・ピアソン決定則と呼ぶ.


ラベルなしデータの場合

次にラベルなしの場合を考えていこう.

今度はラベルなしなので,$N$個の標本データは以下のように表される.

$$
\mathcal{D} = \left\{ x^{(i)}| i=1,2,…,N \right\}
$$

正常か異常かわからないデータが$N$個ある状況である.このとき重要な前提として,$\mathcal{D}$ の中には異常標本が含まれていないか,含まれていたとしても圧倒的少数であることが必要である.

ここで,$p(x|\mathcal{D})$を正常時の確率分布(モデル)として考えてしまう(*3).

考えるべき問題は,「全く新しい観測値$x’$は異常か?」ということになる.このとき,観測値$x’$は正常時にでにくい値であれば,異常度が高いと考えることができる.また,情報理論的な観点で言えば,「異常度が高いなら,得られる情報量は高い」ということが期待できる.

(少しレトリックに頼っている感じ嫌ですね.まあしょうがない.)

具体的には,シャノン情報量を用いて異常度を以下のように表し,「異常かな?」と考える(*4).

$$
a(x’) = – \ln p(x’|\mathcal{D})
$$

イメージはこんな.

統計学的な用語を使えば,異常度は正常モデルに基づく負の対数尤度として定義される.
ラベル付きの場合の,異常状態の確率分布を無視したものに対応する.

異常検知モデルの性能を評価する

次に,少し抽象的ではあるが,異常検知モデルの性能の話をする.
基本的には,訓練データによりモデルを作成し,検証データを利用して性能を評価することになる.

ここで,以降の重要な論点を直感的に理解するために,ある具体例を取りあげる.
まず,異常現象が発生する確率が0.1%の現象について,異常検知を試みているとしよう.
この異常検知モデルの異常判定閾値を無限に大きくした場合,すべての観測値は異常と判定されなくなる.

しかしながら,異常・非異常の 正解率は99.9% ほどになることが考えられる.
一方,異常判定閾値を限りなく小さくした場合には,確実に異常値を異常と判定できることになる.

もちろん,両者とも精度の高い異検知モデルとは言えないだろう.このような,ある種の確率論のもどかしさを克服して,性能をうまく表現する方法を説明していく.

ふたつの視点

基本的には,偽陽性率・真陽性率(*5)の考え方を利用するのが一般的である.

偽陽性率に対応する正常標本精度は,
$$
(正常標本精度) = \frac{(実際に正常である標本の中で,正しく正常と判定できた数)}{(実際に正常である標本の総数)}
$$

真陽性率に対応する異常標本精度は,
$$
(異常標本精度) = \frac{(実際に異常である標本の中で,正しく異常と判定できた数)}{(実際に異常である標本の総数)}
$$
と,それぞれ定義される.

これらの,正常標本精度・異常標本精度は下図に示すように,異常判定閾値の大小によって,変わってくる.

このとき,異常判定閾値が小さければ,異常標本精度は大きく,正常標本精度は小さくなる.異常検知モデルの性能は,双方の交点を参照し,それを分岐点精度として評価することができる.

結局

先に示したような,正常標本精度・異常標本精度の関数を描くことができれば問題ないのですが,実際にはこの曲線を正確に把握することは困難です.そこで,いくつかの異常判定閾値における正常標本精度$\gamma_0$・異常標本精度$\gamma_1$の調和平均:

$$
f = \frac{2 \gamma_0 \gamma_1}{\gamma_0 + \gamma_1}
$$

を計算し,その最大値を精度(*6) と評価するのが便利である.また,調和平均$f$はF値と呼ばれる.

このほか,ROC曲線の下部面積で評価する方法が存在する.こちらの方が,異常検知・二値分類の界隈では主流であるが,本記事では割愛する.

コメント

  • やはりベイズ統計の考え方が根底にある
  • 本書では,確率・統計の初歩的な知識が要求されそう
  • 細かいところかもしれないが,条件付き確率分布の定義・表現や,ベクトル変数を一次元座標で表現しているところなどは,数学的厳密さに欠くと感じた
  • 厳密さとわかりやすさはトレードオフとも言えるのでなんとも言えないが...

注釈

(*1) : 参考書では観測値$x$を任意の次元のベクトルとして表現していたが,イントロダクションにおいてベクトルである必然性はないので,本記事では簡単に1次元とした.

(*2) : この日本語の言い回しはあまり厳密ではない気がする.

(*3) : なんらかの方法で正常時の確率分布を求めた」ということになる.

(*4) : 結局,閾値を設定することになる.

(*5) : 偽陽性率・真陽性率については,確率や統計を扱った読み物

などに,具体例付きの簡単な解説が載っていた気がする.

(*6) : これは,特殊ケースを除いて,分岐点精度と概ね一致することが知られている.

0