異常検知本の読書メモ Part 3(疎構造学習による異常検知)

前回の復習

前回のChaper 9では「単一の」「時系列データ」に対し、部分空間法を使った変化検出法を見た。

概要はこんな感じであった。

  • 小さいwindow幅でデータを切って、ベクトルデータにする
  • 過去側と現在側の2つに領域に分割
  • 時刻tにおける過去側と現在側の確率分布の相違度を計算するためにKLダイバージェンス
    • 確率分布としてフォンミーゼスフィッシャー分布を採用
  • 小さいwindow幅で切られたデータはノイズが多いので、そのままでは役に立たない
  • ノイズを減らして特徴的なベクトルを得るために特異値分解を使う

多変量の変数間の依存関係の崩れを検知 => 対マルコフネットワーク

Chaper 10ではデータの時系列的な関係は無視するが、「多変量の変数間の依存関係の崩れ」を検知することを目標とする。変数間の関係は対マルコフネットワーク(pairwise Markov network)を使って捉える。pairwiseなので3変数以上の相関は考えない。対マルコフネットワークで依存関係を表わすので、変数間に関係があればネットワークにエッジがあり、関係なければエッジがない。

直接相関と間接相関の区別

変数間の関係を表わす際に重要なことは直接相関と間接相関の区別である。これを区別しないと、教会の数と殺人事件には関係があるということになってしまう(間接相関)。都市の人口といった仲介している変数があるので、それらを条件付けた上で関係があるかを考えなければならない(直接相関)。

間接相関では他の変数からも来る間接的な依存関係表現する。周辺化の操作をする。

p(x_1, x_2) = \int \cdots \int p(\mathbf{x}) d x_3 \cdots d x_M

直接相関では、他の変数を条件付けた2つの変数間の関係のみを切り出して表現する。

p(x_1, x_2 | x_3, \cdots, x_M) = \frac{p(\mathbf{x})}{p(x_3, \cdots, x_M)}

正規分布に基づく対マルコフネットワーク

対マルコフネットワークを考える際も直接相関を考えたいが、上で見たように条件付き分布をよく考えることになる。モデル化するなら、条件付き分布が簡単になる分布を選びたい。正規分布は他の変数条件付けた残りの変数も正規分布になるというよい性質があるので、正規分布を使ってマルコフネットワークをモデル化する。

ラプラス分布によるsparse化

変数間のエッジが多いと解釈がむずかしいので、ネットワークはなるべく疎(sparse)になっていたほうがうれしい。疎なネットワークにするために精度行列の事前分布としてラプラス分布を採用する。ラプラス分布を採用した上で、MAP推定でパラメータを求める。実際の手順は少し込みいっているが、基本的にはブロッック座標降下法(block coordinate descent)でいける(1つの変数に着目し、それ以外の変数を固定して最適化を繰り返す)。

疎構造学習に基づく異常度の計算

疎構造学習を使って異常を見つけることを考えた場合、以下の2つの問題設定が考えられる。

外れ値解析の場合

正常時のデータ(D)を使って確率分布p(x|D)が得られたとする。新しくデータx^\primeが手に入ったときに、x^\primeの各変数の異常度は

a_i(\mathbf{x}) = - \log p(x_i^\prime | \mathbf{x}_{-i}^\prime, D) = \frac{1}{2} \log{\frac{2 \pi}{\Lambda_{i,i}}} + \frac{1}{2 \Lambda_{i,i}} (\sum_{j=1}^M \Lambda_{i,j} x_j^\prime)^2

として書ける。どのデータが異常だった(外れ値検出)というだけでなく、どの変数の振舞いがおかしいかまでやるという意味で外れ値解析と本書では呼ばれている。

異常解析の場合

↑の外れ値解析の場合とは異なり、正常なデータ集合Dとテストのデータ集合D^\primeが得られたとする。DとD^\primeの間でどの変数にどれくらい食い違いがあるかを考えたい、というのが異常解析の問題設定である。ここまでの議論を考えると、変数毎に確率密度比の期待値を考えて

a_i = \int \int \log{\frac{p(x_i^\prime | \mathbf{x}_{-i}^\prime, D)}{p(x_i^\prime | \mathbf{x}_{-i}^\prime, D^\prime)}} p(\mathbf{x}_{-i}^\prime | D) p(x_i^\prime | \mathbf{x}_{-i}^\prime, D)  d x_i^\prime d \mathbf{x}_{-i}^\prime

と定義できる。p(\mathbf{x}_{-i}^\prime | D)p(x_i^\prime | \mathbf{x}_{-i}^\prime, D)のカルバックライブラーダイバージェンスを考えたものともいえる。計算を頑張ると、これも簡単な形で計算できるようになる。

Chaper11以降では確率密度を構成する各要素を陽には考えず、密度比を直接求めるアプローチが紹介されている。

参考

異常検知と変化検知 (機械学習プロフェッショナルシリーズ)

異常検知と変化検知 (機械学習プロフェッショナルシリーズ)

入門 機械学習による異常検知―Rによる実践ガイド

入門 機械学習による異常検知―Rによる実践ガイド