線形回帰に「カーネル法」を導入する。
尤度関数の書き換え
特徴量へのマッピングを伴う線形回帰モデルの尤度関数は次のようなものであった。
p(y∣X,v)=Nd(y∣Φv,σ2Id)∝exp(−2σ21∥y−Φv∥22)
このときのパラメータ v∈Rp を、y と同じ形状のベクトル u∈Rd を用いて、次のように書き換えてみよう。
v=ΦTu∈Rp
すると尤度関数は次式に変化する。
p(y∣X,u)=Nd(y∣ΦΦTu,σ2Id)∝exp(−2σ21∥y−ΦΦTu∥22)
新たに出現した行列 ΦΦT は、(i,j) 成分が ϕi と ϕj の内積であるような行列であり、Φ のグラム行列 (Gram matrix) と呼ばれる。
∴ΦΦT=ϕ1Tϕ2T⋮ϕdT[ϕ1ϕ2⋯ϕd]∈Rd×d[ΦΦT]ij=ϕiTϕj
カーネル関数の導入
この ϕi や ϕj は、入力データ xi と xj を特徴量にマッピングしたものである。
ϕiϕj:=ϕ(xi):=ϕ(xj)
したがって、内積 ϕiϕj は xi と xj を入力とする関数とみなすことができる。これを k(xi,xj) と書くと、行列 ΦΦT の (i,j) 成分は次のように書ける。
[ΦΦT]ij=ϕiTϕj=k(xi,xj)
ここで思い切ったことをする。
関数 k:Rd×Rd→R として、特徴量同士の内積のみならず、もっと一般に xi と xj を入力とする関数を許すのである。これにより、わざわざ特徴量へのマッピングを経て内積計算を行なうことなく、非常に表現力の高い回帰モデルを作成できる。
この関数 k をカーネル関数 (kernel function) という。
カーネル行列
カーネル関数 k(xi,xj) を (i,j) 成分に持つ行列は、もはや内積を成分に持つという意味のグラム行列ではない。そこで ΦΦT の代わりに K と書き、カーネル行列 (kernel matrix) という。
[K]ij=k(xi,xj)
どのような関数でもカーネル関数として許されるわけではなく、カーネル行列 K が半正定値行列 (semi-definite matrix) であるような関数でなくてはならない。
-
KT=K
-
uTKu≥0∀u∈R
これを満たすような関数 k:Rd×Rd→R を半正定値関数 (positive semi-definite function) という。すなわちカーネル関数は半正定値関数でなくてはならない。
パラメータの推定
カーネル行列を用いると、尤度関数は次式のように書ける。
p(y∣X,u)=∝Nd(y∣Ku,σ2Id)exp(−2σ21∥y−Ku∥22)
ここにおいてパラメータは u∈Rd であり、あとはこれを何らかの方法で推定するのが問題となる。