みやぴら

みやぴら

大学院で同期現象の研究してる人。

グラフの見た目に騙された...「フィッシャーの線形判別 (Fisher's LDA)」

 

 

先日、「二つの異なるガウス分布から生成された(x,y)のデータセットを、Fisher's LDAを用いてクラスタリングしろ」という課題が出たので実装したのですが、タイトルの通り出力グラフの見た目に騙されて1日潰したので、その経験をここに残しておきたいと思います(自戒の念を込めて)。

 

Fisher's LDAの詳細はここでは省いて、問題が生じた流れをまとめておきます。

 

 

 

 

まず、二つの異なるガウス分布から得られたデータセットは以下のようになりました。

f:id:miya_pirafu03:20210608223856p:plain

図1. 平均ベクトルと共分散行列が異なる2つのガウス分布から生成されたデータセット

 

 

見た感じ、2つのクラスターに分けられそうです。LDAでやりたいことは、勘で境界を決めるのではなく、定量的に閾値を決めるということです。

 

そのために、このデータの次元を削減することを考えます。つまり、2次元データ(x,y)を特徴をなるべく削らずに1次元に落とします(そのような直線を求めます)。

 

 

 

そして、LDAにより求められた直線をプロットしたのが以下の図になります。

f:id:miya_pirafu03:20210608224745p:plain

図2. 2次元の元データのクラスター情報をなるべく落とさないような直線

 

 

この直線が元のクラスター情報を損なっていないことは、全データをこの直線上に射影したヒストグラムを見れば直感的に分かります。

f:id:miya_pirafu03:20210608225540p:plain

図3. 直線上に射影した全データのヒストグラム

 

図3より、見事にクラスタリングできていることがわかります(閾値はこのヒストグラムより求まる)。

 

 

  

 

これで無事、LDAによりクラスタリングできたので良かった......のですが、タイトルにある「グラフに騙された」事件は、図2を求める際に発生しました。実は図2は問題が解決した後に修正して得られたもので、最初は以下のような図が出力されました。

f:id:miya_pirafu03:20210608230310p:plain

図4. 当初得られた図(プロットしている内容は図2と同じ)

 

この図は、図2とグラフの範囲が異なっているだけです(図2はxlim=ylim=(-4,10)、図4はxlim=(-2,6),ylim=(-7.5,10))。

 

それだけの違いですが、この図を見るとクラスタリングがうまくいっていないように見えてしまいます。つまり、全データをこの直線上に射影すると、黄色点と青点が混じるように思えます。もちろん実際はうまくいっているので、このグラフの見せ方は不親切だということになります。

 

 

 

 

 

以上の件より、グラフは範囲によって視覚的な印象を大きく変えることを体感しました。(こんな問題で1日溶けた...)

また、データ分析などで用いるグラフは適切なものを使うべきということ(この場合は図3が適切)、グラフは視覚的にわかりやすいが、容易に印象を操作できることも学びました。