DATA-SCIENCE

現在の機械学習分野を概観するための基礎知識  ~一般的な分析業務の手順とその留意点~ (2)

それでは、n次元のオレンジの体積比はどうなるでしょうか?一般に、半径rn次元の球の体積Vは次のように表すことができます。

V_{all} = c_{n} \cdot r^n

ここで、c_{n}はその次元に対応する係数を表し、3次元の場合は4\pi/3に一致します。同様に、皮部分の体積は、

V_{skin} = c_{n} \cdot (r-d)^n

となるので、n次元のオレンジ全体と皮の体積比は次のように表されます。

\delta V = 1-(1-\frac{d}{r})^n

横軸に次元数、縦軸に体積比をとってプロットしたのが次の図です。

img2

3次元では27%程度だった皮の割合が、10次元では約65%、20次元では約90%が皮の体積で占有されていることが分かります。すなわち、高次元球体上にランダムに点をプロットしたとしても、中心部の近傍には点がほとんど存在せず、大部分は表面に付着することを意味します。表面上に集中するということは、中心から見てほとんどの点は等距離にあることとなります。証明は省略しますが、これは各点間の距離分布が徐々に同程度になることと同義となります。したがって、特徴をより正確に反映させようと次元を増やした結果、かえって特徴が消失していってしまうことになります。

 次元の呪いを生じさせる要因としてもう一つ、「必要な学習サンプル数の爆発的な増加」もあります。まずは単純な例として、コインとサイコロを1000回ずつ投げる試行で考えてみましょう。両者とも、データの次元としては1次元ですが、その1次元を分割するグリッド数が異なります。コイントスの試行は1次元を2分割(表と裏)し、サイコロを振る試行では6分割(1から6の目)します。なお、この試行を現実の世界で実現するのは非常に骨が折れるので、今回はプログラミングの力を借りて、仮想世界で実験を行いました。その結果の図がこちらです。

img3

左側のグラフはコイントスを1000回行ったときに、表(head)と裏(tail)が出現する確率が0.5 ( =1/2 ) 近傍に収束する様子を、右側のグラフはサイコロを振ったときの1から6までの目が出る確率がそれぞれ0.167 ( = 1/6 ) 近傍に収束する様子を表しています。両方のグラフにおいて、縦軸が確率、横軸は試行回数を表しているのは共通です。どちらのグラフでも、試行回数が少ないところでは、それぞれの確率がバタついているようですが、回数を重ねるごとに、徐々にそれぞれの真の値に近づいていることが分かると思います。この結果をもう少し定量的に評価してみましょう。

ページ: 1 2 3

この記事をシェアする