異常検知と変化検知 第4章 近傍法による異常検知

55
異常検知と変化検知 Chapter 4 近傍法による異常検知 2015/10/7 @kenmatsu4

Upload: kenichi-matsui

Post on 16-Apr-2017

4.797 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: 異常検知と変化検知 第4章 近傍法による異常検知

異常検知と変化検知 Chapter 4 近傍法による異常検知

2015/10/7 @kenmatsu4

Page 2: 異常検知と変化検知 第4章 近傍法による異常検知

自己紹介・Facebookページ   https://www.facebook.com/matsukenbook ・Twitterアカウント   @kenmatsu4 ・Qiitaでブログを書いています(統計、機械学習、Python等)    http://qiita.com/kenmatsu4    (3500 contributionを超えました!)

・趣味    - バンドでベースを弾いたりしています。    - 主に東南アジアへバックパック旅行に行ったりします    (カンボジア、ミャンマー、バングラデシュ、新疆ウイグル自治区 etc) 旅行の写真 : http://matsu-ken.jimdo.com

Twitterアイコン

Page 3: 異常検知と変化検知 第4章 近傍法による異常検知
Page 4: 異常検知と変化検知 第4章 近傍法による異常検知

コレですw

Page 5: 異常検知と変化検知 第4章 近傍法による異常検知

・ホテリングの 法の様な制約がない  → 観測値が一定値の周りに集まって    なくても良い ・わかりやすい  → 「近さ」というわかりやすい概念 ・なので、本質としては「距離」をどう  定義するか、という問題。

本章で扱う「近傍法」の特徴T 2

Page 6: 異常検知と変化検知 第4章 近傍法による異常検知

・k近傍法  (k-neighbor method)

・マージン最大化近傍法  (Large-margin nearest neighbors)

本章で扱う2つの近傍法

Page 7: 異常検知と変化検知 第4章 近傍法による異常検知

4.1 k近傍法 : 経験分布に基づく異常判定

Page 8: 異常検知と変化検知 第4章 近傍法による異常検知

標本サンプル数   :

4.1.1 k近傍法: ラベルなしデータ

M

1

M

1

M

1

Data Set : D = {x(1), x

(2), · · · , x(N)}

↑このデータは「異常標本を含まない」or        「異常標本があっても圧倒的少数」  であるとする。

新たに取得したデータ: x

0

N

特徴量数      :M

← 判定対象

Page 9: 異常検知と変化検知 第4章 近傍法による異常検知

経験分布

�(·)は、ディラックのデルタ関数 ≒ インパルス関数 ≒ 分散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))

Page 10: 異常検知と変化検知 第4章 近傍法による異常検知

経験分布

点があるところのみ 1/N で、それ以外は0の分布

pemp(x|D)

→ 経験されたところのみ値を持つ

pemp(x|D) =1

N

NX

n=1

�(x� x

(n))

Page 11: 異常検知と変化検知 第4章 近傍法による異常検知

任意の位置 を中心とした十分小さい半径 の球を

経験分布標本位置以外で確率0というのは実用的でないので…

pemp(x|D)

"

x

0 "考え、この中で確率密度が一定と考える

Page 12: 異常検知と変化検知 第4章 近傍法による異常検知

経験分布

pemp(x|D)

" この球の中は   確率密度    p(x0)VM (",x0)

確率密度 球の体積の範囲に入る確率VM (",x0)

p(x0)⇥ |VM (",x0)| ⇡Z

x2VM (",x0)pemp(x|D)dx

Page 13: 異常検知と変化検知 第4章 近傍法による異常検知

経験分布

"

確率密度 球の体積の範囲に入る確率VM (",x0)

p(x0)⇥ |VM (",x0)| ⇡Z

x2VM (",x0)pemp(x|D)dx

p(x0)

Page 14: 異常検知と変化検知 第4章 近傍法による異常検知

経験分布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

Page 15: 異常検知と変化検知 第4章 近傍法による異常検知

n次元球の体積から・・・

(定数)VM =⇡

M2

�(M2 ) + 1"M = "M

(定数)p(x0) ⇡ k

N |VM (",x0)| ⇡k

N

�"M

��1

半径 の球の体積は、 の定数倍と言える( に比例する)。 "M"

よって、確率密度もこのように表せる。

全体のデータ数のうち、 半径εの球の中に含まれる

データ数の割合

"M

Page 16: 異常検知と変化検知 第4章 近傍法による異常検知

異常度の導入(1.4)より異常度は

と、定義される。よって、

(定数)

・εを固定すれば、 k が小さい方が異常度が高い ・ k を固定すれば、εが大きい方が異常度が高い

これより、

a(x0) = � ln p(x0|D)

a(x0) = � ln k +M ln " +

… (1.4)

Page 17: 異常検知と変化検知 第4章 近傍法による異常検知

k近傍法 (k=1のとき)k=1とすると

となるので、最近傍の標本までの距離を基準値として それを超えるものを異常と判定するというやり方を 採択できます。 異常 正常

x

0a(x0) = ↵

a(x0) > ↵

x

0a(x0) = ↵

a(x0) < ↵

(定数)a(x0) = M ln " +

Page 18: 異常検知と変化検知 第4章 近傍法による異常検知

k近傍法 (一般の場合)

k の項が入る分、同じ ε でも異常度 が小さくなる。

a(x0)

(定数)a(x0) = � ln k +M ln " +

Page 19: 異常検知と変化検知 第4章 近傍法による異常検知

ε近傍法

近傍半径 ε を定数として与える。 そのため k によって異常度が決まる。

異常 正常

x

0a(x0) = ↵

x

0

a(x0) > ↵

a(x0) = � ln k + (定数)

Page 20: 異常検知と変化検知 第4章 近傍法による異常検知

ただし、個々の塊の粗密に違いがあることや、 変数の次元が高い場合に 個々の変数の寄与がかき 消されがちであるので 注意が必要。

k近傍法の特徴k近傍法は分布が多峰的 (multimodal)でも適用が 可能。

x

0a(x0) = ↵

Page 21: 異常検知と変化検知 第4章 近傍法による異常検知

手順

1. 観測データ x’ を得る 2. k が決まっているので ε が決まる 3. 異常度が閾値を超えているか判断する

x

0"

Page 22: 異常検知と変化検知 第4章 近傍法による異常検知

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)

Page 23: 異常検知と変化検知 第4章 近傍法による異常検知

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

Page 24: 異常検知と変化検知 第4章 近傍法による異常検知

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):異常度

ここにベイズの定理を適用。異常も同様

全標本に対する 正常標本の割合全標本に対する 正常標本の割合

Page 25: 異常検知と変化検知 第4章 近傍法による異常検知

異常検知の実施

1. 近傍数 、異常判定の閾値 の候補をリストアップする。k ath

は0を中心に値を決定する。(正常、異常が一様に分布 している場合、異常度が0に近くなるため)ath

【訓練時(事前準備)】

2.「距離」に何を使うかを決定する。基本はユークリッド   距離をまず試して精度を評価する。

ユークリッド距離で精度が良くない場合、局所外れ値度 で距離を定義するとうまくいく場合がある。(特に、 位置によりデータの濃淡がある場合)

Page 26: 異常検知と変化検知 第4章 近傍法による異常検知

局所外れ値度(さわりだけ)

pp0

qq0

データの密集度を考慮して距離を定義する。

Page 27: 異常検知と変化検知 第4章 近傍法による異常検知

異常検知の実施

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)

Page 28: 異常検知と変化検知 第4章 近傍法による異常検知

異常検知の実施

1. 新たな観測値 に対して、最近傍 個を から選ぶ

【運用時】x

0 k⇤ D

2. なら を異常と判定する。 a(x0) > a⇤th x

0

Page 29: 異常検知と変化検知 第4章 近傍法による異常検知

4.2 マージン最大化近傍法

Page 30: 異常検知と変化検知 第4章 近傍法による異常検知

計量学習:マージン最大化近傍法

M

1

M

1

M

1

D = {(x(1), y

(1)), (x(2), y

(2)), · · · , (x(N), y

(N))}

ラベル 0:正常, 1:異常を表すスカラーデータ M次元ベクトル

ラベル付きデータ

分布の様相に応じて距離尺度をうまく調整し、精度を上げる ことを狙った手法。

Page 31: 異常検知と変化検知 第4章 近傍法による異常検知

計量学習:マージン最大化近傍法行列 A で基準化した2標本の距離

M

1M

1

M

M

スカラーで 表す距離

2次形式!

行列 A をデータの分布をうまく表すように決める

行列 A をデータで学習させる手法を計量学習というこのとき行列 A を「リーマン計量」と呼ぶ

d2A(x0,x00) = (x0 � x

00)TA(x0 � x

00)

Page 32: 異常検知と変化検知 第4章 近傍法による異常検知

計量学習:マージン最大化近傍法

マハラノビスの距離に似ているが、これに 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

Page 33: 異常検知と変化検知 第4章 近傍法による異常検知

から1つ、任意の標本 を取り出したとき、 同一ラベルに属する k 個の最近傍標本を (標的近傍) とする。

計量学習:マージン最大化近傍法

近傍数 k を決め、 を初期値とする。【初期値】

A = IM

DN (n)

x

(n)

近傍数 k=3 のとき、青い点がN (n)

x

(n)

Page 34: 異常検知と変化検知 第4章 近傍法による異常検知

計量学習:マージン最大化近傍法

ターゲット 同一ラベルデータ

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)

Page 35: 異常検知と変化検知 第4章 近傍法による異常検知

計量学習:マージン最大化近傍法条件2ターゲットと異ラベル 標本との2乗距離[ ] ターゲットと同一ラベル

標本との2乗距離[ ]+ c2>

c

※ cは図の灰色の帯の幅に対応

Page 36: 異常検知と変化検知 第4章 近傍法による異常検知

計量学習:マージン最大化近傍法最小化条件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

ターゲットと異なる ラベルのものだけ取り出す

Page 37: 異常検知と変化検知 第4章 近傍法による異常検知

計量学習:マージン最大化近傍法最小化条件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

Page 38: 異常検知と変化検知 第4章 近傍法による異常検知

マージン最大化近傍法の最適化問題

(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として問題ないためその場合、μは下記のように 省略できる

Page 39: 異常検知と変化検知 第4章 近傍法による異常検知

勾配法による最適化

半正定値計画(semi-definite programing) という最適化問題となる。

勾配法固有値計算{ の組み合わせで解く

Page 40: 異常検知と変化検知 第4章 近傍法による異常検知

勾配法によるAの更新

A A� ⌘@ (A)

@A

最小化の更新式 (A)

⌘ :勾配法のステップ幅 勾配法のイメージ

Page 41: 異常検知と変化検知 第4章 近傍法による異常検知

これを扱うには和の範囲を工夫して の中に 正の項しか入らないようにすると を外せる。

  は右図のように角をもつので 微分できない。

勾配法によるAの更新[h]+

[h]+

→ 微分できる目的関数に対する   勾配法との違いから、 「劣勾配法」と呼ぶのが正確

[h]+

[·]+

Page 42: 異常検知と変化検知 第4章 近傍法による異常検知

今日のハイライト

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=

;

Page 43: 異常検知と変化検知 第4章 近傍法による異常検知

今日のハイライト

標的近傍 は 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

Page 44: 異常検知と変化検知 第4章 近傍法による異常検知

の中身

{個

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)

Page 45: 異常検知と変化検知 第4章 近傍法による異常検知

今日のハイライト:確かめてみる (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 )

Page 46: 異常検知と変化検知 第4章 近傍法による異常検知

X

i2N (n)

(x(i)k � x

(n)k )(x(i)

l � x

(n)l )

なんとなく、共分散っぽいものに 見えてくる!

中心 中心

k近傍のデータ k近傍のデータ

今日のハイライト:確かめてみる

Page 47: 異常検知と変化検知 第4章 近傍法による異常検知

今日のハイライト:確かめてみる

(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 )

Page 48: 異常検知と変化検知 第4章 近傍法による異常検知

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

今日のハイライト:確かめてみる

Page 49: 異常検知と変化検知 第4章 近傍法による異常検知

(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系

今日のハイライト:確かめてみる

Page 50: 異常検知と変化検知 第4章 近傍法による異常検知

Aの固有値分解

A U [�]+UT

式(4.12), (4.13)により行列Aが更新されたら

は負の固有値を0で置き換える  ことを意味している[�]+

主成分分析で次元削減をしているのと 似たようなイメージ

A = U�UT

のように固有値分解を行い、下記でAを更新する

Page 51: 異常検知と変化検知 第4章 近傍法による異常検知

アルゴリズム【初期化】近傍数 k, 係数 μ(通常0.5), ステップ幅の初期値 を与える

⌘0

とリーマン計量 Aの初期値を置くA = IM

各クラスの標本数の不均衡がある場合は前処理で 是正しておく

ブートストラップ法で見かけ上の標本数を増やす、 標本数が多いクラスから間引く、等

Page 52: 異常検知と変化検知 第4章 近傍法による異常検知

アルゴリズム

A A� ⌘@ (A)

@A… 最小化の更新式 (A)

【反復】

A U [�]+UT

A = U�UT … 固有値計算

… 負の固有値除外

下記を実行して都度収束判定を行い、収束するまで 繰り返し実行する。収束したらその時の行列 を出力する。

ステップ幅 η は毎回値を更新する

A⇤

Page 53: 異常検知と変化検知 第4章 近傍法による異常検知

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))

Page 54: 異常検知と変化検知 第4章 近傍法による異常検知

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()を解析的に求めるのが難しいので、マージン制約を 取り込んでいたことが、最大マージン近傍法の一つの解釈

Page 55: 異常検知と変化検知 第4章 近傍法による異常検知

Fin