96
名大集中講義:機械学習特論 ノート (2) カーネル法 1. カーネル関数を用いた回帰分析の方法 2. 正則化と交差検証法 3. カーネル関数を用いた判別分析の方法(SVM2値判別 多値判別 1/96

名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

名大集中講義:機械学習特論 ノート(2) カーネル法

1. カーネル関数を用いた回帰分析の方法

2. 正則化と交差検証法

3. カーネル関数を用いた判別分析の方法(SVM)

• 2値判別• 多値判別

1/96

Page 2: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

回帰分析

• データ:(x1, y1), . . . , (xn, yn), xi ∈ Rd, yi ∈ R.

• y を xの関数で説明する

• 用語の説明

∗ x:入力(独立変数・説明変数)∗ y:出力(従属変数・目的変数)

2/96

Page 3: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

データとモデリング

• 単純な統計モデルでは対応できない(かもしれない)−→ 複雑なモデルを使いたい

• 複雑なモデルを使うと

∗ 計算が大変∗ データへの過剰適合(過学習, overfitting)が心配

3/96

Page 4: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

過剰適合

-2 -1 0 1 2

-20

24

6

x

y

• データ点に適合し過ぎている.予測精度は低い.4/96

Page 5: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

表現力が高いモデルの構成

• 例:データ x ∈ R を高次元空間 R1000に非線形変換

x ∈ R 7−→ ϕ(x) ∈ R1000

• 高次元空間における線形モデルでデータ解析

5/96

Page 6: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

� �「複雑な統計モデル」を「非線形変換+線形モデル」で実現� �

• 適切な変換 x 7−→ ϕ(x) を選ぶと,計算量はあまり増えない.

• 過学習には,正則化 + 交差検証 で対処.

6/96

Page 7: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

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

• 最小2乗法のカーネル表現

7/96

Page 8: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

例:多項式回帰

データ:{(x1, y1), . . . , (xn, yn)} ∈ R ×R.

-15 -10 -5 0 5 10 15

-0.5

0.0

0.5

1.0

x

y

• 多項式回帰:y = a0 + a1x+ a2x2 + · · ·+ aD−1x

D−1 + ε

で当てはめ.(ε : ノイズ項)

パラメータ (a0, a1, . . . , aD−1) ∈ RD に関して線形なので線形モデル.

8/96

Page 9: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• 多項式回帰の解釈:

∗ データ x を,以下の ϕ(x) で高次元にマップ.

x ∈ R 7−→ ϕ(x) = (ϕ0(x), ϕ1(x), . . . , ϕD−1(x))T ∈ RD,

ϕk(x) = xk, k = 0, 1, . . . , D − 1

∗ データ (ϕ(x1), y1), . . . , (ϕ(xn), yn) の関数関係を高次元空間 RD 上の線形モデルで推定:

y = a0ϕ0 + a1ϕ1 + a2ϕ2 + · · ·+ aD−1ϕD−1 + ε

−→ 推定パラメータ a = (a0, . . . , aD−1)T

∗ f(x) = aTϕ(x) を使って x に対する y の値を予測.

9/96

Page 10: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

最小2乗法:デザイン行列を用いた表現

• デザイン行列 Φ = (ϕ(x1), . . . ,ϕ(xn)) ∈ RD×n.

• 観測データ y = (y1, . . . , yn)T.

n∑i=1

(yi − aTϕ(xi))2 = ∥y −ΦTa∥2 −→ a について最小化

rankΦ = D のとき:

最小2乗法の解 : a = (ΦΦT)−1Φy

10/96

Page 11: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

最小2乗法:カーネル関数を用いた表現

mina∈RD

n∑i=1

(yi − aTϕ(xi))2

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

直交成分は2乗損失に影響しない.

φ(x1). . .

φ(xn)

a

11/96

Page 12: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• a =n∑

j=1

βjϕ(xj) = Φβ, β = (β1, . . . , βn)T

−→ 2乗誤差に代入� �

n∑i=1

(yi − ϕ(xi)Ta)2 = ∥y −ΦTΦβ∥2 −→ min

β

極値条件 : ΦTΦΦT Φβ︸︷︷︸a

= ΦTΦy

� �

12/96

Page 13: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• k(x, x′) := ϕ(x)Tϕ(x′) ∈ R とおく (カーネル関数). 行列 K ∈ Rn×n を K = ΦTΦ とおく.� �

Kij = ϕ(xi)Tϕ(xj) = k(xi, xj),

極値条件 : ΦTΦΦTΦβ = ΦTΦy ⇐⇒ K2β = Ky� �

• 極値条件の式を解く:K, y から β が定まる(一意とは限らない)

f(x) = ϕ(x)Tn∑

i=1

ϕ(xi)βi︸ ︷︷ ︸a

=n∑

i=1

k(x, xi)βi

note: 解 β は一意でなくても f(x) は一意.

13/96

Page 14: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

グラム行列

データ x1, . . . ,xn,関数 k(x,x′).

グラム行列 : K =

k(x1,x1) · · · k(x1,xn)

... . . . ...

k(xn,x1) · · · k(xn,xn)

∈ Rn×n.

要素で書くと Kij = k(xi,xj).

14/96

Page 15: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

カーネル回帰分析の方法• データ:(x1, y1), . . . , (xn, yn), xi ∈ Rd, y ∈ R.• 統計モデル:y = aTϕ(x) + ε

カーネル回帰分析� �

1. カーネル関数 k(x,x′) = ϕ(x)Tϕ(x′) を定義する.

2. グラム行列 K, Kij = k(xi,xj), i, j = 1, . . . , n を計算.

3. K2β = Ky を β について解く.

4. 回帰関数 f(x) =n∑

i=1

k(x,xi)βi

� �15/96

Page 16: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

以下は同じ推定:

• モデルy = a1ϕ1(x) + · · ·+ aDϕD(x) + ε で最小2乗推定

• カーネル関数k(x,x′) = ϕ(x)Tϕ(x′) によるカーネル回帰� �

ϕ(x) ではなく k(x, x′) を使う理由?� �

16/96

Page 17: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

カーネル回帰分析の特徴

k(x,x′) = ϕ(x)Tϕ(x′) だけから推定量が計算できる.

• 写像先 RD の次元が D =∞ でも,k(x,x′) が簡単に計算できることがある.

例:ガウシアンカーネル (後述)

• 1次式モデル y = aTx+ ε とほぼ同じ計算手順.表現力が大幅アップ!

17/96

Page 18: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

カーネル関数の例: x ∈ Rd 7−→ ϕ(x) ∈ RD.

• 線形カーネル (Rのオプションは vanilladot):D = d

k(x,x′) = xTx′, (ϕ(x) = x)

統計モデル: y = aTϕ(x) + ε = aTx+ ε

18/96

Page 19: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• 多項式カーネル (polydot):D = (degree+d)!degree! d!

k(x,x′) = (1 + xTx′)degree, degree = 1, 2, 3, . . .

統計モデル:y = aTϕ(x) + ε.

ϕ(x):degree次以下のすべての単項式からなるベクトル.

d = 2, degree = 2のとき

ϕ(x) = (1,√2x1,√2x2, x

21, x

22,√2x1x2)

T .

ϕ(x)Tϕ(z) = 1 + 2x1z1 + 2x2z2 + x21z

21 + x2

2z22 + 2x1x2z1z2

= (1 + x1z1 + x2z2)2

19/96

Page 20: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• ガウシアンカーネル (rbfdot):D =∞

k(x,x′) = exp{−sigma · ∥x− x′∥2}, sigma > 0

d = 1, sigma = 1のとき:

ϕ(x) = (ϕ0(x), ϕ1(x), ϕ2(x), · · · ),

ϕj(x) =xje−x

2/2

√j!

, x ∈ R

20/96

Page 21: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• R によるグラム行列の生成

> # x: データ行列 (サイズ = サンプル数 * 次元)>> # 多項式カーネル(degree=2)> K <- kernelMatrix(polydot(degree=2),x)>> # ガウシアンカーネル(sigma=3)> K <- kernelMatrix(rbfdot(sigma=3),x)

21/96

Page 22: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

多項式カーネル回帰分析

• 初期設定

> library(kernlab) #ライブラリ読込> deg <- 6 #多項式カーネルの次数を設定> n <- 100 #データ数 n=100

• データの生成

> x <- matrix(runif(n,min=-3,max=3))> y <- sin(pi*x)/x+rnorm(n,sd=0.4)

• 多項式カーネル(polydot)のグラム行列の生成

> K <- kernelMatrix(polydot(degree=deg),x)

22/96

Page 23: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• 推定量の計算(2乗誤差の最小化)> #2乗誤差とその勾配> f <- function(z)sum((K%*%z-y)^2)> g <- function(z)as.vector(2*K%*%(K%*%z-y))> #2乗誤差の最小化> beta <- optim(rep(0,n),f,g,method="BFGS")$par

• 予測値の計算> px <- matrix(seq(-3,3,l=300)) #予測点> # px上でのyの予測値> py<-kernelMult(polydot(degree=deg),px,x,beta)

補足:f<-kernelMult(kernel,x1,x2,beta)はfi =

∑nj=1 k(x1i, x2j)βjを計算.

23/96

Page 24: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• R-code:2乗損失の最小化でパラメータ β を計算.(beta<-optim(· · · ) の行)• 一般化逆行列(MASS::ginv)でも計算可だが数値的に不安定.

多項式カーネルによる回帰分析の結果:> plot(x,y,lwd=3);lines(px,py,lwd=4,col=2) #プロット

●●

●●

−3 −2 −1 0 1 2 3

−10

12

3

degree=2

x

y

●●

●●

−3 −2 −1 0 1 2 3

−10

12

3

degree=6

x

y

●●

●●

−3 −2 −1 0 1 2 3

−10

12

3

degree=9

x

y

degree= 2 degree= 6 degree= 9

24/96

Page 25: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

グラム行列の性質:非負定値性k(x,x′) = ϕ(x)Tϕ(x′), Φ = (ϕ(x1), . . . ,ϕ(xn)) とすると

K = ΦTΦ.

Kは対称非負定値行列

∀c ∈ Rn, cTKc ≥ 0, K ⪰ Oと書く.

cTKc = cTΦTΦc = ∥Φc∥2 ≥ 0

25/96

Page 26: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• k(x,x′) = tanh(1 + xTx′), tanh(z) =ex − e−x

ex + e−x

カーネル関数でない.In[1]:= Tanh[x]

In[4]:= Plot[Tanh[x], {x, $3, 3}]

Out[4]=!3 !2 !1 1 2 3

!1.0

!0.5

0.5

1.0

∗ x1 = (1, 0, . . . , 0)T ,x2 = (2, 0, . . . , 0) とすると

K =

(k(x1,x1) k(x1,x2)

k(x2,x1) k(x2,x2)

).=

(0.96403 0.99506

0.99506 0.99991

).

固有値は 1.97718,−0.0132481. 非負定値でない.26/96

Page 27: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

— データへの過剰適合と正則化 —

27/96

Page 28: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

データへの過剰適合(過学習)

• 単純なモデルでは対応できなさそうなデータの解析−→ 自由度の大きなモデルを使う.• モデルの自由度が大きすぎてもうまくいかない.

自由度:小 自由度:中 自由度:大

● ●

●●

●●

● ●

● ●

●●

●●

−5 0 5

−0.5

0.0

0.5

1.0

1.5

x

y

● ●

●●

●●

● ●

● ●

●●

●●

−5 0 5

−0.

50.

00.

51.

01.

5

x

y

● ●

●●

●●

● ●

● ●

●●

●●

−5 0 5

−0.

50.

00.

51.

01.

5

x

y

28/96

Page 29: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

正則化:モデルの自由度を調整� �考え方:自由度の大きいモデル + パラメータを適切に制約� �

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

線形回帰モデル : y = aTϕ(x) + b+ ε

⇐⇒ y =n∑

j=1

βjk(xj,x) + b+ ε, a =n∑

j=1

βjϕ(xj)

正則化:∥a∥2 = ∥∑n

j=1 βjϕ(xj)∥2 の大きさを制約する.

∥a∥2 =∑i,j

βiβjϕ(xi)Tϕ(xi) =

∑i,j

βiβjk(xi,xj)

29/96

Page 30: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

正則化パラメータ λ > 0.� �

minβ, b

n∑i=1

{yi −

( n∑j=1

βjk(xj,xi) + b

)}2

+ λ∑i,j

βiβjk(xi,xj)

正則化項

=⇒ 最適解 β1, . . . , βn, b. f(x) =n∑

j=1

βjk(xj,x) + b

� �

ベクトル・行列で表すと

minβ,b∥y − (Kβ + b1)∥2 + λβTKβ

30/96

Page 31: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

λ に対してうまく r を選ぶ:大きい λ ⇔小さい r

損失(2乗誤差)

正則化

!a!2 " r2

!a!2 " R2

31/96

Page 32: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

正則化パラメータ λ > 0.

λ:大 λ:中 λ:小

●●

●●●

●●●●

●●●

●●

●●

●●

●●

●●

●●

●●

●●●

●●

●●

●●

●●

1900 1920 1940 1960 1980 2000

13.5

14.0

14.5

15.0

15.5

16.0

16.5

lambda=10000

Year

Tem

pera

ture

●●

●●●

●●●●

●●●

●●

●●

●●

●●

●●

●●

●●

●●●

●●

●●

●●

●●

1900 1920 1940 1960 1980 2000

13.5

14.0

14.5

15.0

15.5

16.0

16.5

lambda=1

Year

Tem

pera

ture

●●

●●●

●●●●

●●●

●●

●●

●●

●●

●●

●●

●●

●●●

●●

●●

●●

●●

1900 1920 1940 1960 1980 2000

13.5

14.0

14.5

15.0

15.5

16.0

16.5

lambda=1e−05

Year

Tem

pera

ture

小さい ←− モデル自由度(表現力) −→ 大きい

32/96

Page 33: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• 極値条件 (凸最適化なので大域解)

minβ,b∥y −Kβ − b1∥2 + λβTKβ

=⇒

(1 K + λI

n 1TK

)(b

β

)=

(y

1Ty

), Kij = k(xi,xj),

f(x) =∑n

i=1 βik(xi,x) + b

• カーネル関数 k(x,x′) だけから計算できる.(ϕ(x) は単体では現れない)

33/96

Page 34: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

正則化付きカーネル回帰(Rcode-kernelRegression.r)

• 初期設定

> library(kernlab) # パッケージ読込> sig <- 3; l <- 1; # パラメータ: sigma, λ> n <- 100 # データ生成:データ数 n=100> x <- matrix(runif(n,min=-4,max=4))> y <- sin(pi*x)/x + rnorm(n,sd=0.5)

• ガウシアンカーネル(rbfdot)のグラム行列

> K <- kernelMatrix(rbfdot(sigma=sig),x)

34/96

Page 35: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• 推定量の計算:2乗誤差最小 [optim()関数]

> f <- function(z){w <- z[-(n+1)];+ (sum((cbind(K,1)%*%z-y)^2)+l*w%*%K%*%w)/2}> g <- function(z){w <- z[-(n+1)];+ rbind(K,1)%*%(cbind(K,1)%*%z-y)+c(l*K%*%w,0)}> s <- optim(rep(0,n+1),f,g,method="BFGS")$par> beta <- s[1:n]; b <- s[n+1]

35/96

Page 36: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• 予測

> px <- seq(-4,4,l=100) # 予測点> py <- kernelMult(rbfdot(sigma=sig),px,x,beta)+b> plot(x,y);lines(px,py,lwd=4,col=2) #プロット

データ点と推定結果のプロット• バンド幅パラメータ:sigma = 3

• 正則化パラメータ:λ = 1

●●

●● ●

●●

● ●

●●

●●

●●

●●

●●

●●

● ●

−4 −2 0 2 4

−10

12

34

x

y

36/96

Page 37: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

モデル選択:学習誤差と予測誤差

• 学習データ:(x1, y1), . . . , (xn, yn) ∼i.i.d. P

• 学習データから推定された回帰関数 f(x)

学習誤差 :1

n

n∑i=1

(f(xi)− yi

)2(データから計算可能)

予測誤差 : E[(f(x)− y

)2](データだけでは分からない)

37/96

Page 38: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

多項式回帰

4 6 8 10 12

0.00

0.02

0.04

0.06

model complexity

erro

r

training errorprediction error

●●

●●

●●

−3 −2 −1 0 1 2 3

−0.

20.

20.

40.

60.

81.

0

x

y

degree=6degree=13

過学習� �

• 多項式の次数高いと・・・∗ 学習誤差は小さくなる∗ 予測誤差は大きくなる

−→ モデル選択:モデルの自由度を適切に設定.� �38/96

Page 39: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

カーネル法におけるモデル選択

• カーネル回帰 f(x) の自由度を調整するパラメータ:

∗ カーネルパラメータ:kernel par

・多項式カーネルの degree

・ガウシアンカーネルの sigma

∗ 正則化パラメータ:λ > 0, loss(β) + λβTKβ

• これらを適切に定める.

39/96

Page 40: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

モデルパラメータ推定の方針� �

• いろいろな mpar = (kernel par, λ) について・・・

∗ mpar に対する回帰関数:fmpar(x)

∗ データから fmpar(x) の予測誤差を推定−→ empar

• emparを最小にするモデルパラメータmparを選択.� �

emparの計算法:(K重)交差検証法

40/96

Page 41: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

K重交差検証法 (K-fold cross validation)

• データをK個のグループに分割

推定 予測

推定 予測 推定

推定予測

(x1, y1) (x2, y2) · · · (xn, yn)⇒ error1

⇒ error2

⇒ errorK

D(1)

D(2) D(2)

D(K)

• 予測誤差の推定値 empar:error1, . . . , errorK の平均.

41/96

Page 42: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

モデルパラメータmparをもつ回帰関数に対するK-CV� �

1. データ D = {(x1, y1), . . . , (xn, yn)} をほぼ同じサイズのK個のグループ D1, . . . ,DKに分割.D(k) を以下のように定める.

Di ∩ Dj = ∅ (i = j), ∪Ki=1Di = D, D(k) := D \ Dk = ∪i=kDi.

2. ℓ = 1, . . . ,K に対して以下を繰り返す.(a) D(ℓ) を用いてモデルパラメータ mpar の回帰関数を学習:fℓ(x)

(b) Dℓ に対する fℓ(x) の誤差を eℓ とする.

eℓ :=1

|Dℓ|∑

(x,y)∈Dℓ

(y − fℓ(x))2(推定に使っていないデータの予測)

3. 出力:予測誤差の推定値 empar =1

K

K∑ℓ=1

eℓ.� �

42/96

Page 43: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

関数:Rcode-cv KR.r� �# ガウシアンカーネルのmpar=c(sigma,lambda)の選択cv_KR <- function(x,y,cvK=5,mpar=c(1,1)){#デフォルト値設定sig <- mpar[1]; l <- mpar[2]; n <- nrow(x);# データ分割idx <- sample(rep(1:cvK,ceiling(n/cvK))[1:n]);err <- c()for (i in 1:cvK){ # e_1,...,e_K の計算# 推定用データxa <- x[i!=idx,,drop=F];ya<-y[i!=idx,,drop=F]# 予測用データxb <- x[i==idx,,drop=F];yb<-y[i==idx,,drop=F]# グラム行列K <- kernelMatrix(rbfdot(sigma=sig),xa)extK <- rbind(cbind(rep(1,n),K+diag(lambda,n)),c(n,rowSums(K)))exty <- c(y,sum(y))# 推定量を求めるpar <- solve(extK, exty)b <- par[1]; beta <- par[-1]py <- kernelMult(rbfdot(sigma=sig),xb,xa,beta)+berr <- c(err,mean((yb-py)^2))}

mean(err)} #出力 e_mpar (e_1,...,e_Kの平均)� �

43/96

Page 44: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

交差検証カーネル回帰

• 初期化

> library(kernlab) # パッケージ読込> source(’Rcode-cv_KR.r’) # 関数読込> n <- 100 # データ生成> x <- matrix(runif(n,min=-4,max=4))> y <- sin(pi*x)/x + rnorm(n,sd=0.5)

• モデルパラメータの候補の設定: λ = 1と固定.およそ sigma·∥xi − xj∥2 ≈ 2−10 ∼ 210 の範囲でsigmaを選ぶ.

> cvK <- 5 # 5重-交差検証> sig_list <- 2^(seq(-10,10))/median(dist(x))^2> mpar_candidate <- cbind(sig_list,1) # モデルパラメータ

44/96

Page 45: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• モデルパラメータの選択

> cv <- c()> for(i in 1:nrow(mpar_candidate))+ cv <- c(cv, cv_KR(x,y,cvK,mpar_candidate[i,]))> mpar_candidate[which.min(cv),]sig_list l

2.533719 1.000000 # 最適なモデルパラメータ(sigma,λ)

45/96

Page 46: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• empar のプロット

> plot(sig_list,cv,log=’x’)

予測誤差の推定値 empar.sigma ∼= 2.5で最小.

●●

● ● ●

●●

● ● ●

1e−04 1e−02 1e+00 1e+020.

20.

40.

60.

81.

0

sigma_list

cv

46/96

Page 47: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

推定結果:ガウシアンカーネル

• カーネルパラメータ sigma:交差検証法で決定• 正則化パラメータ:λ = 1 と固定

● ●

●●

●●

●●

●●

●●

●●

●●

●●

−4 −2 0 2

−1

01

23

x

y

● ●

●●

●●

●●

●●

●●

●●

●●

●●

−4 −2 0 2

−1

01

23

x

y

● ●

●●

●●

●●

●●

●●

●●

●●

●●

−4 −2 0 2

−1

01

23

x

y

(sigma, λ) = (0.1, 1) (sigma, λ) = (2.5, 1) (sigma, λ) = (30, 1)

47/96

Page 48: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

ヒューリスティクス

• K-交差検証法:計算コストが大きい.

∗ K回学習 =⇒ ひとつの mpar に対する empar が求まる.∗ モデルパラメータの選択: K回 × mparの候補数

• モデルパラメータが2次元以上の場合

∗ いくつかのパラメータ値を適当な値に固定.残りのパラメータを交差検証法で決める.

48/96

Page 49: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

ガウシアンカーネルのsigmaの選び方ガウシアンカーネル:

k(x,x′) = exp{−sigma · ∥x− x′∥2}

• 数値計算の安定性のため,sigma · ∥xi − xj∥2 が「ほどほどの値」を取るようにする.

d2 := median{∥xi − xj∥2 | i < j} (中央値),

sigma = 1/d2

=⇒ sigma·∥xi − xj∥2 は 1 のまわりに分布.

49/96

Page 50: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

kernlab::sigest() によるsigmaの選択

• データ生成

> library(kernlab) # sigestはkernlabにある> n <- 100 # データ生成> x <- matrix(runif(n,min=-4,max=4))

• sigest による sigma の推定

> sigest(x) # 配列を返す90% 50% 10%

0.1734559 0.6630795 15.8040286

∗ 上で示した sigma= 1/d2 は 50%点(0.6630795)に等しい.∗ sigestはサンプリングによる近似計算なので,厳密な中央値ではない.

50/96

Page 51: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

交差検証法による λ の選択.sigmaはヒューリスティクスで選択.

• 初期設定,データ生成

> library(kernlab) # パッケージ読込> source(’Rcode-cv_KR.r’) # 関数読込> n <- 100 # データ生成> x <- matrix(runif(n,min=-4,max=4))> y <- sin(pi*x)/x + rnorm(n,sd=0.5)

51/96

Page 52: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• 5重交差検証による λ の決定

> s <- sigest(x)[2] # sigma のヒューリスティクス> lambdas <- n*2^seq(-20,0) # λの候補> mpar_candidate <- cbind(s,lambdas) #モデルパラメータの候補> cv <- c()> for(i in 1:nrow(mpar_candidate))+ cv <- c(cv, cv_KR(x,y,cvK=5,mpar_candidate[i,]))> mpar_candidate[which.min(cv),] # 最適なモデルパラメータ

s lambdas0.9842282 0.7812500

52/96

Page 53: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• プロット

> plot(lambdas,cv,log=’xy’)

1e-04 1e-02 1e+00 1e+02

0.4

0.6

0.8

1.0

lambdas

cv

• sigma = 0.984, λ = 0.781 が選択された.

53/96

Page 54: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

推定結果• カーネルパラメータ sigma:ヒューリスティクス• 正則化パラメータ λ:いろいろ変える.

●●

●●

● ●

●●

●●

● ●

−4 −2 0 2 4

−10

12

3

●●

●●

● ●

●●

●●

● ●

−4 −2 0 2 4

−10

12

3

●●

●●

● ●

●●

●●

● ●

−4 −2 0 2 4

−10

12

3

(sigma, λ) = (0.98, 0.15) (sigma, λ) = (0.98, 0.78) (sigma, λ) = (0.98, 10)

54/96

Page 55: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

2値判別:サポートベクトルマシン学習データ (x1, y1), . . . , (xn, yn) ∼i.i.d. P.

• 2値判別:y ∈ {+1,−1}

∗ 迷惑メールの判別,デジカメの顔検出.特定の疾患の診断.

• 多値判別: y ∈ Y = {1, 2, . . . , G}

∗ 文字認識,自然言語処理.

目的� �学習データと同じ分布にしたがう新たな入力 x に対して,ラベル y を予測する.� �

55/96

Page 56: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

2値判別

• 入力:x ∈ X

• 出力ラベル:y ∈ {+1,−1}

-4 -2 0 2 4

-4-2

02

4

training data

x1

x2

-4 -2 0 2 4

-4-2

02

4

estimated decision boundary

x1

x2

56/96

Page 57: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

仮説(判別器)のモデリング

• 判別関数 f : X −→ R

• 判別関数 f(x) から仮説 h(x) を構成

h(x) = sign(f(x))

• 符号関数:sign(z) = +1 (z > 0), −1 (z < 0), 0 (z = 0)

h(x) = 0 のとき:±1のどちらかに適当に割りふる.

57/96

Page 58: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

判別関数と仮説のプロット

−2 −1 0 1 2 3

−2−1

01

2

x

f(x)

f(x)sign(f(x))

58/96

Page 59: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

線形判別モデル基底関数 ϕ : X → RD を定める.ϕ(x) = (ϕ1(x), . . . , ϕD(x)).

判別関数の集合 F = { f(x) = ϕ(x)Ta+ b | b ∈ R, a ∈ RD },

判別器の集合 H = { sign(f(x)) | f(x) ∈ F }

データから,適切なパラメータa, b を推定する

−6 −4 −2 0 2 4

−4−2

02

4

59/96

Page 60: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

方針:多くのデータ (xi, yi) に対して yi = sign(f(xi)) となるようなf(x) を求める.

• 損失を ℓ として

minf∈F

1

n

n∑i=1

ℓ(f(xi), yi) −→ f(x) −→ 判別器 sign(f(x))

• サポートベクトルマシン:

ℓ(f(x), y) = max{1− yf(x), 0}

ℓ(f(x), y) 小さい ⇐⇒ yif(xi) 大きい

60/96

Page 61: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

カーネル化 & 正則化• データ:(x1, y1), . . . , (xn, yn), k(x,x

′) = ϕ(x)Tϕ(x′)

f(x) = ϕ(x)Ta+ b ⇐⇒ f(x) =n∑

j=1

βjk(xj,x) + b

• 高い表現力(ガウスカーネルなら∞次元)を正則化で調整.

-1.0 -0.5 0.0 0.5 1.0

-1.0

-0.5

0.0

0.5

1.0

-1.0 -0.5 0.0 0.5 1.0

-1.0

-0.5

0.0

0.5

1.0

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

61/96

Page 62: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

� �

minβ,b

C

n

n∑i=1

(yi

( n∑j=1

βjk(xj,xi) + b

))+

1

2

n∑i,j=1

βiβjk(xj,xi)

• 損失 ℓ(z) = max{1− z, 0}

• 最適解 β1, . . . , βn, b −→ 判別器 sign

(n∑

i=1

βik(xi,x) + b

)� �

62/96

Page 63: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• 線形カーネル (Rのオプションは vanilladot):

k(x,x′) = xTx′

• 多項式カーネル (polydot):

k(x,x′) = (1 + xTx′)degree, degree = 1, 2, 3, . . .

• ガウシアン・カーネル (rbfdot):

k(x,x′) = exp{−sigma · ∥x− x′∥2}, sigma > 0

63/96

Page 64: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 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

-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

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

64/96

Page 65: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

> #ソフトマージン・カーネルSVM(Rcode-kernelsvm.r)> library(kernlab); library(mlbench)#パッケージ読込> dat<-mlbench.spirals(300,cycles=1,sd=0.15)#データ> testdat<-mlbench.spirals(1000,cycles=1,sd=0.15)#テストデータ> #2次多項式カーネル (表示は適当に省略)> sv2<-ksvm(dat$x,dat$c,kernel="polydot",kpar=list(degree=2))> sv2 #学習結果の表示Hyperparameters : degree = 2 scale = 1 offset = 1Training error : 0.423333> mean(predict(sv2,testdat$x)!=testdat$c) #予測誤差の計算[1] 0.436> #3次多項式カーネル (表示は適当に省略)> sv3<-ksvm(dat$x,dat$c,kernel="polydot",kpar=list(degree=3))> sv3 #学習結果の表示Hyperparameters : degree = 3 scale = 1 offset = 1Training error : 0.166667> mean(predict(sv3,testdat$x)!=testdat$c) #予測誤差の計算[1] 0.175

65/96

Page 66: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• 正則化パラメータのデフォルト値: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

66/96

Page 67: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

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

• モデルパラメータ∗ 多項式カーネル:degree と C

∗ ガウシアン・カーネル:sigma と C

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

∗ 評価の規準:

誤り確率 =1

n

n∑i=1

I[yi = h(xi)]

67/96

Page 68: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

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

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

68/96

Page 69: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

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

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

69/96

Page 70: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

Rcode-cv SVM.r(関数cv SVM:交差検証法で予測誤差を推定)� �#モデルパラメータ mpar に対して交差検証法で予測誤差を推定cv_SVM <- function(x,y,K=5,kernel="rbfdot",

mpar=list(kpar=list(sigma=1),C=1)){n <- nrow(x) #データ数idx <- sample(K,n,replace=TRUE) #データをランダムにK分割cv_error <- vector(length=K) #予測誤差を記憶する配列for (l in 1:K){

## 交互検証法で学習に使うデータcvx <- x[idx!=l,]; cvy <- y[idx!=l]sv <- ksvm(cvx,cvy,type="C-svc",kernel=kernel,

kpar=mpar$kpar,C=mpar$C)##学習に使っていないデータのラベルを予測pred <- predict(sv,x[idx==l,])cv_error[l] <- mean(pred != y[idx==l])#予測誤差の推定

}mean(cv_error) ## 出力値(予測値の平均)

}� �

70/96

Page 71: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

補足� �交差検証法はksvmのcrossオプションで計算できる.> sv <- ksvm(x,y,cross=10,kernel=’rbfdot’,+ kpar=list(sigma=1),C=1)> cross(sv)� �

Rcode: 関数 svm cv で予測誤差を推定

> #Rcode-cv-kernelsvm-sigma.r> library(kernlab); library(mlbench) #パッケージ読込> source(’Rcode-cv_SVM.r’) #プログラム読込> #データ生成> dat<-mlbench.spirals(200,cycles=1.2,sd=0.16)> x<-dat$x; y <- dat$classes> cvK <- 5 # 5-重交差検証

71/96

Page 72: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

> #交差検証法によるモデルパラメータの選択> #sigmaの候補> sigma_candidate<-seq(0.01,10,length=20)> pred_est<-c()> for(sigma in sigma_candidate){ # cvで予測誤差を推定+ mpar<-list(kpar=list(sigma=sigma),C=1)+ cv_est<-cv_SVM(x,y,K=10,kernel=’rbfdot’,mpar)+ pred_est<-c(pred_est,cv_est) }> #0.01~10の間で最適なsigma> opt_sigma<-sigma_candidate[which.min(pred_est)]

72/96

Page 73: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

> opt_sigma #cvで選んだ最適なsigma[1] 5.267895> #sigmaに対する予測誤差のプロット> plot(sigma_candidate,pred_est,lwd=2)

●●

0 5 10 15 20

0.25

0.30

0.35

0.40

0.45

sigma_candidate

pred

_est

73/96

Page 74: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

判別器の学習結果

• 正則化パラメータ C = 1,交差検証法で最適な σ = 6.21

●● ● ●

●● ●●

●●

●●

●●

●●

●●

●●

●●

● ●

●●

● ●●

●●

●●

●●

●●

●●

● ●

●●

gaussian kernel: sigma=0.01

●● ● ●

●● ●●

●●

●●

●●

●●

●●

●●

●●

● ●

●●

● ●●

●●

●●

●●

●●

●●

● ●

●●

gaussian kernel: sigma=6.21

!! ! !

!

!! !!

!

!

!!

!!

!

!

!

!

!

!

!!

!

!

!

!

!

!

!

!

!!

!

!

!

!

!

!!

!

!

!

!

!!

!

!

!!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

! !

!

!

!

!

!

!

!

!

!

!

!!

!

!

!

!

!

! !!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!!

!

!

!

!

!

!

!

!

!

!

!

!

!!

!

!

!

!

!!

!!

!

!

!

!

!

!

!

!

!

!

!

!

!

!!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

! !

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

gaussian kernel: sigma=20

σ = 0.01 σ = 6.21 σ = 20予測誤差:0.423 予測誤差:0.194 予測誤差:0.209

74/96

Page 75: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

多値判別

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

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

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

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

75/96

Page 76: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

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

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

• 欠点

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

76/96

Page 77: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• one-vs-one 法

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

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

77/96

Page 78: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

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

78/96

Page 79: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

予測法:多数決� �

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)

� �

79/96

Page 80: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

例: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 を返す )

80/96

Page 81: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• 予測:多数決による予測.図の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.

81/96

Page 82: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

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

82/96

Page 83: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

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 を得る.

83/96

Page 84: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

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 ひとつもない ⇒ 予測ラベルが決まらない� �

84/96

Page 85: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

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

training data black(1) vs rest

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

X の予測ラベルは green.

85/96

Page 86: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

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

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

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

References:

Dietterich, Bakiri, Solving Multiclass Learning Problems via ErrorCorrecting Output Codes, Journal of Artificial Intelligence Research,vol. 2 Issue 1, pp. 263-286, 1994.

Allwein, Schapire, Singer, Reducing multiclass to binary: a unifyingapproach for margin classifiers, The Journal of Machine LearningResearch, vol. 1, pp. 113-141, 2001.

86/96

Page 87: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

学習� �

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

例:

t (T = 5)label 1 2 3 4 51 (c1) −1 −1 −1 −1 02 (c2) +1 +1 −1 0 −13 (c3) 0 −1 +1 +1 −14 (c4) +1 0 −1 +1 +1

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

87/96

Page 88: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

予測� �

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

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

88/96

Page 89: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

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

• one-vs-one:

tlabel 1 2 3 4 5 61 (c1) +1 +1 +1 0 0 02 (c2) −1 0 0 +1 +1 03 (c3) 0 −1 0 −1 0 +14 (c4) 0 0 −1 0 −1 −1

∗ 各列に対応して,元データを2値に変換して学習.例:t = 1 ではラベル 1, 2 のデータのみ使用.∗ ハミング距離で予測:score(y)と同じ:cytが0でない要素どうしを比較

89/96

Page 90: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

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

tlabel 1 2 3 41 (c1) +1 −1 −1 −12 (c2) −1 +1 −1 −13 (c3) −1 −1 +1 −14 (c4) −1 −1 −1 +1

90/96

Page 91: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

符号間の最小距離:ρ = 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で測る.

91/96

Page 92: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

� �

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

n

n∑i=1

I[H(xi) = yi]

について次式が成立:

L(H) ≤ 2T

ρ· 1T

T∑t=1

L(ht),

ρ

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

� �

92/96

Page 93: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

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

∃y′ = yi,T∑

t=1

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

t=1

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

符号語 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.

93/96

Page 94: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

(1)より

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)

94/96

Page 95: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

例: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 なら意味ある結果.

95/96

Page 96: 名大集中講義:機械学習特論 (2) カーネル法...名大集中講義:機械学習特論 ノート(2) カーネル法 1. カーネル関数を用いた回帰分析の方法

• リード・ソロモン符号 (線形符号の一種):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なら意味ある結果.

96/96