次元削減(2)

では次元削減をすると何がメリットなのでしょうか? 「次元削減(1)」でお見せしたような2次元のデータを1次元のデータに変換するような例ではあまりピンと来ませんが、100次元のデータを10次元に削減する、というような例を考えれば、次元削減がデータの通信効率を高め、保存に必要なデータサイズを削減するのに大きな効果があることが想像出来ます。また、10次元のデータを2次元や3次元に次元を削減することで視覚化することも出来ます。もちろん、多くの次元を削減しているので視覚化したものは不正確なものであるのですが、それでも何がしかの状況把握を可能にしてくれます。次元削減は機械学習の効率を高めるのにも利用されています。


たとえば簡単なパーセプトロンを考えてみましょう。データは2次元だとします。本当は10次元とかの例を出したいのですが、図示できないので(インパクトが少ないのですが)2次元の例を出します。ここでの問題は、あるデータを入力した時、それがある集合に属するかどうかを判別することだとします。まず、訓練データをこのパーセプトロンに学習させます。訓練データは下の図のようになっているとしましょう。

青い点は集合に属することを意味し、赤い点は属さないことを意味するとします。パーセプトロンは青い点の領域と赤い点の領域の境界線を設定することで学習を完了させますが、パーセプトロンの能力上の制約から、境界線としては直線しか引けません。
w_xx+w_yy-h=0
と表すことが出来ます。そして、パーセプトロンは訓練の間、w_x,w_y,hの3つのパラメータを調整して、何とかうまく全ての青い点がw_xx+w_yy-h>0の領域に入り、全ての赤い点がw_xx+w_yy-h<0の領域に入るようにします。ということは、(w_x,w_y,h)の3次元の空間内をさまよって最適な点を見つけようとします。




ところがこの訓練データを主成分分析してみたところ、これらのデータがほぼ一方向に並んでいることが分かったとします。今の例では人間が見てすぐに気づくのですが、データが10次元とか100次元だったらこんなことは直感的には分かりません。




そこでこれらの訓練データを第1主成分の座標軸で変換して1次元のデータにしてしまいます。つまり2次元から1次元への次元削減です。そうすると、問題は1次元の線の中で境界点を求める問題に変換出来ます。今回は変数は2個で済みます。
w_xx-h=0
つまり、今回はパーセプトロン(w_x,h)の2次元の空間内をさまよって最適な点を見つけることになり、最適解を見つけるまでのステップ数が大幅に少なくなります。これが2次元から1次元への次元削減でなく、10次元から3次元への次元削減であったならもっと効果があることでしょう。


このように次元削減機械学習において大きな効果を持ちます。