This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 5 years have passed since last update.

密度比推定による異常検知

Last updated at Posted at 2016-07-21

密度比による外れ値検出問題の定式化

  • 1.3の拡張

異常標本が混じっているとされるデータから異常値を探す

D' = \bigl\{x'^{(1)}, x'^{(2)}...x'^{(N')} \bigl\}  \\
a(x) = -\ln r(x)

ただし

r(x) \equiv \frac {p^{(x)}} { p'^{(x)}}

異常標本の割合を$\alpha$であると仮定すると

 p'^{(x)}  = (1 - \alpha) p (x) + \alpha \tilde {p} (x)

$\tilde {p}(x)$は、$p$ と $p'$ の差に対応する関数

これを使うと密度比は

r(x) \equiv \frac {p^{(x)}} {(1 - \alpha) p (x) + \alpha \tilde {p} (x)} = \frac {1}{(1 - \alpha) + \alpha \tilde {\frac{p(x)}{p(x)}}}

と表現できる
また密度比は $\tilde {p} (x) / p (x) \geq 0$ である

0 \leq r(x) \leq \frac {1}{(1 - \alpha)}

を満たす。これから $x'$ の密度比は

\ln (1 - \alpha) \leq a(x') < \infty

異常より密度比がわかれば異常度もわかる
しかし、確率密度の推定には誤差がふくまれ、$p'(x)$ が小さいと誤差が増幅されてしまう
そこで $r(x)$ を直接推定する

Vapnik の原理
「ある問題を解くとき、その問題よりも難しい問題を途中段階で解いてはならない」

モデル

r_\theta (x) = \sum_{j=1}^b \theta_j \psi_j(x) = \theta^{\mathrm{T}} \psi(x)

を仮定

比の役割を $\theta$ が担っている

$r_\theta (x)p'(x)$ をできるだけ $p(x)$ に近づけたい
-> 確率分布通同士の類似度を求める カルバック・ライブラー・ダイバージェンス を用いる

カルバック・ライブラー・ダイバージェンスの数式的な議論は次章

カルバック・ライブラー・ダイバージェンス

  • 2つの確率分布の差異を求める
gKL(p||r_\theta p') = \int dx p(x) \ln \frac {p(x)} {r_\theta(x)p'(x)} - 1 + \int dx r_\theta(x) p'(x) \\
= - \int dx p(x) \ln r_\theta (x) + \int dx r_\theta(x) p'(x) + C \\
= \frac{1}{N'} \sum_{n'=1}^{N'=1}  r_\theta(x'_{n'}) - \frac{1}{N} \sum_{n=1}^N\ln r_\theta(x_n) + C

を下記の最適化問題とする

min J(\theta), J(\theta) = \frac{1}{N'} \sum_{n'=1}^{N'=1}  r_\theta(x'_{n'})  - \frac{1}{N} \sum_{n=1}^N\ln r_\theta(x_n) 

訓練データに対する異常度最小化の問題

J(\theta) = \langle r_\theta \rangle D' +  \langle - \ln r_\theta \rangle D 

を勾配法でとく

$\theta$を下記の式で更新していく

\theta \leftarrow \eta \nabla J(\theta)

ここで $\eta > 0$ は勾配法のステップ幅

\nabla J(\theta) = \frac{1}{N'} \sum_{n'=1}^{N'=1} \psi(x'_{n'}) - \frac{1}{N} \sum_{n=1}^N\ln \frac {\psi(x_n)}{\theta^{\mathrm{T}} \psi(x_n)}

基底関数としてRBFカーネルを用いる

\psi_n (x) = exp (- \frac {\lVert x - x^{(n)} \rVert^2}{2h^2})

ガウスカーネルモデル

r_\theta (x) = \sum_{n=1}^N \theta_n exp (- \frac {\lVert x - x^{(n)} \rVert^2}{2h^2})

交差検定でバンド幅を調整
密度比の推定量が導出される

a(x'^{(n)}) = - \ln \hat {r} (x'^{(n)})

のように求められる

アルゴリズム 11.1 参照

最小2乗密度比推定法

カルバックダイバージェンスの代わりに2乗誤差を最小化

J(\theta) = \frac {1}{2} \int dx \bigl\{ r_\theta (x) - r(x) \bigl\}^2 p'(x) \\
= \frac {1}{2} \int dx \theta^T \psi (x) \psi(x)^T \theta p'(x)  - \int dx \theta^T \psi(x) p(x) + C
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up