SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM)...

56
カーネル関数を用いた判別分析の方法 サポートベクターマシン(SVM) 2値判別 * ハードマージン SVM * ソフトマージン SVM 多値判別 * Error Correcting Output Coding 1/56

Transcript of SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM)...

Page 1: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

— カーネル関数を用いた判別分析の方法 —

サポートベクターマシン(SVM)

• 2値判別

∗ ハードマージン SVM

∗ ソフトマージン SVM

• 多値判別

∗ Error Correcting Output Coding

1/56

Page 2: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

サポートベクターマシン(Support Vector Machine, SVM)

2値判別のための代表的な学習法

• データから判別境界までの距離を大きくする:マージン最大化規準

• パラメータ推定のための計算:凸2次計画問題(解きやすい)

• カーネル関数を使ったモデリングが可能

2/56

Page 3: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

問題設定

データ:(x1, y1), . . . , (xn, yn)

xi ∈ Rd, yi ∈ {+1,−1}

−6 −4 −2 0 2 4

−4−2

02

4

線形判別器を学習:

H = {sign(f(x)) | f(x) = wTx+ b, w ∈ Rd, b ∈ R}

3/56

Page 4: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

線形分離可能なデータ• データ (x1, y1), . . . , (xn, yn) が 線形分離可能:ある線形判別器 h ∈ H が存在して

h(xi) = yi, ∀i = 1, . . . , n.

−2 −1 0 1 2

−10

12

linearly separable

x1

x2

−6 −4 −2 0 2 4 6−6

−4−2

02

46

linearly non−separable

x1

x2

4/56

Page 5: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

線形分離可能なデータの学習ハードマージンSVM

(x1, y1), . . . , (xn, yn) が f(x) = wTx+ b で線形分離可能なら

yi = +1 =⇒ wTxi + b > 0,

yi = −1 =⇒ wTxi + b < 0.

これらの条件を合わせて記述すると

yi(wTxi + b) > 0, i = 1, . . . , n. (1)

• 式 (1) を満たす w, b のなかでどれが良いか?

5/56

Page 6: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

マージン最大化基準� �ラベル間の距離(マージン)を最大化� �

w!1 x + b1 = 0

w!2 x + b2 = 0

マージン

マージン

wT1 x+ b1 = 0 で分けるほうが

wT2 x+ b2 = 0 で分けるよりも良さそう

6/56

Page 7: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

マージン最大化規準の定式化

x0からwTx+ b = 0までの距離=|wTx0 + b|

∥w∥.

x0

wTx + b = 0

Exercise 1. x0からwTx + b = 0 までの距離が上式で与えられることを確認.

7/56

Page 8: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

マージン最大化規準� �データから判別境界までの距離の最小値を最大化:

maxw, b

mini=1,...,n

|wTxi + b|∥w∥

subject to yi(wTxi + b) > 0, i = 1, . . . , n

� �

マージン最大化は以下と等価

minw∈Rd, b∈R

∥w∥2

2s.t. yi(w

Txi + b) ≥ 1, i = 1, . . . , n

[ (w, b) 7→ (cw, cb), c > 0 で不変.mini yi(wTxi + b) = 1とscaling ]

• 凸2次計画問題:効率的な数値計算法がある.

8/56

Page 9: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

最適解:(w, b).ハードマージンSVMによる判別器:

h(x) = sign(wTx+ b)

note: データが線形分離可能でないとき,最適解は存在しない.

9/56

Page 10: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

線形分離不可能なデータの学習ソフトマージンSVM

学習データ:(x1, y1), . . . , (xn, yn),

xi ∈ Rd, yi ∈ {+1, −1}.

−8 −6 −4 −2 0 2 4 6

−4−2

02

46

linearly non−separable

x1

x2データは一般に線形分離可能ではない

=⇒ ハードマージンSVMでは学習できない

10/56

Page 11: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

線形分離不可能なデータの学習

分離できないデータにペナルティを与える.

線形判別器 : h(x) = sign(wTx+ b).

• yi(wTxi + b) ≥ 1 が成り立っていれば

[データ(xi, yi)に対する損失]= 0

• yi(wTxi + b) < 1 のとき:以下の損失を被る

[データ(xi, yi)に対する損失]= 1− yi(wTxi + b) > 0

11/56

Page 12: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

結局,[損失]= max{1− yi(wTxi + b), 0} と書ける

[損失]の平均

=1

n

n∑i=1

max{1− yi(wTxi + b), 0}

マージン

損失

損失

w!x + b = ±1

12/56

Page 13: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

ソフトマージン SVM の定式化

線形分離不可能なデータを扱いたい

• 小さくしたい量:

∗ マージンの大きさの逆数:∥w∥2

2(マージンを大きく)

∗ 線形分離できない度合い: 1

n

n∑i=1

max{1− yi(wTxi + b), 0}

13/56

Page 14: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

ソフトマージンSVM� �

minw∈Rd,b∈R

C

n

n∑i=1

max{1− yi(wTxi + b), 0}+ 1

2∥w∥2

� �

• 正則化パラメータ C > 0:2つの量のバランスを調整

∗ C は正則化項付きカーネル回帰の 1/λ に相当.

• ソフトマージンSVMも凸2次最適化問題.

14/56

Page 15: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

ソフトマージンSVMによる判別器の推定

-4 -2 0 2 4

-2-1

01

23

-1 0 1 2

-2-1

01

C = 1 として学習

• 線形分離不可能なデータ(左)でも判別器を学習できる.

• 線形分離可能なデータ(右)にも使える

15/56

Page 16: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

ソフトマージン線形判別(Rcode-linearsvm.r)

• 初期設定

> library(kernlab) #kernlab読込(ksvm, predictなどを使う)> library(mlbench) #mlbench読込(mlbench.2dnormals)

• 学習データの生成

> dat <- mlbench.2dnormals(200,cl=2,sd=1)> plot(dat) # データのプロット> x <- dat$x; y <- dat$classes # x:入力,y:ラベル

16/56

Page 17: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

• 線形判別器で学習

> linsvm <- ksvm(x,y,type="C-svc",kernel="vanilladot")> linsvm # 結果を表示Support Vector Machine object of class "ksvm"SV type: C-svc (classification)parameter : cost C = 1 # defaultはC=1Linear (vanilla) kernel function. # 線形カーネルNumber of Support Vectors : 48Objective Function Value : -43.6092Training error : 0.065 # 学習誤差6.5%>> mean(predict(linsvm,x) != y) # 学習誤差を別途計算[1] 0.065 # 確かに6.5%になっている

17/56

Page 18: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

• 予測誤差の計算

> # テストデータの生成> test_dat <- mlbench.2dnormals(1000,cl=2,sd=1)> tx <- test_dat$x; ty <- test_dat$classes> py <- predict(linsvm,tx) # tx のラベルを予測> mean(py != ty) # test_datに対する予測誤差[1] 0.082 # 予測誤差8.2%

18/56

Page 19: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

カーネルSVM

• 線形判別器 h(x) = sign(wTx+ b) では予測精度が低いこともある.

• SVMにカーネル関数を適用.表現力を上げる.

カーネル関数を適切に選べば,複雑な判別境界を学習できる.

-1.0 -0.5 0.0 0.5 1.0

-1.0

0.00.51.0

linear kernel

-1.0 -0.5 0.0 0.5 1.0

-1.0

0.00.51.0

poly: degree=2

-1.0 -0.5 0.0 0.5 1.0

-1.0

0.00.51.0

poly: degree=3

-1.0 -0.5 0.0 0.5 1.0

-1.0

0.00.51.0

Gaussian: sigma=1

-1.0 -0.5 0.0 0.5 1.0

-1.0

0.00.51.0

linear kernel

-1.0 -0.5 0.0 0.5 1.0

-1.0

0.00.51.0

poly: degree=2

-1.0 -0.5 0.0 0.5 1.0

-1.0

0.00.51.0

poly: degree=3

-1.0 -0.5 0.0 0.5 1.0

-1.0

0.00.51.0

Gaussian: sigma=1

線形カーネル ガウシアンカーネル

19/56

Page 20: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

カーネルSVMの定式化

カーネル回帰と同様に,データを高次元に写像

x ∈ Rd 7−→ ϕ(x) ∈ RD

データ (ϕ(x1), y1), . . . , (ϕ(xn), yn)

minw∈RD,b∈R

C

n

n∑i=1

max{1− yi(wTϕ(xi) + b), 0}+ 1

2∥w∥2

20/56

Page 21: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

最適解 w, b が満たす条件を考える.

• 正則化付きカーネル回帰と同じ議論

• w ∈ span{ϕ(x1), . . . ,ϕ(xn)} の範囲で考えれば十分.

φ(x1). . .

φ(xn)

w高次元空間 RD

21/56

Page 22: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

w =

n∑j=1

αjϕ(xj) とおいて目的関数に代入.

k(x,x′) = ϕ(x)Tϕ(x′) とおく.� �

minα,b

C

n

n∑i=1

( n∑j=1

αjk(xj,xi) + b, yi

)+

1

2

n∑i,j=1

αiαjk(xj,xi)

• 損失:ℓ(f(x), y) = max{1− yf(x), 0}

• 最適解:α1, . . . , αn, b −→ w =n∑

i=1

αiϕ(xi)

• 判別器:sign(wTϕ(x) + b

)= sign

(n∑

i=1

αik(xi,x) + b

)� �

22/56

Page 23: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

凸2次最適化問題

minα,b,ξ

C

n

n∑i=1

ξi +1

2

n∑i,j=1

αiαjKij

s. t. 0 ≤ ξi, 1− yi

( n∑j=1

αjKij + b

)≤ ξi, i = 1, . . . , n.

note:

• K = (k(xi,xj))ij ⪰ O なので目的関数は凸2次関数,制約式は1次不等式.

• max{a, 0} = min{ξ | 0 ≤ ξ, a ≤ ξ}

23/56

Page 24: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

ソフトマージン・カーネルSVM(Rcode-kernelsvm.r)

• 初期設定・データ生成

> library(kernlab); library(mlbench)> d<-mlbench.spirals(300,c=1,sd=0.15) # 学習データ> td<-mlbench.spirals(1000,c=1,sd=0.15) # テストデータ

24/56

Page 25: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

• 2次多項式カーネル

> sv2 <- ksvm(d$x,d$c,kernel="polydot",kpar=list(degree=2))> sv2 # 学習結果の表示Hyperparameters : degree = 2 scale = 1 offset = 1Training error : 0.423333> mean(predict(sv2,td$x)!=td$c) #予測誤差の計算[1] 0.436

• 3次多項式カーネル

> sv3 <- ksvm(d$x,d$c,kernel="polydot",kpar=list(degree=3))> sv3 # 学習結果の表示Hyperparameters : degree = 3 scale = 1 offset = 1Training error : 0.166667> mean(predict(sv3,td$x)!=td$c) #予測誤差の計算[1] 0.175

25/56

Page 26: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

• 正則化パラメータのデフォルト値:C = 1.

• degree=2 と degree=3 で予測誤差が大きく異なる.

-1.0 -0.5 0.0 0.5 1.0

-1.0

0.00.51.0

linear kernel

-1.0 -0.5 0.0 0.5 1.0

-1.0

0.00.51.0

poly: degree=2

-1.0 -0.5 0.0 0.5 1.0

-1.0

0.00.51.0

poly: degree=3

-1.0 -0.5 0.0 0.5 1.0

-1.0

0.00.51.0

Gaussian: sigma=1

-1.0 -0.5 0.0 0.5 1.0

-1.0

0.00.51.0

linear kernel

-1.0 -0.5 0.0 0.5 1.0

-1.0

0.00.51.0

poly: degree=2

-1.0 -0.5 0.0 0.5 1.0-1.0

0.00.51.0

poly: degree=3

-1.0 -0.5 0.0 0.5 1.0

-1.0

0.00.51.0

Gaussian: sigma=1

多項式カーネル degree = 2 多項式カーネル degree = 3

26/56

Page 27: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

カーネルSVMのモデルパラメータの選択

• モデルパラメータ:{カーネル,正則化} パラメータ

∗ 多項式カーネル (1 + xTz)degree:degree と C.∗ ガウシアンカーネル exp{−sigma∥x− z∥2}: とsigma と C.sigma のヒューリスティクス: median{1/∥xi − xj∥2 : i = j}

• 交差検証法で予測誤差を推定=⇒ 適切なモデルパラメータを決める.

∗ 評価の規準:

誤り確率 =1

N

N∑j=1

1[ ytest,j = h(xtest,j) ]

27/56

Page 28: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

多項式判別器: {sign(f(x)) | f(x)は k 次以下の多項式}.予測誤差を小さくする次数 k は何か

poly: degree=2 poly: degree=5 poly: degree=8

28/56

Page 29: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

ガウシアンカーネルを用いて学習.sigma が大きいほど,複雑な判別境界を表現できる.

Gauss: sigma=0.1 Gauss: sigma=3 Gauss: sigma=20

29/56

Page 30: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

• ksvm の cross オプションで交差検証法を実行できる.

> sv<-ksvm(x,y,cross=10,kernel=’rbfdot’,kpar=list(sigma=1),C=1)

> cross(sv)

30/56

Page 31: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

交差検証法で適切なモデルパラメータを選択(Rcode-cv-kernelsvm-sigma.r)

• 初期設定,データ生成

> library(kernlab); library(mlbench) #パッケージ読込> dat<-mlbench.spirals(200,c=1.2,sd=0.16)#データ生成> x<-dat$x; y <- dat$classes

• 交差検証法の実行

> s_candidate<-seq(0.01,10,length=20) #sigmaの候補> cv_err <- c()> for(s in s_candidate){#5重cvで予測誤差を推定+ ksv <- ksvm(x,y,cross=5,kernel=’rbfdot’,kpar=list(sigma=s),C=1)+ cv_err <- c(cv_err,cross(ksv))}> # cv_err:各sigmaに対する予測誤差のcv値の配列

31/56

Page 32: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

• 最適なsigma,予測誤差のプロット

> opt_sigma <- s_candidate[which.min(cv_err)]> opt_sigma # 最適なsigma[1] 5.267895> plot(s_candidate,cv_err,lwd=2) # プロット

●●

0 5 10 15 20

0.25

0.30

0.35

0.40

0.45

sigma_candidate

pred

_est

32/56

Page 33: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

数値例 1/2:sigmaを交差検証法で決定.

• 正則化パラメータ C = 1,

●● ● ●

●● ●●

●●

●●

●●

●●

●●

●●

●●

● ●

●●

● ●●

●●

●●

●●

●●

●●

● ●

●●

gaussian kernel: sigma=0.01

●● ● ●

●● ●●

●●

●●

●●

●●

●●

●●

●●

● ●

●●

● ●●

●●

●●

●●

●●

●●

● ●

●●

gaussian kernel: sigma=6.21

!! ! !

!

!! !!

!

!

!!

!!

!

!

!

!

!

!

!!

!

!

!

!

!

!

!

!

!!

!

!

!

!

!

!!

!

!

!

!

!!

!

!

!!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

! !

!

!

!

!

!

!

!

!

!

!

!!

!

!

!

!

!

! !!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!!

!

!

!

!

!

!

!

!

!

!

!

!

!!

!

!

!

!

!!

!!

!

!

!

!

!

!

!

!

!

!

!

!

!

!!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

! !

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

gaussian kernel: sigma=20

sigma = 0.01 最適値 sigma = 6.21 sigma = 20

予測誤差:0.423 予測誤差:0.194 予測誤差:0.209

33/56

Page 34: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

数値例 2/2:C を交差検証法で決定 (C : 1 ∼ 104 · n)

• sigmaに対するヒューリスティクス:sigma = 0.331.

●● ●

●●●

●●●

● ●

●●

●●

●● ●

●●

●●

●●●

●●

●●

● ●

●●

● ●●

●●

● ●

●●●

●●●

●● ●

●●●

●●●

● ●

●●

●●

●● ●

●●

●●

●●●

●●

●●

● ●

●●

● ●●

●●

● ●

●●●

●●●

●● ●

●●●

●●●

● ●

●●

●●

●● ●

●●

●●

●●●

●●

●●

● ●

●●

● ●●

●●

● ●

●●●

●●●

C = 1 最適値 C = 404.9 C = 2 · 106

予測誤差:0.278 予測誤差:0.193 予測誤差:0.250

34/56

Page 35: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

多値判別

• ラベルの種類が3つ以上: y ∈ Y = {1, 2, . . . , G}

∗ 数字の読み取り,アルファベットの読み取り,など

• 方法は大きく分けて2通り

アプローチ1: 複数の2値判別に分割,それぞれ学習,統合.アプローチ2: 多値判別の判別関数を直接学習

35/56

Page 36: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

アプローチ1(2値判別法の組合せ)を解説する.アプローチ2と比較して・・・

• 利点:実装が簡単.既存の2値判別法(SVMなど)を組み合わせるだけ.

• 欠点

∗ 理論的な精度保証が(あまり)ない∗ 各クラスのデータ数に偏りがあるとき予測精度が低い傾向.

36/56

Page 37: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

• one-vs-one 法

• one-vs-all (one-vs-rest) 法

• 一般化:Error correcting output coding (ECOC)

37/56

Page 38: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

one-vs-one 法

データ:(x1, y1), . . . , (xn, yn).

学習法:2クラス間の学習� �

1. 2つのラベル y, y′ ∈ Y を選ぶ.

2. ラベル y, y′ のデータのみを使う.2値判別の仮説を学習.

hyy′(x) =

+1, x のラベルを y と予測−1, x のラベルを y′ と予測

3. ラベルのすべての組合せy, y′について hyy′(x)を求める.

• G(G− 1)/2の仮説.ただし hyy′(x) = −hy′y(x).� �

38/56

Page 39: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

予測法:多数決� �

1. 新たな入力 x

2. ラベル y のスコア score(y) を計算:

score(y) = |{y′ ∈ Y |hyy′(x) = +1}|

意味:ラベル y に関する仮説 hy1, . . . , hyG の中で,x のラベルを y と予測する仮説の数.

3. score(y) の値が最大になる y を x の予測ラベルとする.

y = argmaxy∈Y

score(y)

� �

39/56

Page 40: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

例:one-vs-one 法• 学習:多値判別を複数の2値判別に分割

training data red(1) vs. green(2)

green(2) vs. black(3) red(1) vs. black(3)

( ha,b(x) : ラベルが a なら +1, b なら −1 を返す )

40/56

Page 41: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

• 予測:多数決による予測.図のX のラベルを予測.

score(y) :=「Xのラベルを y と判別する判別器の数」

y score(y)

red(1) – h1,2 = −1 h1,3 = +1 1

green(2) h2,1 = +1 – h2,3 = +1 2

black(3) h3,1 = −1 h3,2 = −1 – 0

したがって X の予測ラベルは green.

41/56

Page 42: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

例:正規分布モデルLinear kernel Gaussian kernel

42/56

Page 43: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

one-vs-all (one-vs-rest) 法

学習法:

1. ラベル y とそれ以外を判別.判別関数 fy(x) を学習:

sign(fy(x)) =

+1, x のラベルを y と予測

−1, x のラベルを y 以外と予測

2. 上のプロセスを y ∈ Y について実行.fy(x), y ∈ Y を得る.

43/56

Page 44: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

x のラベルを予測:

判別関数による予測� �

1. fy(x), y ∈ Y の値を計算 (実数値)

2. 最大値をとるラベルを予測とする:y = argmaxy∈Y

fy(x).� �

仮説による予測� �

1. すべての仮説の出力 hy(x) = sign(fy(x)), y ∈ Y を計算.

2. hy(x) = +1 となるラベル y を予測ラベルとする.

y = {y ∈ Y |hy(x) = +1}.

note: +1が複数 or ひとつもない ⇒ 予測ラベルが決まらない� �

44/56

Page 45: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

例:one-vs-all法ラベル:● ● ●.残りのラベルを●でプロット.

training data black(1) vs rest

red(2) vs rest green(3) vs rest

X の予測ラベルは green.

45/56

Page 46: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

誤り訂正出力符号化法(ECOC)

• 誤り訂正符号の考え方を応用

• one-vs-one,one-vs-all の一般化:

References:

Dietterich, Bakiri, Solving Multiclass Learning Problems via Error Correcting Output

Codes, Journal of Artificial Intelligence Research, vol. 2 Issue 1, pp. 263-286,

1994.

Allwein, Schapire, Singer, Reducing multiclass to binary: a unifying approach for

margin classifiers, The Journal of Machine Learning Research, vol. 1, pp. 113-141,

2001.

46/56

Page 47: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

学習� �

• 各ラベル y に符号語 cy = (cy1, . . . , cyT ) ∈ {+1,−1, 0}T を対応させる.

例:

t (T = 5)

label 1 2 3 4 5

1 (c1) −1 −1 −1 −1 0

2 (c2) +1 +1 −1 0 −1

3 (c3) 0 −1 +1 +1 −1

4 (c4) +1 0 −1 +1 +1

• t = 1, . . . , T に対して

∗ (xi, yi) を 2値データ (xi, cyit) に変換 (i = 1, . . . , n).∗ cyit = 0 のデータのみ用いて,2値仮説 ht(x) を学習.� �

47/56

Page 48: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

予測� �

• x に対して ht(x) ∈ {+1,−1}, t = 1, . . . , T を計算.

• (h1(x), . . . , hT (x)) に最も近い cy = (cy1, . . . , cyT ) を探す.

対応するラベル H(x) を予測ラベルとする.

近さの測り方:ハミング距離.a, b ∈ {+1,−1, 0}に対して

d(a, b) =1− ab

2=

1, a = b, ab = 0

1/2, ab = 0

0, a = b = 0

H(x) = argminy∈Y

T∑t=1

d(cyt, ht(x))

(この定義だと距離の公理は満たさないが,便宜上距離とよぶ)� �

48/56

Page 49: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

符号語cy (例:ラベル数4)

• one-vs-one:

t

label 1 2 3 4 5 6

1 (c1) +1 +1 +1 0 0 0

2 (c2) −1 0 0 +1 +1 0

3 (c3) 0 −1 0 −1 0 +1

4 (c4) 0 0 −1 0 −1 −1

∗ 各列に対応して,元データを2値に変換して学習.例:t = 1 ではラベル 1, 2 のデータのみ使用.

∗ ハミング距離で予測:score(y)と同じ:cytが0でない要素どうしを比較

49/56

Page 50: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

• one-vs-all:仮説による予測

t

label 1 2 3 4

1 (c1) +1 −1 −1 −1

2 (c2) −1 +1 −1 −1

3 (c3) −1 −1 +1 −1

4 (c4) −1 −1 −1 +1

50/56

Page 51: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

符号間の最小距離:ρ = miny,y′∈Y, y =y′

T∑t=1

d(cyt, cy′t).

• t 列目の符号化 → 仮説 ht(x) ∈ {+1,−1}

• ECOCで得られる仮説:H : X → Y

L(ht) =1

n

n∑i=1

d(cyit, ht(xi)):{(xi, cyit)}ni=1に対する学習誤差.

cyit = 0なら loss は1/2,そうでなければ0-1 lossで測る.

51/56

Page 52: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

� �

H(x)の学習誤差 L(H) =1

n

n∑i=1

I[H(xi) = yi]

について次式が成立:

L(H) ≤ 2T

ρ· 1T

T∑t=1

L(ht),

ρ

T(符号間距離) 大きい =⇒ 学習誤差 小さい

� �

52/56

Page 53: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

L(H)の評価式の証明: H(xi) = yi のとき,

∃y′ = yi,

T∑t=1

d(cyit, ht(xi)) ≥T∑

t=1

d(cy′t, ht(xi)) (2)

符号語 cyi, cy′ に対して T0, T−1を定義:

T0 = {t | cyitcy′t = 0}, T−1 = {t | cyitcy′t = −1}.

次式が成立 :

t ∈ T0 ⇒ d(cyit, ht(xi)) + d(cy′t, ht(xi)) ≥

1

2,

t ∈ T−1 ⇒ d(cyit, ht(xi)) + d(cy′t, ht(xi)) = 1.

53/56

Page 54: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

(2)より

T∑t=1

d(cyit, ht(xi)) ≥1

2

T∑t=1

{d(cyit, ht(xi)) + d(cy′t, ht(xi))

}≥ 1

2

∑t∈T0∪T−1

{d(cyit, ht(xi)) + d(cy′t, ht(xi))

}

≥ 1

4|T0|+

1

2|T−1| =

1

2

T∑t=1

d(cyit, cy′t) ≥ρ

2

したがって

H(xi) = yi =⇒ 1 ≤ 2

ρ

T∑t=1

d(cyit, ht(xi)) よって

L(H) =1

n

n∑i=1

1[H(xi) = yi] ≤1

n

n∑i=1

2

ρ

T∑t=1

d(cyit, ht(xi)) =2T

ρ· 1T

T∑t=1

L(ht)

54/56

Page 55: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

例:one-vs-one と one-vs-all の学習誤差

|Y| = G とする.

• one-vs-one:

ρ =G2 −G+ 2

4, T =

G(G− 1)

2=⇒ 2T

ρ< 4

ρ の計算:1bitは(+1,-1),他はどちらかが0を含むので G(G−1)/2−12 + 1.

∗ 1T

∑Tt=1 L(ht) < 1/4 なら意味ある結果.

∗ ただし cyt = 0 となることが多いので,L(ht) が大きめになる.

• one-vs-all: ρ = 2, T = G =⇒ 2T

ρ= G.

∗ 1T

∑Tt=1 L(ht) =

1T

∑Tt=1 L(ht) < 1/G なら意味ある結果.

55/56

Page 56: SVM - 東京工業大学...サポートベクターマシン (Support Vector Machine, SVM) 2値判別のための代表的な学習法 データから判別境界までの距離を大きくする:マージン最大化規準

• リード・ソロモン符号 (線形符号の一種):cyt ∈ {±1}.

t ∈ [ 1, ⌊(T − 1)/2⌋ ] such that G ≤ 2T−2t,

=⇒ ρ ≥ 2t+ 1,2T

ρ≤ 2T

⌊T − log2G⌋+ 1= 2 + εT,G, lim

T→∞εT,G = 0,

=⇒ 1

T

T∑t=1

L(ht) =1

T

T∑t=1

L(ht) <1

2 + εT,G. なら意味ある結果.

56/56