0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

フィッシャーの判別分析

Last updated at Posted at 2023-08-01

2クラス分類の場合

問題設定

2つのクラス$C_1$と$C_2$に帰属するデータ$\rm{\boldsymbol{x}_i}$があるとき、うまく境界線を引いてデータをクラスごとに分割したい。
言い換えると、D次元のベクトル$\rm{\boldsymbol{w}}$で

\rm{\boldsymbol{y}_i} = \rm{\boldsymbol{w}}^T\rm{\boldsymbol{x}_i}

のようにデータ$\rm{\boldsymbol{x}_i}$を$\rm{\boldsymbol{y}_i}$に投影した(線形変換に相当)とき、それぞれのデータの投影先がクラスごとにまとまりかつ別のクラスのデータどうしが混ざらないようにしたい。

線形変換wが満たすべき条件

上で述べたような、投影した後のデータがクラスごとにまとまっているための条件は、以下の2つとする。

①投影先で、各クラスの平均どうしが離れている

各クラスの平均ベクトルをそれぞれ$\mathrm{\boldsymbol{m}_1}$, $\mathrm{\boldsymbol{m}_2}$とすると、平均間の偏差は、

\mathrm{\boldsymbol{w}^T\boldsymbol{m}_1-\boldsymbol{w}^T\boldsymbol{m}_2 =\boldsymbol{w}^T(\boldsymbol{m}_1-\boldsymbol{m}_2)}

とあらわされる。後の計算のため二次形式であらわすと

\begin{align*}
&
\mathrm{\boldsymbol{w}^T(\boldsymbol{m}_1-\boldsymbol{m}_2)(\boldsymbol{m}_1-\boldsymbol{m}_2)^T\boldsymbol{w}}\\
&=\mathrm{\boldsymbol{w}}^TS_B\mathrm{\boldsymbol{w}}
\end{align*}

となり、特にクラス間分散共分散行列$S_B$を

S_B = \mathrm{(\boldsymbol{m}_1-\boldsymbol{m}_2)(\boldsymbol{m}_1-\boldsymbol{m}_2)^T}

と定義した。

②投影先で、各クラスのばらつきが少ない

投影先での、クラス$C_k$内での分散は

\begin{align*}
&
\sum_{x_i\in C_1}(\mathrm{\boldsymbol{w}^T\boldsymbol{x}_i-\boldsymbol{w}^T\boldsymbol{m}_1})^2+\sum_{x_i\in C_2}(\mathrm{\boldsymbol{w}^T\boldsymbol{x}_i-\boldsymbol{w}^T\boldsymbol{m}_2)^2} \\
&= \sum_{k=1,\ 2}\sum_{x_i\in C_k}\mathrm{\boldsymbol{w}^T(\boldsymbol{x}_i-\boldsymbol{m}_k)(\boldsymbol{x}_i-\boldsymbol{m}_k)^T\boldsymbol{w}}\\
&=\mathrm{\boldsymbol{w}^T}S_W\mathrm{\boldsymbol{w}}
\end{align*}

とあらわされる。特にクラス内分散共分散行列$S_W$を

\begin{align*}
S_W &= \sum_{x_i\in C_1}\mathrm{(\boldsymbol{x}_i-\boldsymbol{m}_1)(\boldsymbol{x}_i-\boldsymbol{m}_1)^T} +\sum_{x_i\in C_2}\mathrm{(\boldsymbol{x}_i-\boldsymbol{m}_2)(\boldsymbol{x}_i-\boldsymbol{m}_2)^T}\\
&=\sum_{k=1,\ 2}\sum_{x_i\in C_k}\mathrm{(\boldsymbol{x}_i-\boldsymbol{m}_k)(\boldsymbol{x}_i-\boldsymbol{m}_k)^T}
\end{align*}

と定義した。

評価関数

以上の①と②をまとめて評価したい。具体的には

\begin{align*}
J(\boldsymbol{w}) &= \frac{\text{クラス間平均の偏差の二乗}}{\text{各クラス内の偏差二乗和}} \\
&= \frac{\mathrm{\boldsymbol{w}}^TS_B\mathrm{\boldsymbol{w}}}{\mathrm{\boldsymbol{w}}^TS_W\mathrm{\boldsymbol{w}}}
\end{align*}

を最大にする$\mathrm{\boldsymbol{w}}$をもとめることになる(以後、$\mathrm{\boldsymbol{w}}$の大きさを1として考える)。$J(\mathrm{\boldsymbol{w}})$が最大となるとき、

\frac{\partial J(\mathrm{\boldsymbol{w}})}{\partial \mathrm{\boldsymbol{w}}} =0

が成り立ち、変形すると(省略)

\mathrm{\boldsymbol{w}} \propto S_W^{-1}(\mathrm{\boldsymbol{m}_1-\boldsymbol{m}_2})

と計算される。

固有値問題の解としてのw

$\mathrm{\boldsymbol{w}}$は、行列$S_W^{-1}S_B$の固有ベクトルである。証明はとんちみたいなものなので省略。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?