線形判別分析
判別分析の目的は量的なデータを元に質的な結果を予想すること。例えば身長や体重、血圧といった量的なデータを元に、その人が健康か不健康かを判断する。線形判別とはデータを直線で分け、データが直線の左右どちらにあるかを判別する。図1は2次元データの散布図であり、青グループと赤グループは質的に異なると仮定する。青を1群、赤を2群とし、直線を引いてこれらを区別する。
まずデータの平均(図2の黒点)を通る直線を引き、さらにその直線に直交する直線()を引く。直線は青(1群)と赤(2群)の判別のために用いる。
直線に、各データから垂線を下ろす。上で垂線の足が青と赤でよく分かれていれば精度のよい判別ができる、と考える。の方向ベクトルをとする。
各データからに下ろした垂線の足とデータの平均との距離をとする。は正負付きの距離であり、平均より右側が正(+)、左側が負(-)。
ここでの方向ベクトルを、平均から各データに向かう方向ベクトルをとすると、はとの内積によって計算できる。
青(1群)のデータ数を個、赤(2群)のデータ数を個とする。よって2次元データの総数は。ここでについて3種類の変動を定義できる。
- 全変動(total)
- 郡内変動(within class)
- 群間変動(between class)
全変動は郡内変動と群間変動の和で表される。
図4を使って変動をイメージする。全変動はすべてのと全平均(黒点)との偏差の平方和。郡内変動はすべてのと、青(1群)と赤(2群)それぞれの平均との偏差の平方和。群間変動は全平均(黒点)と各郡の平均との偏差の平方和。
最大化問題の立式
線形判別の目的は直線によってなるべく明確にデータをグループ分けすること。明確ではない分け方とは青(1群)と赤(2群)に重複があるような場合。つまり青(1群)と赤(2群)がよくばらつくような直線を引けばよい。また青(1群)と赤(2群)はそれぞれ同質なデータを集約したものであるため、よくまとまっているようなグループ分けが理想である。すなわち群間変動()を最大にし、郡内変動()を最小にするような直線を引けばよい。目的関数をとし、これを最大にするような直線の方向ベクトルを選ぶ。
判別方法
(6)の最大化問題の解をとする。直線に直交する直線の式は、全データの平均を通り、ベクトルに直交する直線の式であるため、
と表すことができる。
ここで新しいデータが得られたと仮定し、青(1群)と赤(2群)のどちらに属するかを判別する。まずの垂線の足と元のデータの中心との距離(判別得点)を計算する。
判別得点の符号(正負)で青(1群)と赤(2群)のどちらかに属するかを判別する。
線形判別関数
(6)の最大化問題を満たす方向ベクトルをは次のように与えられる。は青(1群)と赤(2群)のデータだけで計算した平均のベクトル。
すると判別関数は以下のように書き換えられる。
の中点をだと考えると、
と書くこともできる。(12)のように青(1群)と赤(2群)の平均のベクトルを使い、データの判別関数を表すこともできる。
これをフィッシャーの線形判別関数と呼ぶ。