情報理論関連をぐだぐだと

情報理論関係を勉強中の筆者がそれっぽいことを書くブログ

異常検知、あるいは二値仮説検定について

本の紹介

今日、夕方から

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

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

の勉強会があるので、予習もかねて。

異常検知とは?

タイトルにもあるとおり、言ってしまえば二値の仮説検定そのもの。

「異常」か、「正常」かということをデータから判断する。

仮説検定とは?

通常、帰無仮説がどうとか、対立仮説がどうとかいう話が出てくるけれど、ここではそう言った構成はせず、次のように考える。

 \mathcal{X}適当な集合として、与えられているものとする。感覚的にはデータの取り得る値の集合なので、データ集合と呼ぶことにする。

 \mathcal{P(X)}をデータ集合 \mathcal{X}上の確率分布全体のなす集合とする。 \mathcal{P(X)}の要素 p \in \mathcal{P(X)} \mathcal{X}上の確率分布。

確率分布 p \in \mathcal{P(X)}とは \mathcal{X}から非負の実数(0以上の実数) \mathbb{R}_+への関数で、

{ \displaystyle
\sum_{x \in \mathcal{X}} p(x) = 1
}

あるいは、

{ \displaystyle
\int_{\mathcal{X}} p(x) dx = 1
}

を満たすものをさす。*1

ここで、 \mathcal{P(X)}の要素 p \in \mathcal{P(X)}仮説と呼ぶことにする。

二値仮説検定とは、得られたデータ x \in \mathcal{X}が与えられた2つの仮説 p,q \in \mathcal{P(X)}のどちらから得られたか(実現したか)を推定する問題。

異常検知の観点から言えば、対象が正常なときにデータが従う分布 p \in \mathcal{P(X)}と、対象が異常なときにデータが従う分布 q \in \mathcal{P(X)}が与えられたときに、 得られたデータ x \in \mathcal{X}が正常か異常かを判断する問題。

決定的な解決策*2

基本的な考え方は、データ集合 \mathcal{X}を与えられた2つの仮説 p,q \in \mathcal{P(X)}を用いて2つに分けてしまうことにある。

具体的には、集合 A_p = \{x \in \mathcal{X} | p(x) \geq q(x)\}と集合 A_q = \{x \in \mathcal{X} | p(x) \lt q(x)\}に分けたり(ベイズ決定則)、 ある非負の数 c \in \mathbb{R}_+を用いて、集合 A_p = \{x \in \mathcal{X} | p(x) \geq cq(x)\}と集合 A_q = \{x \in \mathcal{X} | p(x) \lt cq(x)\}に分けたり(ネイマン-ピアソン決定則)する。

ここで、得られたデータ x \in \mathcal{X} A_pに入っていれば、 pを支持(正常であると判断)し、逆に A_qに入っていれば、 qを支持(異常であると判断)する。

大きな問題、それは…

実際に異常検知を行おうとするときには、このフレームワークでは大きな問題がある。 それは、通常2つの仮説 p,q \in \mathcal{P(X)}は与えられないということ。

ではどうするかと言うと、これまで得られているデータ列から、2つの仮説 p,q \in \mathcal{P(X)}、または、正常な方の仮説 p \in \mathcal{P(X)}を推定することになる*3

推定問題は検定問題とは似ているけれども全く別の問題。勉強会までの時間もないので後日書くことにする。

*1:前者は \mathcal{X}が離散的であった場合、後者は適当な位相の元で連続であった場合。

*2:あまり使われないだろうけど理論的には確率的な解決策もある。

*3:この場合は、異常な方は一様分布など無学習な分布を選ぶことになる。