はじめに
この記事は,異常検知と変化検知を学ぶアドベントカレンダー2018 – Takala’s Memory の1日目の記事です.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) : 偽陽性率・真陽性率については,確率や統計を扱った読み物
- その数学が戦略を決める (文春文庫)
- リスク・リテラシーが身につく統計的思考法―初歩からベイズ推定まで (ハヤカワ文庫 NF 363 〈数理を愉しむ〉シリーズ) (ハヤカワ文庫NF―数理を愉しむシリーズ)
- 統計学を拓いた異才たち(日経ビジネス人文庫)
- 文庫 異端の統計学 ベイズ (草思社文庫 マ 3-1)
などに,具体例付きの簡単な解説が載っていた気がする.
(*6) : これは,特殊ケースを除いて,分岐点精度と概ね一致することが知られている.
0