2.5 高次元における局所的手法 — 次元の呪い
k-最近傍法は「近くのデータから学ぶ」というシンプルで強力なアイデアだった。 でも、変数(特徴量)が増えると、この「近さ」という概念が崩壊していく。 これが「次元の呪い(Curse of Dimensionality)」だ。 なぜ高次元空間では直感が通用しないのか、そして呪いをどう回避するかを見ていこう。
変数が増えると何が起きる?
前のセクションで、k-最近傍法(k-NN)を学んだ。 新しいデータ点の周囲にある訓練データを見て、そこから予測する手法だ。
直感的には強力に見える。データが十分あれば、どんな複雑な関数でも近似できそうだ。 入力の近くのデータを集めて平均すれば、理論的に最適な予測 —— つまり「その入力が与えられたときの出力の平均(条件付き期待値)」 —— に近づけるはずだから。
では、こんな状況を考えてみよう。
入力変数が1つのとき(1次元)、訓練データが100点あればそこそこ「近い」点が見つかる。 入力変数が10個のとき(10次元)、同じ100点が空間を密に埋められるだろうか?

答えはNOだ。アニメーションを見てほしい。 1次元の数直線上では点が密に並んでいる。 2次元の正方形の中では、同じ点数でも間隔が広くなる。 3次元の立方体になると、点はさらに疎らになる。
そして、この現象は10次元、100次元になると爆発的に悪化する。 これが「次元の呪い(Curse of Dimensionality)」と呼ばれる問題の本質だ。 このセクションでは、なぜ高次元空間では直感が通用しないのかを、具体的な数値で見ていこう。
ハイパーキューブの呪い — 「近所」はどれだけ大きい?
具体的に考えよう。
p次元の単位超立方体(全辺の長さが1の箱)を考える。 訓練データは均一に分布しているとする。
全データの中からr割(例えば1%)に相当する点を集めて「近所」とするには、 その近所の超立方体の辺の長さはどれくらい必要か?
ここで $e_p(r)$ は p次元空間でr割をカバーするのに必要な辺の長さだ。

グラフを見ると一目瞭然だ。次元が増えるにつれ、辺の長さが急速に1(全体)に近づいていく。
p=10、r=0.01(1%)のとき:
各軸の63%もの範囲をカバーしなければならない!
p=10、r=0.1(10%)のとき:
各軸の80%もの範囲だ。
これはもはや「局所的」ではない。「近所」が実際には空間全体にまたがってしまっている。
比較しよう。1次元なら10%をカバーするのに必要な辺の長さは0.1(10%)だけ。 10次元なら同じ10%のデータをカバーするのに80%の範囲が必要になる。 k-NNが「局所的な学習」のはずなのに、高次元では局所的な学習が不可能になってしまうのだ。
端に集まる — もう一つの罠
高次元空間では別の奇妙な現象も起きる。
すべてのサンプル点が「端」に近くなる。
直感的に考えてみよう。p次元の球の中に点をランダムにまき散らす。 次元が高くなると、球の「中心付近」の体積の割合が急激に小さくなる。 その結果、ほとんどの点が球の外側(境界付近)に集まってしまう。

p次元の単位球(原点を中心とする半径1の球)にN個の点を均一に配置したとき、 原点に最も近いデータ点はどれくらいの距離にあるだろうか? 計算すると:
例えば、N=500点、p=10次元のとき:
つまり、最も近いデータ点でも半径の52%の距離にある!
500点もあるのに、一番近い点が球の中心からそんなに離れているのだ。 アニメーションで、外側(明るい黄色)の点だけが残り、中心付近(暗くなった)の点が 実質的に「使えない」状態になる様子を確認してほしい。
これは何を意味するか。原点(テスト点)から見て、訓練データのほとんどが「境界付近」に集まっている。 予測には「補間(内挿)」ではなく「外挿」が必要になる。
外挿は難しい。隣接する点から学ぶのではなく、 遠く離れた点から「想像」しなければならないからだ。
次元がMSEを壊す — シミュレーションで見る
実際に数値で確かめよう。
以下の設定でシミュレーションを行う:
- 真の関数: $f(X) = e^{-8\|X\|^2}$(原点付近でピークを持つガウス型の関数)
- 訓練データ: $X_i \sim \text{Uniform}[-1, 1]^p$、N=1000点
- 予測手法: 1-最近傍法(1-NN)でテスト点 $x_0 = 0$ を予測
予測誤差(MSE)はバイアスと分散の和として書ける:

次元p=1のとき:
最近傍は原点に非常に近い(距離≈0)。 関数値も $f(0) = 1$ に近い。バイアスも分散も小さい。
次元p=10のとき:
99%以上のサンプルで、最近傍は原点から0.5以上離れている。$f$ は原点から離れると急速に0に近づくため、$\hat{y}_0$ はほぼ0になる。 バイアスは最大となり、MSEは1.0に近づく(完全に外れた予測)。
グラフを見ると、分散(緑)はほとんど変わらないのに、 バイアス²(赤)が次元の増大とともに急上昇し、それがMSE全体(青)を押し上げている。 これが「次元の呪い」の実害だ。
線形モデルの救い — 構造が呪いを破る
では、こんな問いが生まれる。
「高次元では何も予測できないのか?」
答えは否だ。ただし、条件がある。
真の関係が線形だと仮定するなら:
最小二乗法でフィットすると、テスト点 $x_0$ での期待予測誤差(EPE)は次のように近似できる:
変数の数 $p$ と誤差は線形の関係だ。

k-NNでは次元の呪いが「指数的」に効いていた。 線形モデルでは $p$ の増加は「線形」に効くだけだ。 グラフで確認できるように、高次元になるほど両者の差が広がっていく。
なぜ線形モデルは呪いを回避できるのか?
k-NNは「近所」の概念に依存する。近所が崩壊すると手が使えない。 線形モデルは「全体的な傾き(β)」を学ぶ。局所的な近さに依存しない。
仮定が正しければ、線形モデルは高次元でも強力だ。 仮定が間違えていれば、k-NNが有利になる場合もある。
これが機械学習におけるバイアスとバリアンスのトレードオフの根本的な理由だ。 「強い仮定を置く(バイアスを増やす)」ことで「分散を下げ、次元の呪いに対処する」という選択が常に存在する。
まとめ — 次元の呪いと機械学習の本質
2.5節で学んだことをまとめよう。

次元の呪い(Curse of Dimensionality)の正体:
1. 局所的な近所が局所的でなくなる
p次元で10%のデータをカバーするには各軸の80%が必要になる。
辺の長さは次元とともに1に近づく。
2. データが端に集まる
高次元では全データが球の境界付近に位置する。 内挿ではなく外挿が必要になる。
3. 必要なデータ量が指数的に増える
1次元で100点が密なら、10次元で同じ密度には$100^{10} = 10^{20}$ 点が必要になる。 現実には集められないデータ量だ。
4. 解決策は「仮定」を置くこと
線形性を仮定すれば次元の呪いを線形スケールに抑制できる。 滑らかさを仮定すれば適度な汎化が得られる。 この仮定が「バイアス」を生む。 バイアスとバリアンスのトレードオフの根本がここにある。
次のセクション(2.6)では、統計モデルという枠組みで、 この仮定をどう組み込むかを学ぶ。 「モデルを仮定する」ということが単なるテクニックではなく、 高次元での学習を可能にする本質的なアプローチであることが見えてくるはずだ。