異常検知と変化検知 第4章 近傍法による異常検知
TRANSCRIPT
異常検知と変化検知 Chapter 4 近傍法による異常検知
2015/10/7 @kenmatsu4
自己紹介・Facebookページ https://www.facebook.com/matsukenbook ・Twitterアカウント @kenmatsu4 ・Qiitaでブログを書いています(統計、機械学習、Python等) http://qiita.com/kenmatsu4 (3500 contributionを超えました!)
・趣味 - バンドでベースを弾いたりしています。 - 主に東南アジアへバックパック旅行に行ったりします (カンボジア、ミャンマー、バングラデシュ、新疆ウイグル自治区 etc) 旅行の写真 : http://matsu-ken.jimdo.com
Twitterアイコン
コレですw
・ホテリングの 法の様な制約がない → 観測値が一定値の周りに集まって なくても良い ・わかりやすい → 「近さ」というわかりやすい概念 ・なので、本質としては「距離」をどう 定義するか、という問題。
本章で扱う「近傍法」の特徴T 2
・k近傍法 (k-neighbor method)
・マージン最大化近傍法 (Large-margin nearest neighbors)
本章で扱う2つの近傍法
4.1 k近傍法 : 経験分布に基づく異常判定
標本サンプル数 :
4.1.1 k近傍法: ラベルなしデータ
M
1
M
1
M
1
Data Set : D = {x(1), x
(2), · · · , x(N)}
↑このデータは「異常標本を含まない」or 「異常標本があっても圧倒的少数」 であるとする。
新たに取得したデータ: x
0
N
特徴量数 :M
← 判定対象
経験分布
�(·)は、ディラックのデルタ関数 ≒ インパルス関数 ≒ 分散0の極限の正規分布
つまりZ 1
�1�(x� b)f(x)dx = f(b)
を満たす�(·)
1
b x
f(x)
( の時のみ1, それ以外0)x = b
pemp(x|D) =1
N
NX
n=1
�(x� x
(n))
経験分布
点があるところのみ 1/N で、それ以外は0の分布
pemp(x|D)
→ 経験されたところのみ値を持つ
pemp(x|D) =1
N
NX
n=1
�(x� x
(n))
任意の位置 を中心とした十分小さい半径 の球を
経験分布標本位置以外で確率0というのは実用的でないので…
pemp(x|D)
"
x
0 "考え、この中で確率密度が一定と考える
経験分布
pemp(x|D)
" この球の中は 確率密度 p(x0)VM (",x0)
確率密度 球の体積の範囲に入る確率VM (",x0)
p(x0)⇥ |VM (",x0)| ⇡Z
x2VM (",x0)pemp(x|D)dx
経験分布
"
確率密度 球の体積の範囲に入る確率VM (",x0)
p(x0)⇥ |VM (",x0)| ⇡Z
x2VM (",x0)pemp(x|D)dx
p(x0)
経験分布VM (",x0)M次元球の内部の領域:
領域 に含まれる の要素の数を とする。VM (",x0) D k
p(x0) ⇡ 1
|VM (",x0)|
Z
x2VM (",x0)
1
N
NX
n=1
�(x� x
(n))dx⇒
p(x0) ⇡ k
N |VM (",x0)|⇒ "
確率密度 球の体積の範囲に入る確率VM (",x0)
p(x0)⇥ |VM (",x0)| ⇡Z
x2VM (",x0)pemp(x|D)dx
n次元球の体積から・・・
(定数)VM =⇡
M2
�(M2 ) + 1"M = "M
(定数)p(x0) ⇡ k
N |VM (",x0)| ⇡k
N
�"M
��1
半径 の球の体積は、 の定数倍と言える( に比例する)。 "M"
よって、確率密度もこのように表せる。
全体のデータ数のうち、 半径εの球の中に含まれる
データ数の割合
"M
異常度の導入(1.4)より異常度は
と、定義される。よって、
(定数)
・εを固定すれば、 k が小さい方が異常度が高い ・ k を固定すれば、εが大きい方が異常度が高い
これより、
a(x0) = � ln p(x0|D)
a(x0) = � ln k +M ln " +
… (1.4)
k近傍法 (k=1のとき)k=1とすると
となるので、最近傍の標本までの距離を基準値として それを超えるものを異常と判定するというやり方を 採択できます。 異常 正常
x
0a(x0) = ↵
a(x0) > ↵
x
0a(x0) = ↵
a(x0) < ↵
(定数)a(x0) = M ln " +
k近傍法 (一般の場合)
k の項が入る分、同じ ε でも異常度 が小さくなる。
a(x0)
(定数)a(x0) = � ln k +M ln " +
ε近傍法
近傍半径 ε を定数として与える。 そのため k によって異常度が決まる。
異常 正常
x
0a(x0) = ↵
x
0
a(x0) > ↵
a(x0) = � ln k + (定数)
ただし、個々の塊の粗密に違いがあることや、 変数の次元が高い場合に 個々の変数の寄与がかき 消されがちであるので 注意が必要。
k近傍法の特徴k近傍法は分布が多峰的 (multimodal)でも適用が 可能。
x
0a(x0) = ↵
手順
1. 観測データ x’ を得る 2. k が決まっているので ε が決まる 3. 異常度が閾値を超えているか判断する
x
0"
4.1.2 k近傍法: ラベルつきデータ
M
1
M
1
M
1
D = {(x(1), y
(1)), (x(2), y
(2)), · · · , (x(N), y
(N))}
ラベル 0:正常, 1:異常を表すスカラーデータ M次元ベクトル
N1(x0)N0(x0) :正常ラベルつきのk近傍標本数
:異常ラベルつきのk近傍標本数
N0(x0) N1(x0)
4.1.2 k近傍法: ラベルつきデータ
M
1
M
1
M
1
D = {(x(1), y
(1)), (x(2), y
(2)), · · · , (x(N), y
(N))}
ラベル 0:正常, 1:異常を表すスカラーデータ M次元ベクトル
N1(x0)N0(x0) :正常ラベルつきのk近傍標本数
:異常ラベルつきのk近傍標本数
N0(x0) N1(x0)
k=6のとき 正常:4、異常:2
p(y = 1|x0,D) =N1(x0)
k← 近傍kのうち異常ラベルの数の割合
p(y = 0|x0,D) =N0(x0)
k← 近傍kのうち正常ラベルの数の割合
a(x0) = lnp(x0|y = 1,D)
p(x0|y = 0,D)
p(x0|y = 0,D) =p(y = 0|x0,D)p(x0)
p(y = 0)=
p(x0)
k· N
0(x0)
⇡0
ここは共通
a(x0) = ln⇡0N1(x0)
⇡1N0(x0)
式(4.4):異常度
ここにベイズの定理を適用。異常も同様
全標本に対する 正常標本の割合全標本に対する 正常標本の割合
異常検知の実施
1. 近傍数 、異常判定の閾値 の候補をリストアップする。k ath
は0を中心に値を決定する。(正常、異常が一様に分布 している場合、異常度が0に近くなるため)ath
【訓練時(事前準備)】
2.「距離」に何を使うかを決定する。基本はユークリッド 距離をまず試して精度を評価する。
ユークリッド距離で精度が良くない場合、局所外れ値度 で距離を定義するとうまくいく場合がある。(特に、 位置によりデータの濃淡がある場合)
局所外れ値度(さわりだけ)
pp0
qq0
データの密集度を考慮して距離を定義する。
異常検知の実施
1. 訓練データ の中から標本 を選ぶ。【訓練実施】
D x
(n)
2. 残りのN-1個の標本の中から に最も近い標本を k 個 選ぶ
x
(n)
3. 式(4.4)に基づいて なら を異常と 判定する。
a(x(n)) > ath x
(n)
4. N 個の標本全てに「異常」「正常」の仕分けが済むと、 正常標本精度、異常標本精度が算出できるので、ここから
F値 =2r0r1r0 + r1
を求め、 の評価値とする。(k, ath)
正常標本精度 = 正しく正常と判定した数正常標本総数
5. 1~4を繰り返し、最大のF値となる を選択する(k⇤, a⇤th)
異常検知の実施
1. 新たな観測値 に対して、最近傍 個を から選ぶ
【運用時】x
0 k⇤ D
2. なら を異常と判定する。 a(x0) > a⇤th x
0
4.2 マージン最大化近傍法
計量学習:マージン最大化近傍法
M
1
M
1
M
1
D = {(x(1), y
(1)), (x(2), y
(2)), · · · , (x(N), y
(N))}
ラベル 0:正常, 1:異常を表すスカラーデータ M次元ベクトル
ラベル付きデータ
分布の様相に応じて距離尺度をうまく調整し、精度を上げる ことを狙った手法。
計量学習:マージン最大化近傍法行列 A で基準化した2標本の距離
M
1M
1
M
M
スカラーで 表す距離
2次形式!
行列 A をデータの分布をうまく表すように決める
行列 A をデータで学習させる手法を計量学習というこのとき行列 A を「リーマン計量」と呼ぶ
d2A(x0,x00) = (x0 � x
00)TA(x0 � x
00)
計量学習:マージン最大化近傍法
マハラノビスの距離に似ているが、これに k 近傍法を 1枚かますことがこの手法の特徴
と、単位行列にするとユークリッド距離となる。A = IM
Aは半正定値行列とする
d2A(x0,x00) = (x0 � x
00)TA(x0 � x
00)
d2A(x0,x00) = (x0 � x
00)TIM (x0 � x
00)
= (x0 � x
00)T(x0 � x
00) = kx0 � x
00k2
から1つ、任意の標本 を取り出したとき、 同一ラベルに属する k 個の最近傍標本を (標的近傍) とする。
計量学習:マージン最大化近傍法
近傍数 k を決め、 を初期値とする。【初期値】
A = IM
DN (n)
x
(n)
近傍数 k=3 のとき、青い点がN (n)
x
(n)
計量学習:マージン最大化近傍法
ターゲット 同一ラベルデータ
k 近傍のデータの内、ターゲットと同一ラベルのデータ との距離の和
(n)1 (A) ⌘
X
i2N (n)
d2A(x(n),x(i))
これをなるべく小さくする
最小化条件1
Aで基準化された距離
0 1 2 3 4 5 6
0
1
2
3
4
5
6
赤セルがターゲット、 グレーセルが 近傍、
k=3 の例N (n)
計量学習:マージン最大化近傍法条件2ターゲットと異ラベル 標本との2乗距離[ ] ターゲットと同一ラベル
標本との2乗距離[ ]+ c2>
c
※ cは図の灰色の帯の幅に対応
計量学習:マージン最大化近傍法最小化条件2:前ページの条件が破られている度合を最小化
x
(j):同一ラベル k 個のデータ (j = 1, 2, · · · , k)
x
(l):全てのデータ (l = 1, 2, · · · , N)
前ページのcはAに吸収可能のため、1とする
(n)2 (A) ⌘
X
j2N (n)
NX
l=1
I[y(l) 6= y(n)]h1 + d2A(x
(n),x(j))� d2A(x(n),x(l))
i
+
異ラベルの距離はマイナス→ 距離が離れている方が 良いので。
:かっこの中が成り立つとき1、それ以外0I[·]
[h]+ = max(0, h) =
(h, h � 0
0, h < 0
ターゲットと異なる ラベルのものだけ取り出す
計量学習:マージン最大化近傍法最小化条件2 前ページのcはAに吸収可能のため、1とする
(n)2 (A) ⌘
X
j2N (n)
NX
l=1
I[y(l) 6= y(n)]h1 + d2A(x
(n),x(j))� d2A(x(n),x(l))
i
+
異ラベルの距離はマイナス→ 距離が離れている方が 良いので。
ターゲットと異なる ラベルのものだけ取り出す
ターゲットと同一ラベル
ターゲットと異なるラベル
濃いグレーの部分を 全部足し合わせる
同 異 同 同 異 異 同 異
k
n kk
l系
j系
N
N
マージン最大化近傍法の最適化問題
(A) ⌘ 1
N
NX
n=1
h(1� µ) (n)
1 (A) + µ (n)2 (A)
i最小化ターゲット
subject to A ⌫ 0
半正定値行列である事を表している → 距離が負にならない事を示している
(A) ⌘ 1
N
NX
n=1
h (n)1 (A) + (n)
2 (A)i
実用上は μ=0.5として問題ないためその場合、μは下記のように 省略できる
勾配法による最適化
半正定値計画(semi-definite programing) という最適化問題となる。
勾配法固有値計算{ の組み合わせで解く
勾配法によるAの更新
A A� ⌘@ (A)
@A
最小化の更新式 (A)
⌘ :勾配法のステップ幅 勾配法のイメージ
これを扱うには和の範囲を工夫して の中に 正の項しか入らないようにすると を外せる。
は右図のように角をもつので 微分できない。
勾配法によるAの更新[h]+
[h]+
→ 微分できる目的関数に対する 勾配法との違いから、 「劣勾配法」と呼ぶのが正確
[h]+
[·]+
今日のハイライト
X ⌘ {x(1),x(2), · · · ,x(N)}
M
1
M
1
M
1@ (A)
@A=
1
NXCXT
M
MN
NN
N
MM
: 及び と異なるラベルかつ、x
(n)x
(j)
1 + d2A(x(n),x(j))� d2A(x
(n),x(l)) > 0
である標本の集合(添え字が のもの)l
Nn,j
式(4.12)
式(4.13)
C ⌘NX
n=1
X
j2N (n)
8<
:(1� µ)C(n,j) + µX
l2Nn,j
(C(n,j) � C(n,l))
9=
;
今日のハイライト
標的近傍 は Aの更新より変わらない。N (n)
: 及び と異なるラベルかつ、x
(n)x
(j)
1 + d2A(x(n),x(j))� d2A(x
(n),x(l)) > 0
である標本の集合(添え字が のもの)l
Nn,j
のほうはAの更新で変化するNn,j
C ⌘NX
n=1
X
j2N (n)
8<
:(1� µ)C(n,j) + µX
l2Nn,j
(C(n,j) � C(n,l))
9=
;
C(i,j) ⌘ (ei � ej)(ei � ej)T
の中身
{個
i番目
j番目
ei = (0, 0, · · · , 1, · · · , 0, 0)T
ej = (0, 0, 0, · · · , 1, · · · , 0)T
N
C(i,j) ⌘ (ei � ej)(ei � ej)T
1N
1
N
N
Ni j
0 0 … 1 … -1 … 0
0 0 0 0 0 0 0 0 0
… 0 0 0 0 0 0 0 0
i 1 0 0 0 1 0 -1 0 0
… 0 0 0 0 0 0 0 0
j -1 0 0 0 -1 0 1 0 0
… 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
ei � ej = (0, · · · , 1, · · · ,�1, · · · , 0)T
C(i,j)
C(i,j)
今日のハイライト:確かめてみる (n)1 (A) ⌘
X
i2N (n)
d2A(x(n),x(i))
M1
1
MM
M
行列Aで微分すると
=X
i2N (n)
(x(n) � x
(i))TA(x(n) � x
(i))
=X
i2N (n)
x
(n�i)TAx
(n�i)
k近傍のデータ k近傍のデータ
=X
i2N (n)
MX
k=1
MX
l=1
aklx(n�i)k x
(n�i)l
対称!
@
(n)1 (A)
@akl=
X
i2N (n)
x
(n�i)k x
(n�i)l =
X
i2N (n)
(x(n)k � x
(i)k )(x(n)
l � x
(i)l )
X
i2N (n)
(x(i)k � x
(n)k )(x(i)
l � x
(n)l )
なんとなく、共分散っぽいものに 見えてくる!
中心 中心
k近傍のデータ k近傍のデータ
今日のハイライト:確かめてみる
今日のハイライト:確かめてみる
(A) ⌘ 1
N
NX
n=1
h (n)1 (A) + (n)
2 (A)i
=1
N
NX
n=1
(n)1 (A) +
1
N
NX
n=1
(n)2 (A)
目的の最小化関数を定義し直す
この時、最初の項の行列の微分を考えるとこのようになる
= 1(A) + 2(A)
@ 1(A)
@akl=
1
N
NX
n=1
X
i2N (n)
(x(i)k � x
(n)k )(x(i)
l � x
(n)l )
C(i,j) ⌘ (ei � ej)(ei � ej)T
@ 1(A)
@akl=
1
N
NX
n=1
X
i2N (n)
(x(i)k � x
(n)k )(x(i)
l � x
(n)l )
@ (A)
@A=
1
NXCXT
今日のハイライト:確かめてみる
(n)2 (A) ⌘
X
j2N (n)
NX
l=1
I[y(l) 6= y(n)]h1 + d2A(x
(n),x(j))� d2A(x(n),x(l))
i
+
行列Aで微分すると
@ (n)2 (A)
@apq=
X
j2N (n)
NX
l=1
I[y(l) 6= y(n)]
d2A(x
(n),x(j))
@apq� @d2A(x
(n),x(l))
@apq
�
+
=X
j2N (n)
NX
l=1
I[y(l) 6= y
(n)]h(x(n)
p � x
(j)p )(x(n)
q � x
(j)q )� (x(n)
p � x
(l)p )(x(n)
q � x
(l)q )
i
+
同一ラベルのk近傍が対象 異ラベルの全てが対象同 異 同 同 異 異 同 異
k
n kk
l系
j系
今日のハイライト:確かめてみる
Aの固有値分解
A U [�]+UT
式(4.12), (4.13)により行列Aが更新されたら
は負の固有値を0で置き換える ことを意味している[�]+
主成分分析で次元削減をしているのと 似たようなイメージ
A = U�UT
のように固有値分解を行い、下記でAを更新する
アルゴリズム【初期化】近傍数 k, 係数 μ(通常0.5), ステップ幅の初期値 を与える
⌘0
とリーマン計量 Aの初期値を置くA = IM
各クラスの標本数の不均衡がある場合は前処理で 是正しておく
ブートストラップ法で見かけ上の標本数を増やす、 標本数が多いクラスから間引く、等
アルゴリズム
A A� ⌘@ (A)
@A… 最小化の更新式 (A)
【反復】
A U [�]+UT
A = U�UT … 固有値計算
… 負の固有値除外
下記を実行して都度収束判定を行い、収束するまで 繰り返し実行する。収束したらその時の行列 を出力する。
ステップ幅 η は毎回値を更新する
A⇤
4.2.4 確率モデルとの関係
p(x|x(n), y(n)) =1
Zn(A,�)exp
⇢� 1
2�2d2A(x,x
(n))
�
多変量正規分布の変形
任意の標本 の近傍に下記のような確率分布を考える。x
(n)
積分して1にするため
尤度はY
i2N (n)
1
Zn(A,�)exp
⇢� 1
2�2d2A(x
(i),x(n))
�
4.2.4 確率モデルとの関係全体の対数尤度は、データ数nの和をとり、
L(A|D) = � 1
2�2
NX
n=1
X
i2N (n)
d2A(x(i),x(n))� kN lnZn(A,�)
Zn()を解析的に求めるのが難しいので、マージン制約を 取り込んでいたことが、最大マージン近傍法の一つの解釈
Fin