6.3 高次元空間での局所回帰:次元の壁を超える

「データから予測を行いたい」。これは統計学の基本的な目標です。

例えば、身長から体重を予測したい。ある人が170cmなら、その周辺のデータを参考に予測する――これがカーネル平滑化の基本アイデアでした。

しかし現実のデータは、複数の変数が絡み合っています。身長だけでなく、年齢、運動習慣、食事量...。1つの変数だけでなく、複数の変数を同時に考慮した予測がしたい。

ここで自然な疑問が湧きます:「1次元でうまくいった方法を、そのまま高次元に拡張できないか?」

答えは「できる、しかし深刻な問題が待ち受けている」です。

この章では、局所回帰を高次元に拡張する方法と、そこで直面する「次元の呪い」、そしてそれを乗り越えるための構造化アプローチを探ります。

この章を読み終えると:

  • 局所回帰を2次元・3次元に拡張できる
  • なぜ高次元で局所回帰が難しいのか理解できる
  • 構造を仮定して高次元データを扱う方法がわかる

1次元から多次元へ

1次元のカーネル平滑化では、ターゲット点(予測したい点)$x_0$の近くにある点に重みをつけて平均を取りました。

カーネルとは、「どの点にどれだけの重みをつけるか」を決める関数です。近い点ほど大きな重み、遠い点ほど小さな重みを与えます。

この考え方は、実は驚くほど自然に多次元へ拡張できます。

2次元の場合を考えてみましょう。ターゲット点が $(x_{01}, x_{02})$ にあるとき、各データ点 $(x_{i1}, x_{i2})$ との「距離」を測り、近い点ほど大きな重みをつけます。

例えば、不動産の価格予測を考えてください。「広さ」と「駅からの距離」という2つの変数があります。予測したい物件(70平米、駅から5分)に近い物件(似た広さで、似た距離感)ほど、その価格を重視するわけです。

数学的には、1次元のカーネル:

$$K_\lambda(x_0, x) = D\left(\frac{|x - x_0|}{\lambda}\right)$$

を、多次元ではユークリッド距離(2点間の直線距離)を使った形に拡張します:

$$K_\lambda(x_0, x) = D\left(\frac{||x - x_0||}{\lambda}\right)$$

各記号の意味:
$x_0$:予測したいターゲット点
$x$:データ点
$||x - x_0||$:2点間のユークリッド距離(直線距離)
$\lambda$:「近い」と見なす範囲の広さ(バンド幅
$D$:距離が大きいほど小さくなる関数(例:ガウシアン)

2次元でのユークリッド距離は、ピタゴラスの定理と同じです:

$$||x - x_0|| = \sqrt{(x_1 - x_{01})^2 + (x_2 - x_{02})^2}$$
1次元から2次元へのカーネル拡張を視覚化

カーネル関数 $D$ にはガウシアンやEpanechnikov、tri-cubeなど、1次元と同じものが使えます。この拡張により、2次元でも3次元でも、理論上は任意の次元で局所回帰が可能になります。

多次元での局所線形回帰

局所定数フィット(近傍の平均を取る方法)を多次元に拡張すると、境界付近でバイアス(予測の系統的なずれ)が生じます。これは1次元でも見た問題でした。

そこで、局所線形回帰の出番です。多次元でも同じアイデアが使えます:ターゲット点 $x_0$ の周りで、超平面をローカルにフィットするのです。

超平面とは何でしょうか?段階的に考えましょう:

フィットの「複雑さ」を制御するパラメータとして、多項式の次数 $d$ があります:

ターゲット点 $x_0$ での局所回帰は、以下の重み付き最小二乗問題を解きます:

$$\min_{\beta(x_0)} \sum_{i=1}^{N} K_\lambda(x_0, x_i)(y_i - b(x_i)^T \beta(x_0))^2$$

式の意味:
$K_\lambda(x_0, x_i)$:データ点 $x_i$ への重み(近いほど大きい)
$y_i$:データ点 $x_i$ での実際の値
$b(x_i)^T \beta(x_0)$:フィットしたモデルによる予測値
括弧内の2乗:予測誤差の2乗
合計:重み付きの予測誤差の総和

これを最小化する $\beta(x_0)$ を見つけ、推定値 $\hat{f}(x_0) = b(x_0)^T \hat{\beta}(x_0)$ を得ます。

2次元空間での局所線形回帰(平面フィット)

多次元での局所線形回帰の大きな利点は、境界補正が自動的に行われることです。カーネルが非対称になる境界付近でも、直線/平面フィットが自然にバイアスを修正してくれます。

境界効果の深刻化

ここで、深刻な問題に直面します。

1次元でも境界付近ではカーネルが非対称になり、バイアスが生じました。しかし多次元では、この問題が急激に悪化します。

なぜでしょうか?

考えてみてください。1次元の場合、データが区間 $[0, 1]$ に分布しているとします。境界から距離 $r$ 以内にある点の割合は、大雑把に言って $2r$ です(両端で $r$ ずつ)。

$r = 0.1$ とすると、境界付近の点は全体の約20%です。

2次元で正方形 $[0, 1] \times [0, 1]$ の場合はどうでしょう?境界から距離 $r$ 以内の領域は、正方形の「縁」の部分です。その面積は約 $4r - 4r^2 \approx 4r$$r$ が小さいとき)です。

$r = 0.1$ とすると、境界付近の点は全体の約40%です。

3次元の立方体では?約 $6r$ で、$r = 0.1$ なら約60%です。

パターンが見えてきましたか?

次元が上がると境界付近の点の割合が増えることを示す

次元が高くなるほど、ほとんどの点が「境界付近」に位置するようになるのです。これは「次元の呪い」の一つの現れです。

高次元空間では、データ点の大部分が境界効果の影響を受け、バイアスの問題から逃れられなくなります。

境界から距離 $r$ 以内にある点の割合(概算):
1次元:$\approx 2r$$r = 0.1$ で約20%)
2次元:$\approx 4r$$r = 0.1$ で約40%)
3次元:$\approx 6r$$r = 0.1$ で約60%)
p次元:$\approx 2pr$

次元の呪い

境界効果の悪化は「次元の呪い」の一つの顔に過ぎません。実は、もっと根本的な問題が高次元空間には潜んでいます。

局所回帰の基本的なアイデアを思い出してください:「近くの点を使って局所的にモデルをフィットする」。ここで「近く」とは何でしょうか?

例えば、訓練データの10%を使って局所的なフィットを行いたいとしましょう。

1次元$[0, 1]$ にデータが一様分布している場合、10%の点を含む近傍の幅は約 $0.1$ です。これは空間全体(幅1)の10%しか占めません。

2次元の単位正方形ではどうでしょう?10%の点を含む近傍の面積は $0.1$ ですから、その一辺の長さは $\sqrt{0.1} \approx 0.316$ です。空間の31.6%を占めます。

10次元では?$0.1^{1/10} \approx 0.794$ です。空間の79.4%を占めます。

高次元で「局所的」な近傍がどれだけ広くなるかを示す

高次元になるほど、「局所的」な近傍が空間全体を覆うようになるのです。

これでは「局所」回帰の意味がありません。全体を使っているのと変わらないからです。

ここで矛盾する2つの要求があります:

高次元では、この2つを同時に満たすことが不可能になります。これが次元の呪いの本質です。

データの10%($r = 0.1$)を含む近傍の一辺の長さ:
$\text{辺の長さ} = r^{1/p} = 0.1^{1/p}$

次元 $p$辺の長さ空間に占める割合
10.10010%
20.31631.6%
50.63163.1%
100.79479.4%

構造化による打開策

次元の呪いは避けられないのでしょうか?

実は、打開策があります。それは「構造」を仮定することです。

最も強力な構造の一つが加法モデルです:

$$f(X_1, X_2, \ldots, X_p) = \alpha + \sum_{j=1}^{p} g_j(X_j)$$

式の意味:
$f$:予測したい値(例:不動産価格)
$\alpha$:基準値(全体の平均)
$g_j(X_j)$:変数 $X_j$ だけによる寄与(例:広さの影響、駅距離の影響)

これは、応答変数が各予測変数の「独立した」関数の和であると仮定しています。

具体例で考えましょう。不動産価格を予測するとき:

価格 = 基準価格 + 広さによる影響 + 駅距離による影響

この仮定では、「広さが大きくて駅が近い」場合の追加ボーナスはありません。各変数の効果を単純に足し合わせるだけです。

現実には「交互作用」(変数の組み合わせ効果)が存在することもありますが、この単純化により大きなメリットが得られます。

加法モデルの構造を視覚化

$g_j$ は1次元の関数なので、1次元の局所回帰で推定できます。次元の呪いを完全に回避できるのです。

もう少し柔軟なモデルとして、「2次までの交互作用を許す」構造もあります:

$$f(X) = \alpha + \sum_{j} g_j(X_j) + \sum_{k < \ell} g_{k\ell}(X_k, X_\ell) + \cdots$$

高次の交互作用を打ち切ることで、推定すべき関数の複雑さを制御します。構造を仮定するとは、「すべての可能性を考えない」ことです。それはバイアスを導入するかもしれませんが、分散を劇的に減らし、次元の呪いを緩和します。

変動係数モデル

加法モデル以外にも、構造化の方法があります。その一つが変動係数モデルです。

予測変数を2つのグループに分けます:$(X_1, \ldots, X_q)$ と残りの変数を $Z$ としてまとめます。そして、次のモデルを考えます:

$$f(X) = \alpha(Z) + \beta_1(Z) X_1 + \cdots + \beta_q(Z) X_q$$

式の意味:
$X_1, \ldots, X_q$:主要な予測変数
$Z$:係数を調整する「条件」変数
$\alpha(Z), \beta_1(Z), \ldots$$Z$ に依存して変化する係数

これは面白いモデルです。$Z$ を固定すると、$X_1, \ldots, X_q$ に対して単なる線形モデルになります。しかし、係数は $Z$ に依存して変化します。

具体例:大動脈の直径

人間の大動脈(心臓から出る大きな血管)の直径を、年齢の関数としてモデル化してみましょう。

単純なモデル:直径 = 切片 + 傾き × 年齢

しかし、この関係は「大動脈のどの位置で測定するか」によって変わります。心臓に近い部分と遠い部分では、年齢による太り方が異なるかもしれません。

変動係数モデルでは:

係数が他の変数に依存して変化する様子

これにより、「位置が変わると、年齢との関係も変わる」というパターンを捉えられます。

構造($X$ に対する線形性)を仮定することで、$Z$ の次元が低ければ、次元の呪いを避けながら柔軟なモデリングが可能になります。

構造化カーネル

構造を導入する別の方法として、カーネル自体を工夫することもできます。

標準的なカーネル $K_\lambda(x_0, x) = D(||x - x_0||/\lambda)$ は、すべての変数(座標)を等しく扱います。しかし、すべての変数が同じ重要度を持つとは限りません。

例えば、不動産価格の予測で「広さ」と「築年数」を使う場合、価格への影響度が異なるかもしれません。

そこで、構造化カーネルを導入します:

$$K_{\lambda, A}(x_0, x) = D\left(\frac{(x - x_0)^T A (x - x_0)}{\lambda}\right)$$

ここで $A$ は「どの方向の距離を重視するか」を決める行列です。

直感的に言えば:

異なる行列Aによるカーネル形状の変化

実用的には、各変数を単位標準偏差にスケーリングする(変数を標準化する)のがデフォルトの戦略です。これにより、異なる単位(例:平米とメートル)の変数を公平に扱えます。

構造化カーネルは、特定の方向への変動を強調したり、無視したりする柔軟性を提供します。これも次元の呪いに対する一つの対処法です。

実践的なアドバイス

高次元データで局所回帰を使う際の実践的なアドバイスをまとめます。

1. 次元を見極める

局所回帰が実用的なのは、せいぜい2〜3次元までです。それ以上の次元では、次元の呪いが深刻になります。4変数以上あるなら、構造の仮定が必要です。

2. 構造を仮定する

高次元データでは、構造の仮定が不可欠です:

3. 可視化を活用する

3次元以上のデータを直接可視化するのは困難です。代わりに条件付きプロットを使いましょう。他の変数を固定(条件付け)した上で、残りの1〜2変数との関係を見ます。

例:気温、風速、日射量とオゾン濃度の関係を調べるとき、「気温と風速を固定して、日射量とオゾンの関係を見る」ことを複数の気温・風速の組み合わせで行います。

4. 変数の標準化

ユークリッド距離を使う前に、各変数を標準化(平均0、標準偏差1)することが重要です。これにより、単位の異なる変数(例:年齢(年)と所得(万円))を公平に扱えます。

5. バイアス-分散トレードオフを意識する

構造を仮定するとバイアス(モデルの仮定が間違っている場合の誤差)が入りますが、分散(データのばらつきによる不安定さ)が減ります。どの程度の構造を仮定するかは、データのサイズと問題の複雑さに依存します。

高次元局所回帰の選択肢の概要

核心: 高次元での局所回帰は、「そのまま使う」のではなく、「構造と組み合わせて使う」ことが成功の鍵です。

まとめ

この章で学んだことを振り返りましょう。

多次元への拡張

次元の呪い

構造による打開策

実践的な指針

章全体の学習内容を視覚的にまとめる

応用例

次の章では、局所尤度法(ロジスティック回帰などを局所化)やカーネル密度推定について学びます。