データマイニングの基礎:フィッシャーの線形判別とは | インターネット広告代理店で働くデータサイエンティストのブログ
こんにちは。岡川です。(twitter @hokagawa)

 今回もインターネット広告代理店におけるデータ分析に特化したわけではなく、データマイニングの一般的な方法論を記事にします。

 前回(主成分分析の記事)も書きましたが、社内外含めて、統計学やデータマイニングの流行の波の中で、統計学やデータマイニングの講師を依頼されることがあります。私は社会に出てからデータマイニングを勉強したので、本当に正しく理解しているかと不安になります。

不安解消のため、備忘録を兼ねて書きました。

色々意見いただければ幸いです。

(線形判別を選んだ理由は特にありません。)

参考図書はPRMLです。
パターン認識と機械学習 上/丸善出版

¥7,020
Amazon.co.jp

多少読みにくいとのご意見もある本ですが、個人的にはとても明快に書いてあると思いますので、お勧めです。


線形判別法の考え方

基本的な考え方はとても簡単です。

データがある場合に、似た者同士でデータを分けたいとして、直線(※)を引いて、データを分けるという考え方です。この直線のことを「決定面」と言います。図では緑の線です。

(※)3次元以上の場合は平面や超平面

要するに線形判別法の目標は、「よい感じの決定面を引くこと」です。

直線が引ければ、新しいデータが入ってきたときも、それの上下でデータをクラス分けできて嬉しいです。


決定面の性質

決定面を数式で表現すると、線形式(比例式)で表すことができます。

wは決定面の傾きを表す量です。この式に、y=0の制限を付けると、図の中の線(決定面)を表します。なお、nは各点の添え字です。

決定面の性質は、決定面上の点x_A、x_Bを代入するとゼロになります。このことから、1式、2式を引き算すると、wと(x_A-x_B)が内積ゼロになる事が分かります。


内積ゼロは、直交しているという意味ですので、wは決定面に直交する事が分かります。すると、y=wxという元々の式は、ベクトルxのwベクトルへの射影という意味である事が分かります。yがw上でのxの値です。

wと射影の様子を図示すると以下の通りです。



準備色々

次に、目標であるよい感じの決定面を引きます。よい感じとは何かというと、以下で説明しますが、説明するのための部品となるような量を紹介します。

まず、クラス平均とその射影です。iはクラスの添え字です。(今、2クラスを考えています。)

クラス平均とは、各クラスにおける平均値(平均ベクトル)です。平均ベクトルをwへ射影した量がmです。

次に、クラス内分散です。

この量は、wに射影した後に、各xの平均値との差を評価しています。統計学上、大切な分散という量を各クラスで求めたことになります。

これで準備完了で、以下ではよい感じの決定面の決め方を紹介します。


コスト関数の定義

前回の主成分分析でも紹介しましたが、wの決め方として、適当なwの関数を定義して、それを最大化または最小化することにより、最も良いwを決めようという、変分原理の作戦をとります。

今回、フィッシャーの線形判別におけるコスト関数は以下の通りです。


この式の気持ち

 この式の分母は、クラス内分散の合計です。これは小さい方が良いです。つまり、各クラスは、ばらつきが小さい方が良いということです。分子は、各クラスの平均値の差ですから、これは大きい方が良いです。つまり、クラス間は離れていたほうが良いということです。

Jの最大化する事で、結果的に分母が小さい、分子が大きいような決定面と決めようというのが、この式の気持ちです。

よい決定面の決定が、Jを最大化する問題と解くという変分原理に書き換えられたので、そのまま、変分してもよいのですが、かっこよくて拡張性のある形にコスト関数の書き換えます。


S_B、S_Wともに共分散と呼ばれる式になっていて、前者はクラス間、後者はクラス内の共分散行列です。次に、変分して解も求めてみます。


コスト関数の解とその意味

wで偏微分して、Jが最も大きくなるwを求めます。

すると、主成分分析と同じように、変分原理の解と求めることは、イコール、クラス間とクラス内の共分散行列から作られる行列の固有値問題を解くことで表されました。

しかも、その固有値が、コスト関数になっています。


まとめ

まとめると、フィッシャーの線形判別は次の手順で求められます。

ステップ1
 クラス間共分散行列(S_B)、クラス内共分散行列(S_W)を計算する。

ステップ2
 S_new = S_W^{-1}*S_Bとして、行列(S_new)を作る。

ステップ3
 S_newの固有値問題を解いて、最も大きな固有値の固有ベクトルを求める。

すると、その固有ベクトルが、決定面を決める傾きwとなる。以上


 計算手順だけ見るとてもシンプルな方法ですが、途中で変分原理などを作っていて、とても美しい方法だと感じました。


おわりに

フィッシャーの線形判別は、コスト関数の解釈が簡単なので、理解がとても簡単です。

PRMLでは、この方法の前に、最小二乗法による方法もありますが、そちらはコスト関数の解釈がよく考えないと分からなかったりしましたが、フィッシャーの方法はシンプルで理解しやすいです。

ご興味ある方は、本を購入して勉強してみてください。※この内容は上巻です。


以上

終わり