今年に入ってからずっと強化学習の勉強をやっていたのだが,会社より異常検知を完全に理解しろという命令が来たのでやっていくことにする.
まずはホテリングの法と和解を行う.
ホテリングの法は古典的な異常検知手法である.
データが正規分布に従っていると仮定して,データの異常度を以下のように定義する.
ここで及びはそれぞれ標本平均と標本分散である.
異常度は平均値からの距離(の二乗)を表していることが分かる.
平均値から離れるほど異常度が大きくなっていくということだ.
分散で割っているのはバラつきの大小を考慮するのが目的だろう.
ポンチ絵を描くと下みたいな感じ.
データは正規分布に従っているので,を中心にした左右対称の山のような形だ.
付近にデータが多く現れ,と離れるほどその出現頻度は低くなる.
からの距離はで表される.
距離を二乗している理由は,異常度は正規分布の自然対数を取って式変形をしているためである.
また,二乗することは外れている値をより重視することでもある.
,ならば,及びである.
,ならば,及びである.
距離が2倍になれば,異常度は4倍になるということである.
さて,異常度の分布はどのようになるだろう.
データは,平均付近に多く分布している.
に近いデータはその異常度はに近い値となる.
そして,異常度が大きいデータほど出現頻度が低くなる.
ポンチ絵を描くと下のようになる.
さて,異常度の分布は自由度,スケール因子のカイ二乗分布に従うそうなのだ.
カイ二乗分布はガンマ関数が出てきたりして非常に複雑な式で表されるが,その辺を理解する必要はあまり無くて,結果のみを利用する.
さて,異常検知を行うにあたって,「異常度がいくら以上になったら異常である」と言いたいので,この閾値を決定したい.
閾値の決め方については,異常度の出現確率を基準にする.
の確率(例えばやなど)でしか出ない異常度が出てしまったら,異常と判断しよう.
以上となる確率は自由度,スケール因子のカイ二乗分布の確率密度関数から,
これの水色の斜線部の面積が確率である.
しかしながら今回求めたいのは確率が例えばの時のであり,上記の積分を逆側に解くような感じである.
どうしたらええんじゃと思ってしまうが,これについてはカイ二乗分布の分布表を見れば一発である.
以下から値を引用させていただくと,
https://www.koka.ac.jp/morigiwa/sjs/chi-square_distribution.htm
確率と設定した場合に,閾値になるということである.