機械学習に詳しくなりたいブログ

機械学習や数学について勉強した内容を中心に書きます。100%趣味です。記事は数学的に厳密でなかったり誤りを含んでいるかもしれません。ご指摘頂ければ幸いです。

フィッシャーの線形判別(1)

フィッシャーの線形判別は、これ自体は判別・識別の手法ではなく、各クラスのデータの分離を保ちつつ次元圧縮する手法のようです。多次元のデータを扱うのは大変なので、次元圧縮して計算を楽にしようということでしょうか。今回は2次元の入力を1次元に圧縮する場合を考えていきます。

2次元の入力\mathbf xC_1,C_2の2クラスのデータを考え、


y = \mathbf{w}^{T} \mathbf{x} \tag{1}

で1次元に射影するとします。先回までに考えた線形識別とは異なり、ダミー入力は入れません。どのような線上に射影すれば最も分離しやすくなるか?を考えていきます。イメージは以下のアニメーションです。

f:id:opabinia2:20180513224621g:plain

上のグラフは赤色のクラスと青色のクラスのデータで、緑色の直線に射影した時の点が下に表示されています。これくらいの単純な例だと、目視でなんとなく良さそうな直線が見つけられそうですけどね。

各クラスにデータがN_k個あるとすると、平均ベクトルは


\displaystyle \mathbf m_k = \frac{1}{N_k} \sum_{n \in C_k} \mathbf x_n \tag{2}

と書けます。2クラスの問題であれば、


m_2 - m_1 = \mathbf{w}^{T} (\mathbf m_2 - \mathbf m_1) \tag{3}

を最大にする\mathbf wを解とするというのが1つの方法です。式(3)においてm_kは平均ベクトルを式(1)で射影した値です。つまり、式(3)を最大にするということは、各クラスのデータの中心点が最も離れるように射影するということです。ただし、\mathbf w


\displaystyle \sum_i w_i^2 = 1 \tag{4}

とします。射影時に拡大させてしまうとm_2-m_1がどれだけでも大きくなってしまうためです。

しかし各クラスのデータのばらつき具合によっては必ずしも最適な解にはなりません。見た目の判断ですが、先程のアニメーションの例でもそうなっていると思います。平均ベクトルの距離が近寄りながら、ばらつきも小さくなっていき、最適な分離が現れていそうです。

ということで、ばらつきを考慮するために、射影後の各クラスのデータの分散


\displaystyle  s_k^2 = \sum_{n \in C_k} (y_n - m_k)^2 \tag{5}

を考慮にいれ、フィッシャーの判別基準は


\displaystyle  J(\mathbf w) = \frac{(m_2 - m_1)^2}{s_1^2 + s_2^2} \tag{6}

と定義され、これを最大にする\mathbf wを解とします。射影後の分散は小さく、そしてデータの中心点は遠くとりたいということですね。

この続きはフィッシャーの線形判別(2)です。