seegongsik
単語帳
工業数学

主成分は最も広がる方向だ

データの雲で最も広がる方向を探し、主成分は共分散行列の固有ベクトルで、その方向だけ残せば次元が減る

机に粟ひと握りをまいたと考えてみてください。粒が丸く散らばらず、一方向に細長く横たわっていたら、誰でも一目で「この方向に最も広く広がっているな」と指せますよね。主成分分析(PCA)が問うのはまさにこれです。データの雲で最も広がる方向はどこか。その方向が第一主成分(PC1)であり、それに直角な二番目に広がる方向が PC2 です。驚くことに、この二方向はデータの共分散行列の固有ベクトルで、各方向の広がり具合(分散)がそのまま固有値です。第8講で見たあの固有の考えが、今度はデータの広がりにそっくり使われます。

点の雲をドラッグして回してみてください。ハンドルをつかんで回転させると、雲全体が一緒に傾きます。どの角度に回しても、点を包む金の楕円(共分散を1シグマで描いたもの)が雲とともに回ります。その楕円の中で最も長い軸(緑)が PC1、それに直角な短い軸(橙)が PC2 です。二つの軸の長さは各方向の分散の平方根、すなわち標準偏差です。雲を回しても PC1 はつねに最も広く広がる方をきっちり指します。これらの軸こそ、点から計算した共分散行列の固有ベクトルです。

今度はスライダーで雲の角度だけを変えてみてください。二本の矢印、PC1(緑)と PC2(橙)がずっとついてきます。PC1 は分散が最も大きい方向、PC2 はそれにきっかり直角な二番目の方向です。スライダーをどこに置いても、二つの軸はつねに90度を保ちます。対称な共分散行列の固有ベクトルはつねに互いに直交するからです。だから主成分は、重なり合わない方向へデータをきれいに分解してくれます。一方の軸の情報がもう一方へ漏れないということです。

なぜ PC1 が特別なのか、自分で測ってみてください。スライダーで一方向の直線を回すと、すべての点がその直線へ垂直に投影され、足跡を残します。その足跡が直線上でどれだけ広がっているかが、その方向の分散です。バーがその値を示します。直線をあちこち回すと、分散は直線が PC1 と並ぶとき最大に跳ね上がり、PC2 と並ぶとき最小に沈みます。だから PC1 は「分散を最大にする方向」とも定義されます。最も広がる方向こそ、情報が最も多く生き残る方向です。

いよいよ本当の使いどころ、次元削減です。トグルで PC1 か PC2 のどちらか一つの軸だけを残してみてください。点はその軸の上へ平らに押しつぶされ、捨てられた直角方向は破線の尾(復元誤差)として現れます。読み取り値は捨てた軸の分散、つまり失った情報の量です。PC1 を残すと尾が最も短くなります。最も広がっていない方向を捨てたので、失ったものが最も少ないのです。2D を 1D に縮めつつ損失を最小に抑えること、それが PCA でデータを圧縮するやり方です。

最後に、本当に何次元が必要かを問う道具です。スライダーで雲を丸い形からとても細長い形まで伸ばしてみてください。二つのバーが固有値の比を示します。上が ラムダ1/(ラムダ1+ラムダ2)、下が ラムダ2/(ラムダ1+ラムダ2) です。雲が丸いと二つのバーはほぼ五分五分なので、一つの軸だけ残すと半分を失います。細長くなるほど PC1 のバーは100パーセントに近づき、PC2 はほぼ0になります。そのときは一つの軸だけ残しても情報をほとんど守れます。この「説明された分散」の比こそ、データを何次元まで安全に縮められるかの物差しです。

実際に使うPCA は、データの雲で最も広がる方向を見つける仕事です。点の共分散行列を作ってその固有ベクトルを取れば、PC1 は分散が最も大きい方向、PC2 は直角な次の方向で、二つの固有値が各方向の分散です。第8講の固有の考えそのものですが、今度は変換行列ではなくデータの共分散行列であり、正解表なしに構造を見つける教師なし学習である点が違います。PC1 へ投影すれば最も少ない数で最も多くの情報を守るので次元削減になり、説明された分散の比が何次元あれば十分かを教えてくれます。顔認識の固有顔、遺伝子データの要約、ノイズ除去が、すべてこの一つの考えの上に立っています。
工業数学
このページがお役に立ったなら支援する