Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

線形判別モデル

モデル

2クラスの場合

2クラス(C1,C2)(C_1, C_2)を識別する線形モデルを考える。

特徴量ベクトルをx=(x1,⋯ ,xd)⊤\boldsymbol{x}=(x_1, \cdots, x_d)^\top、係数ベクトルをw=(w1,⋯ ,wd)⊤\boldsymbol{w}=(w_1, \cdots, w_d)^\top、バイアス項をw0w_0とすれば、

f(x)=w0+w⊤xf(\boldsymbol{x}) = w_0 + \boldsymbol{w}^\top \boldsymbol{x}

で表される。

識別境界をf(x)=0f(\boldsymbol{x})=0として、f(x)=0f(\boldsymbol{x})=0のときはリジェクトせずにC1C_1とする場合、予測値C^\hat{C}を出力する識別規則は

{C1(f(x)≥0)C2(f(x)<0)\begin{cases} C_1 & (f(\boldsymbol{x}) \geq 0)\\ C_2 & (f(\boldsymbol{x}) < 0) \end{cases}

となる。

多クラスの場合

クラス数がK(>2)K(>2)個ある場合にはどうすればよいだろうか。

いくつか方法はある(はじパタ 6.1.2などを参照)が、最大識別関数法が現状もっとも良さそう。

これはKK個の線形識別関数fj(x) (j=1,2,⋯ ,K)f_j(\boldsymbol{x}) \ (j = 1, 2, \cdots, K)を用意して、最も出力値が大きいクラスを採用するというもの。

C^=arg⁡max⁡jfj(x)\hat{C} = \arg \max_j f_j(\boldsymbol{x})

パラメータの推定

最小二乗誤差基準

係数ベクトルにバイアスを含めてw=(w0,w1,⋯ ,wd)⊤\boldsymbol{w}=(w_0, w_1, \cdots, w_d)^\topとし、特徴量ベクトルをx=(1,x1,⋯ ,xd)⊤\boldsymbol{x}=(1, x_1, \cdots, x_d)^\topと表記することにする。

それにより、線形識別関数を

f(x)=w⊤xf(\boldsymbol{x}) = \boldsymbol{w}^\top \boldsymbol{x}

と表記する。

教師ラベルは{+1,−1}\{+1, -1\}で表現されるものとする。

ti={+1(xi∈C1)−1(xi∈C2)t_i = \begin{cases} +1 & (\boldsymbol{x}_i \in C_1)\\ -1 & (\boldsymbol{x}_i \in C_2) \end{cases}

ここでiiはサンプルの添字でi=1,⋯ ,Ni = 1, \cdots, Nである。

特徴量を行列X=(x1,⋯ ,xN)⊤\boldsymbol{X} = (\boldsymbol{x}_1, \cdots, \boldsymbol{x}_N)^\top、教師ラベルのベクトルをt=(t1,⋯ ,tN)⊤\boldsymbol{t}=(t_1, \cdots, t_N)^\topと表記する。

二乗誤差E(w)E(\boldsymbol{w})を使って評価すると、次のようになる。

E(w)=∑i=1N(ti−f(xi))2=(t−Xw)⊤(t−Xw)=t⊤t−2t⊤Xw+w⊤X⊤Xw\begin{align} E(\boldsymbol{w}) &= \sum^N_{i=1} (t_i - f(\boldsymbol{x}_i))^2\\ &= (\boldsymbol{t} - \boldsymbol{X} \boldsymbol{w})^\top (\boldsymbol{t} - \boldsymbol{X} \boldsymbol{w})\\ &= \boldsymbol{t}\top \boldsymbol{t} - 2 \boldsymbol{t}^\top \boldsymbol{X} \boldsymbol{w} + \boldsymbol{w}^\top \boldsymbol{X}^\top \boldsymbol{X} \boldsymbol{w} \end{align}

二乗誤差を最小にするパラメータw\boldsymbol{w}はパラメータで微分して0になるパラメータなので、

∂E(w)∂w=−2X⊤t+2X⊤Xw=0\frac{\partial E(\boldsymbol{w})}{\partial \boldsymbol{w}} = -2 \boldsymbol{X}^\top \boldsymbol{t} + 2 \boldsymbol{X}^\top \boldsymbol{X} \boldsymbol{w} = 0

を解くことにより

w^=(X⊤X)−1X⊤t\hat{\boldsymbol{w}} = (\boldsymbol{X}^\top \boldsymbol{X})^{-1} \boldsymbol{X}^\top \boldsymbol{t}

である。

実装

以下のようなデータがあったとする

Source
<Figure size 432x288 with 1 Axes>
array([0.78271718, 0.82605555])

このパラメータによる識別超平面を描くと次の図のようになる

Source
<Figure size 432x288 with 1 Axes>