線形判別(LDA: Linear Discriminant Analysis) とは
線形判別(LDA: Linear Discriminant Analysis) とは
特徴量空間で、各クラスをガウス分布へ当てはめ、当てはめた分布を直線で分けるとき、どの方向に直線を引くのが良いか求めるものである。
フィッシャーの線形判別と検索すれば解説が出てくる。
例えば、以下。
フィッシャーの線形判別分析法 - Qiita
この説明では、引数(priors: 事前確率)の意味が理解できないため、以下では、sci-kit learn の解説ページをベースに説明する。**
sci-kit learn 公式の解説
1.2. Linear and Quadratic Discriminant Analysis — scikit-learn 0.22.2 documentation
問題設定
ある特徴量ベクトルXが与えられたとき、Xがクラスkに属する事後確率は、ベイズの定理から、次のように求められる。
ここで、: 特徴量ベクトル, : の属するクラス, : クラス である。
ここで、が最大になるようなを求めれば良い。
(ここまでは、ナイーブベイズ推定と同じ)
各クラスの共分散行列が一致すると仮定
線形判別では、さらに、すべてのクラスにおいて、クラス内共分散行列(分散共分散行列)が一致する()と仮定すると、特徴量空間で線形の判別となる。
クラスの境界が線形となることの証明
線形となることは、2つのクラスに対して、確率が同じになる境界が、特徴量の線形結合で表せることを示せばよい。
2つのクラスに対して、確率が同じになるのは、次の場合である。
両辺に対数を取って、ベイズの定理、各クラスの分布がガウス分布であること、各クラスの共分散行列が同じであることを用いると、以下の式が得られる。
右辺()、および、の係数は、定数であり、クラスの境界は特徴量空間で線形である。
*は、各クラスがどの程度発生するかを表す事前確率である。
計算するもの
以上から線形判別では、各クラスに共通で当てはめができる共分散行列を求めれば良い。
ソルバー ’lsqr’ では、各クラスの共分散行列と平均の積と、共通の共分散行列と平均の積との二乗誤差の総和が最も小さくなるものを利用する。
ソルバー 'eigen' では、基本的にクラス内分散をクラス間分散の比が大きくなるものを計算している。
これは、フィッシャーの線形判別として解説されているものである。
参考:
http://www.svcl.ucsd.edu/courses/ece271B-F09/handouts/Dimensionality3.pdf
’svd’では、'eigen'での計算の効率化のため、固有値を計算せずに、特異値分解(SVD: Singular Value Decomposition)を利用して、直接解を求めている(ようである 未確認)。
**
なお、事前確率(priors)を入力しない場合、学習データに含まれるデータの割合がそのまま事前確率となる。
学習データとテストデータでデータに含まれるラベルの割合が大きく異なることが予想できる場合、テストデータに合わせて事前確率を入力するべきである。