one-class support vector machine ocsvm...one-class svm (ocsvm) とは...

21
One-Class Support Vector Machine OCSVM 0 明治大学 理⼯学部 応用化学科 データ化学⼯学研究室 ⾦⼦ 弘昌

Upload: others

Post on 12-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

One-Class Support Vector MachineOCSVM

0

明治大学 理⼯学部 応用化学科データ化学⼯学研究室 ⾦⼦ 弘昌

Page 2: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

One-Class SVM (OCSVM) とは︖サポートベクターマシン (Support Vector Machine, SVM) を

領域推定問題に応用した⼿法

SVM では2つのクラス (1のクラス・-1のクラス) があったが、OCSVM では1クラスだけ (すべてのサンプルが同じクラス)

データ密度を連続的に推定できる

カーネルトリックにより非線形に拡張可能

外れ値検出・外れサンプル検出や、モデルの適用範囲の設定に応用される

• https://datachemeng.com/outlierdetection/• https://datachemeng.com/numberofsamplesad/

1

Page 3: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

SVMのおさらい︓マージン最大化 2

x1

x2

クラス1

クラス-1

マージンを最大化するように判別関数を決める︕

2 21 2

2 2

w w=

+wマージン =

(点と直線との距離で計算)

1 2 1 1 2 2( , )f x x w x w x b

b

= + += +xw

Page 4: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

SVMのおさらい︓サポートベクター 3

x1

x2

クラス1

クラス-1

サポートベクター

・・・他のクラスのサンプルと最も近いところにいるサンプルf(x) = 1 (クラス1)f(x) = -1 (クラス-1)

Page 5: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

SVMのおさらい︓スラック変数の導⼊ 4

x1

x2スラック変数 ξ を導⼊︕

ξi > 1

0 < ξi < 1

ξi = 0

サンプルごとの ξi の和

を最小化1

n

ii

ξ=

n: モデル構築用サンプル数

Page 6: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

SVMのおさらい︓最小化する関数 ||w|| / 2 の最小化→ 計算の都合上、 ||w||2 / 2 の最小化

ξi の和の最小化

5

C : 2つの項のバランスを決める係数x(i): i 番目のサンプルの説明変数y(i): i 番目のサンプルの値 (1 もしくは -1)

2

1

1

2

n

ii

C ξ=

+ w の最小化

ただし、 ( )( ) ( )0, 1i ii iy f ξξ ≥ ≥ −x

Page 7: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

OCSVMの考え方 6

x1

x2

原点からの距離 (マージン) を最大化するように直線を決める︕

2 21 2

b b

w w=

+wマージン =

(原点と直線との距離で計算)

( )( )

1 2 1 1 2 2,

0

f x x w x w x b

b b

= + −

= − >xw

0

サポートベクター

Page 8: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

原点からの距離で大丈夫︖ 7

特に標準化 (オートスケーリング) したあととか、原点を中⼼にしてサンプルが散らばっているのでは︖

外れ値ほど原点の近くになるように、⾼次元空間に写像すれば大丈夫︕

Page 9: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

⾼次元空間で考える 8

�(x1)

�(x2)原点からの距離 (マージン) を最大化するように直線を決める︕

2 21 2

b b

w w=

+wマージン =

(原点と直線との距離で計算)

( ) ( )( ) ( ) ( )( ) ( )

1 2 1 1 2 2,

0

f x x w x w x b

b b

φ φ φ φ

φ

= + −

= − >x w

0

サポートベクター

SVMと同様に、カーネルトリックにより � そのものを考える必要はなくなる

Page 10: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

マージンの最大化 9

b

wの最大化

21

2b−w の最小化

Page 11: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

原点付近にサンプルがあるときは︖ 10

�(x1)

�(x2)

0

スラック変数 ξ を導⼊︕

ξi > 0

ξi = 0 サンプルごとの ξi の和

を最小化1

n

ii

ξ=

n: サンプル数

Page 12: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

一緒に最小化 11

2

1

1 1

2

n

ii

b ξnν =

− + w の最小化

重みを 1

nνという形でおいたのは、

あとで分かりやすくなるため

ただし、

0iξ ≥

( )( )iib ξφ ≥ −x w

ν (ニュー) の範囲は、0 < ν ≤ 1

x(i) : i 番目のサンプルの説明変数

Page 13: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

重み w と b を求めるLagrangeの未定乗数法

• ラグランジュ乗数ξi、βi (i=1, 2, ..., n) を導⼊

12

( )( ){ }2

1 1 1

1 1

2

n n ni

i i i i ii i i

G ξ b b ξ ξn

α φ βν = = =

= + − − − + − w w x

w、b、ξiに関してGを最小化し、ξi、βiに関してGを最大化

w、b、ξiに関してGが極小

G をw、b、ξi それぞれで偏微分して 0 とする

Page 14: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

偏微分して0 13

( )( )1

ni

ii

α φ=

=w x

( )11, 2, ,i i i n

nα β

ν+ = = …

1

1n

ii

α=

=

G を w で偏微分して0

G を b で偏微分して0

G を ξi で偏微分して0

これらを使ってG を変形すると・・・

( )( ) ( )( )T

1 1

1

2

n ni j

i ji j

G α α φ φ= =

= x x

また、 1, 0i i in

α β βν

+ = ≥ より、 10 i n

αν

≤ ≤

Page 15: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

二次計画問題 14

制約

G を ξi に対して最大化する二次計画問題を解くと ξi が求まる

のもとで、

( )( )T( )

1

nii

ii

yα φ=

=w xw が求まる

10 i n

αν

≤ ≤1

1n

ii

α=

=

( )( ) ( )( )T

1 1

1

2

n ni j

i ji j

G α α φ φ= =

= x x

Page 16: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

直線の式を求める 15

( )

( )( )

1

( )

,n

ii

i

f b

K b

φ

α=

= −

= −

x x w

x x

( )( ) ( )

S 1S

1,

ni j

ij i

b Kn

α∈ =

= x x

S : サポートベクターの集合nS : サポートベクターの個数

( ) ( ) ( )T( ) ( ) ( ) ( ),i j i jK φ φ=x x x xK︓カーネル関数

カーネルトリックについてはこちら: https://datachemeng.com/supportvectormachine/

Page 17: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

G の変形 16

( )( ) ( )

( ) ( )

( ) ( )

1 1

1 1

1,

2

n ni j

i i j ji j

n n

i i i i ii i

G K

y

α α α α

ε α α α α

∗ ∗

= =

∗ ∗

= =

= − − −

− + + −

x x

( ) ( ) ( )T( ) ( ) ( ) ( ),i j i jK φ φ=x x x xK︓カーネル関数

カーネルトリックについてはこちら

Page 18: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

カーネル関数の例線形カーネル

ガウシアンカーネル (使われることが多い)

多項式カーネル

17

( )( ) ( ) ( ) ( )T,i j i jK =x x x x

( ) ( )2( ) ( )

2( ) ( ) ( ) ( )2

, exp exp2

i j

i j i jK γσ

− = − = − −

x xx x x x

( ) ( )( ) ( ) ( ) ( )T, 1di j i jK λ= +x x x x

Page 19: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

OCSVMのまとめSupport Vector Machine (SVM) [1] を領域推定問題に応用

18

0

写像Φ

元に戻す

x1

x2

f (x) = 0 x1

x2

f (x) = 0

[1] V.N. Vapnik, The nature of statistical learning theory, Springer, New York, 1999.

( ) ( )( )

1

,n

ii

i

f K bα=

= −x x x

( ) ( ) ( )( )

( ) ( ) ( )

2( )

,

=exp

Ti i i

i

K

γ

=

− −

x x x x

x x

φ φカーネル関数

Page 20: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

OCSVMの使い方f(x) が 0 より小さくなったら、x は外れ値

f(x) の値が大きいほど、データ密度が⾼い

19

Page 21: One-Class Support Vector Machine OCSVM...One-Class SVM (OCSVM) とは サポートベクターマシン(Support Vector Machine, SVM) を 領域推定問題に応用した 法 SVM では2つのクラス(1のクラス・-1のクラス)

ν, γ の決め方グラム⾏列 (すべてのサンプルの間でカーネル関数を計算した⾏列) の

分散が最大になるように γ を最適化する• グラム⾏列がばらついていたほうがデータセットをよく表現できるため• γ の候補の例: 2-20, 2-19, …, 29, 210

ν = 0.003 などとする• νは外れ値の割合の下限、といった意味合いをもつ• ある変数が正規分布に従うとき、平均値から標準偏差の何倍かの

範囲内にサンプルがある確率は決まる。1 からその確率を引くと、外れサンプルになる確率になる⁃ (平均値 ± 標準偏差) 内にサンプルがある確率 : およそ 68.3 %→ ν = 1 − 0.683 = 0.317⁃ (平均値 ± 2×標準偏差) 内にサンプルがある確率 : およそ 95.5 %→ ν = 1 − 0.955 = 0.045⁃ (平均値 ± 3×標準偏差) 内にサンプルがある確率 : およそ 99.7%→ ν = 1 − 0.997 = 0.003

• 結果が不適切であったときは、 ν を変えて検討する

20