判別分析は教師あり学習であり、学習データはグループ分けが既知のサンプルである。
グループの所属の分かる散布図を描くことにより、判別を視覚的に捉えることができる。
(参考資料) 千葉大学フロンティア医工学センター 羽石 秀昭 様 「判別分析2」のp4
http://www.cfme.chiba-u.jp/~haneishi/class/2009/20100113.pdf
計算で判別するには2つの方法がある。(統計学実戦ワークブック p205 参照)
(1) マハラノビスの距離による方法
マハラノビスの距離を計算するには、学習データの平均ベクトルと分散共分散行列が必要である。
判別の境界は \(D_{(2)}^2-D_{(1)}^2=0\) であり、2次形式の差なので2次曲線になり2次判別と呼ばれる。
2つのグループの分散共分散行列が一致している場合、境界 \(D_{(2)}^2-D_{(1)}^2=0\) は直線になる。
(2つのグループの平均 \(\mu_{(1)}\ ,\ \mu_{(2)}\) の中点を通り、 \(\Sigma^{-1}(\mu_{(2)}-\mu_{(1)})\) に垂直な直線になる)
(2)グループ間変動が最大となるように判別直線の係数を決める方法
グループが最も分離して見える直線への射影を考えることであり、主成分分析の手法が使える。
判別直線は、2つのグループの平均 \(\mu_{(1)}\ ,\ \mu_{(2)}\) の中点を通り、射影する直線と垂直な直線になる。
2つのグループの分散共分散行列が一致している場合は、(1)の境界である直線、(2)の判別直線
は一致する。このことも確かめてみよう。
まず、(2)の方法から考える。
フィッシャーの線形判別関数 (グループが分離されて見える変数を見つける)
次のサイトで学ばせていただいた。
HELLO CYBERNETICS 様 「フィッシャーの線形判別」
https://www.hellocybernetics.tech/entry/2016/08/07/054847
機械学習に詳しくなりたいブログ 様 「フィッシャーの線形判別(2)」
https://www.iwanttobeacat.com/entry/2018/05/19/214701
\(x_n\) はD次元データ、 \(w\) が線形変換ベクトル( \(x_n\) と同じD次元)とし、
\({y_n = w^T x_n
}\) ( \(y_n\) は線形変換された1次元データ )
\({m_1 = \frac{1}{N_1}\sum_{n \in C_1}x_n
}\) 、\({m_2 = \frac{1}{N_2}\sum_{n \in C_2}x_n
}\) 2つのグループの代表点
\({|w|=1
}\) という条件のもとで、各クラスの代表点の \(y\) 値の差は、
\({w^T m_1 - w^T m_2 = w^T (m_1 - m_2)
}\) が最大 ⇄ \({w \propto (m_1 - m_2)
}\)
判別直線は \(w\) を法線ベクトルとし、各クラスの平均の中点を通る直線となる。
(証明)
射影後の \(w\) の各グループの偏差平方和
\(\displaystyle {s_1^2 = \sum_{n \in C_1} (w^T x_n - w^T m_1)^2}
={ \sum_{n \in C_1} w^T (x_n - m_1)(x_n - m_1)^Tw }
={ w^T\left(\sum_{n \in C_1} (x_n - m_1)(x_n - m_1)^T\right)w }\)
\(\displaystyle {s_2^2 = \sum_{n \in C_2} (w^T x_n - w^T m_2)^2}
={ \sum_{n \in C_2} w^T (x_n - m_2)(x_n - m_2)^Tw }
={ w^T\left(\sum_{n \in C_2} (x_n - m_2)(x_n - m_2)^T\right)w }\)
\({s^2 = s_1^2 + s_2^2
}\) は群内変動を表し、
\( \displaystyle s^2={ w^T\left(\sum_{n \in C_1} (x_n - m_1)(x_n - m_1)^T+\sum_{n \in C_2} (x_n - m_2)(x_n - m_2)^T\right)w }\)
\(\displaystyle {S_W =\sum_{n \in C_1} (x_n - m_1)(x_n - m_1)^T+\sum_{n \in C_2} (x_n - m_2)(x_n - m_2)^T}\) とおくと、 \(s^2=w^TS_Ww\) は群内変動を表す。
\(\displaystyle \dfrac{1}{n_k-1}\left(\sum_{n \in C_k} (x_n - m_1)(x_n - m_1)^T\right)\) はグループ \(C_k\) の分散共分散行列( \(k=1,2\) )
\(\dfrac{1}{n-2}S_W=\dfrac{1}{(n_1-1)+(n_2-1)}S_W\) は群内平方和をプールした分散共分散行列
\({S_B = (m_1 - m_2) (m_1 - m_2)^T
}\) (クラス間分散共分散行列)とおくと、
\(D^2={w^T (m_1 - m_2) (m_1 - m_2)^T w
}={w^T S_B w
}\) は群間変動を表す。
(各クラスの代表点の \(w\)値の差の平方である)
従って、評価関数を \({J(w) =\dfrac{D^2}{s^2}= \frac{w^T S_B w}{w^T S_W w}
}\) として、 \(J(w)\) を最大とする \(w\) を求めればよい。
これは、2次形式の微分を用いれば、
\(S_Ww∝S_Bw\) が導かれ、\(w∝{S_W}^{-1}S_Bw∝{S_W}^{-1}(m_1-m_2)\) となる。実際、
\(\displaystyle \frac{\partial J(\mathbf w)}{\partial \mathbf w} = \frac{ (\mathbf w^T \mathbf{S}_B \mathbf w)^{\prime} \mathbf w^T \mathbf{S}_W \mathbf w - \mathbf w^T \mathbf{S}_B \mathbf w(\mathbf w^T \mathbf{S}_W \mathbf w)^{\prime}}{(\mathbf w^T \mathbf{S}_W \mathbf w)^2}
=\dfrac{ (2\mathbf{S}_B \mathbf w)\mathbf w^T \mathbf{S}_W \mathbf w -
\mathbf w^T \mathbf{S}_Bw( 2\mathbf{S}_W \mathbf w)}{(\mathbf w^T \mathbf{S}_W
\mathbf w)^2}=0\) より
\((2\mathbf{S}_B \mathbf w)(\mathbf w^T \mathbf{S}_W \mathbf w) - (\mathbf w^T \mathbf{S}_Bw)( 2\mathbf{S}_W \mathbf w)=0\)
\(\mathbf{w}^T \mathbf{S}_W \mathbf{w}\) 、\(\mathbf{w}^T \mathbf{S}_B \mathbf{w}\) はスカラーだから、\(S_Ww∝S_Bw\)
\(S_Bw=(m_1-m_2)(m_1-m_2)^Tw=(m_1-m_2)k\) ( \(k\) は実数)より、
\(S_Ww∝(m_1-m_2)\) \(\therefore w∝{S_W}^{-1}(m_1-m_2)\)
\({S_W}^{-1}(m_1-m_2)\) を求め基準化したベクトルが、判別直線の法線ベクトルとなる。
以上が2群判別のための、射影直線の法線ベクトル構成方法である。
3群以上を判別する正準判別分析では、評価関数の最大化に、対称行列の固有値と固有ベクトルを利用する。(一般化固有値問題)
以下で、固有値と固有ベクトルを用いた説明を試みる。(線形代数の知識が必要)
[一般化固有値問題] \({J(w) = \dfrac{w^T S_B w}{w^T S_W w}
}\) の最大化を考える。
機械学習に詳しくなりたいブログ 様 「フィッシャーの線形判別(4)」
https://www.iwanttobeacat.com/entry/2018/05/26/203825
\(w^T S_W w=1\) という条件のもとで \(J(w)\) の最大を考える。
ラグランジュの未定乗数法によれば、
\(w^T S_W w-1=0\) という条件のもとで、 \(J(w) =w^T S_B w \) の極大を求めるには
\(L = w^T S_B w - \lambda (w^T S_W w - 1)\) を \(w\) で微分すればよい。
2次形式の微分法により \(\displaystyle \frac{\partial L}{\partial w} = 2S_B w - 2 \lambda S_W w = 0\) \(\therefore S_Bw = \lambda S_W w\)
もし、対称行列 \(S_W\) が正定値ならば、 \(S_W^{-1}\) が存在し \((S_W^{-1}S_B) w = \lambda w\)
\(w\) は \(S_W^{-1}S_B\) の固有ベクトルとして求められる。
このとき、 \({J(w) = \dfrac{w^T S_B w}{w^T S_W w}=\dfrac{w^T \lambda S_W w}{w^T
S_W w}
}=\lambda\) となり、 \(J(w)\) の最大値は \(\lambda\) に一致する。
(固有値が複数ある場合は、最大固有値を用いる)
しかし、対称行列の固有値問題に帰着させたほうが都合のよいことが多いようなので、次のようにもう一手間をかけておく。
[参考サイト]日本女子大学 岡本安晴 様 「判別分析」
http://y-okamoto-psy1949.la.coocan.jp/booksetc/TwoStepCmnQExmpl/PrgsExpln/DiscrimiDoc.pdf
正定値対称行列は正則行列 \(S\) を用いて \(S_W=SS^T\) と分解することができる。
( 当サイト「正定値対称行列とコレスキー分解」参照 )
\(S_Bw = \lambda S_W w\) に代入して、 \(S_Bw = \lambda SS^T w\) \(\therefore S^{-1}S_Bw = \lambda S^T w\)
\(S^{-1}S_B (S^T)^{-1}S^Tw = \lambda S^T w\)
一般に \((S^T)^{-1}=(S^{-1})^T\) (転置と逆行列は交換可能)であるから、
\(A=S^{-1}S_B (S^T)^{-1}\) とおくと、\(A^T=S^{-1}S_B^T(S^{-1})^T=S^{-1}S_B(S^{T})^{-1}=A\) よって、\(A\) は対称行列。
\(A(S^T w)=\lambda(S^T w)\)
対称行列の固有ベクトルとして \(S^T w\) を求めることが可能になる。
この方法では、複数の固有値と固有ベクトルが得られることになり、複数の判別直線が得られる。
これを利用して3群以上の判別が可能になる。
[参考]相関比を最大にするよう判別関数を定める方法
判別関数 \(z=ax+by+c\) ( \(z=ax+by\)でもよい)
これにより、2つのグループによる2群のデータができる。
判別関数は、グループ間の分散とグループ内の分散の比を最大化する。(分散分析に近い方法)
\(S_T=S_B+S_W\) (総変動=群間変動+郡内変動)
群間変動を最大化するには、相関比 \(\eta^2=\dfrac{S_B}{S_T}\) を最大化する a , b を求める。(涌井 p 参照)
\(S_T=n(a^2s_x^2+2abs_{xy}+b^2s_y^2)\)
zの分散は、 \(V(z)=
E(zz')=E\left[
\begin{pmatrix}
a&b
\end{pmatrix}
\begin{pmatrix}
x\\
y
\end{pmatrix}
\begin{pmatrix}
x&y
\end{pmatrix}
\begin{pmatrix}
a\\
b
\end{pmatrix}
\right]
=
\begin{pmatrix}
a&b
\end{pmatrix}
\begin{pmatrix}
s_x^2&s_{xy}\\
s_{xy}&s_y^2
\end{pmatrix}
\begin{pmatrix}
a\\
b
\end{pmatrix}
\)(2次形式)
\(V(z)=\dfrac{S_T}{n}=(a^2s_x^2+2abs_{xy}+b^2s_y^2)\)
これらは、2次形式 \(\begin{pmatrix}
a&b
\end{pmatrix}
\begin{pmatrix}
s_x^2&s_{xy}\\
s_{xy}&s_y^2
\end{pmatrix}
\begin{pmatrix}
a\\
b
\end{pmatrix}
=
a^2s_x^2+2abs_{xy}+b^2s_y^2\) であることにより一致する。
\(\begin{pmatrix}
a\\
b
\end{pmatrix}\) は分散共分散行列の第1主成分方向になる。この方向では、各グループが最も離れて見える。
Jin(同志社大学 文化情報学部 金明哲 様)
https://www1.doshisha.ac.jp/~mjin/R/Chap_18/18.html
判別関数は、グループ間の分散とグループ内の分散の比を最大化する
マハラノビスの距離による判別
静岡理工科大学情報学部 金久保 正明 様
https://www.sist.ac.jp/~kanakubo/research/statistic/hanbetu_maha.html
マハラノビスの距離は、グループの中心から対象とする個体がどれだけ確率的に離れているかを示す量である。(涌井「Excelで学ぶ多変量解析」)
\(x\sim N(m,\sigma^2)\) のとき、\(x\) と平均 \(m\) の確率的距離は、
\(D=\dfrac{|x-m|}{\sigma}\) (マハラノビスの距離)
これは多次元の場合にも拡張できる。
\(\begin{pmatrix}
x\\
y
\end{pmatrix}
\sim
N\left(\begin{pmatrix}
\overline{x}\\
\overline{y}
\end{pmatrix},\begin{pmatrix}
s_{x}^{2} & s_{xy} \\
s_{xy} & s_{y}^{2}
\end{pmatrix}\right)\) のとき、 \(\begin{pmatrix}
x\\
y
\end{pmatrix}\) と平均 \(\begin{pmatrix}
\overline{x}\\
\overline{y}
\end{pmatrix}\) の確率的距離は、
\(D^2=\begin{pmatrix}
x-\overline{x}&y-\overline{y}
\end{pmatrix}
\begin{pmatrix}
s_x^2&s_{xy}\\
s_{xy}&s_y^2
\end{pmatrix}^{-1}
\begin{pmatrix}
x-\overline{x}\\
y-\overline{y}
\end{pmatrix}
\) (マハラノビスの距離)
マハラノビスの距離は、学習グループごとに定義される。(教師あり学習)
マハラノビス距離を求めるには、学習データの分散共分散行列の逆行列を求める必要がある。
正規分布
マハラノビスの距離と正規分布の関係について整理する。
確率は[0,1]の値をとる実数値関数である。
確率変数が1次元のとき、確率密度関数 \(X\rightarrow R^1\) は、
\(f(x)=
\dfrac{1}{\sqrt{2\pi}\sqrt{\sigma^2}}\exp\left[-\dfrac{1}{2} \left(\dfrac{x-m}{\sigma}\right)^2\right]
=\dfrac{1}{\sqrt{2\pi}\sqrt{\sigma^2}}\exp\left[-\dfrac{1}{2} D^2\right]
\)
Dはマハラノビスの距離( \(x\) と \(m\) の確率的距離)
係数は正規化定数(全確率を1にするための定数)である。
これは、確率が中心(平均)からの確率的距離Dによって決まることを意味する。
確率変数が2次元のとき、確率密度関数 \(X\rightarrow R^2\) は、
\(f(x,y)\propto \exp\left[{-\dfrac{1}{2}D^2}\right]\) 正規化定数を付け加えると、
\(f(x,y)=\dfrac{1}{\left(\sqrt{2\pi}\right)^2\sqrt{|\Sigma|}}\exp\left[{-\dfrac{1}{2}D^2}\right]
=
\dfrac{1}{\left(\sqrt{2\pi}\right)^2\sqrt{|\Sigma|}}\exp\left[{-\dfrac{1}{2}D^2}\right]\)
\(\Sigma=\begin{pmatrix}
\sigma_{x}^{2} & \sigma_{xy} \\
\sigma_{xy} & \sigma_{y}^{2}
\end{pmatrix}\) 、 \(D^2=\begin{pmatrix}
x-\mu_{x}&y-\mu_{y}
\end{pmatrix}
\begin{pmatrix}
\sigma_{x}^{2} & \sigma_{xy} \\
\sigma_{xy} & \sigma_{y}^{2}
\end{pmatrix}^{-1}
\begin{pmatrix}
x-\mu_{x}\\
y-\mu_{y}
\end{pmatrix}
\)
\(|\Sigma|=\sigma_{x}^{2}\sigma_{y}^{2}-\sigma_{xy}^2
=\sigma_{x}^{2}\sigma_{y}^{2}(1-\rho^2)\) ( \rho は相関係数)
\(\begin{split}
D^2&=
\dfrac{1}{\sigma_{x}^{2}\sigma_{y}^{2}(1-\rho^2)}
\begin{pmatrix}
x-\mu_{x} & \ y-\mu_{y}
\end{pmatrix}
\begin{pmatrix}
\sigma_{y}^{2} &\ \ -\sigma_{xy}\\
-\sigma_{xy} & \ \ \ \ \sigma_{x}^{2}
\end{pmatrix}
\begin{pmatrix}
x-\mu_{x}\\
y-\mu_{y}
\end{pmatrix}\\
&=
\dfrac{1}{\sigma_{x}^{2}\sigma_{y}^{2}(1-\rho^2)}
\left[\sigma_{y}^{2}(x-\mu_{x})^2-2\sigma_{xy}(x-\mu_{x})(y-\mu_{y})+\sigma_{x}^{2}(y-\mu_{y})^2\right]\\
&=
\dfrac{1}{(1-\rho^2)}
\left[\left(\dfrac{x-\mu_{x}}{\sigma_{x}}\right)^2-2\rho\left(\dfrac{x-\mu_{x}}{\sigma_{x}}\right)\left(\dfrac{y-\mu_{y}}{\sigma_{y}}\right)+\left(\dfrac{y-\mu_{y}}{\sigma_{y}}\right)^2\right]
&
\end{split}\)
金久保先生によれば、分散共分散行列の対角化から第一主成分、第2主成分を求めたとき、
第1主成分のマハラノビス距離と第2主成分のマハラノビス距離の平方和が \(D^2\) となる。