6.4–6.7 局所尤度・カーネル密度推定・放射基底関数

1次元のカーネル平滑化から始まった旅は、どこまで広がれるのか?

前のセクションでは「近くの点に重みをつけて回帰する」という局所線形回帰を学んだ。 シンプルだが強力なアイデア。しかし、現実のデータはもっと複雑だ。

このセクションでは、カーネルというアイデアを拡張して、これらすべてに対応する。 回帰から分類へ、1次元から多次元へ、局所フィッティングから密度推定へ。

「カーネル」という一本の糸が、統計学習の多様な手法を縫い合わせる様子を一緒に見ていこう。

このセクションで学ぶこと:

  • 高次元データに対応するための構造化カーネル(加法モデル、ANOVA分解)
  • ロジスティック回帰を局所化した局所尤度推定
  • データ分布そのものを推定するカーネル密度推定(KDE)
  • ナイーブベイズ分類器とGAMの関係
  • カーネルを基底関数として使う放射基底関数(RBF)ネットワーク

高次元での構造化局所回帰

1次元でのカーネル平滑化は直感的でうまく機能した。では、変数が2つ、3つ、10個になったらどうなるだろう?

ここで「近さ」の感覚が根本から変わる問題が起きる。 1次元で「近くの10%のデータ」を使うなら、区間の長さは全体の10%でいい。 2次元では、面積の10%をカバーするには一辺が約32%の正方形が必要だ。 10次元では? — 0.1の10乗根は約80% になる。 全体の80%の範囲をカバーしないと、10%のデータが集まらない。

「近く」がもはや近くではない。これが次元の呪いが局所フィッティングに与える打撃だ。

等方カーネルから構造化カーネル(楕円)への変形
等方カーネル(円形)から構造化カーネル(楕円)へ:方向によって距離の重みを変える

しかし、データに構造を仮定することで、この呪いを乗り越えられる。 最もシンプルな仮定は加法モデルだ:

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

各変数 $X_j$ が独立に $f$ に寄与する、という仮定。 これが成り立つなら、各次元を個別にスムーズすればいい。$p$ 次元の問題が、$p$ 個の1次元問題に分解できる。

さらに精巧な構造がANOVA分解だ。 主効果(1変数の影響)、2変数の交互作用、3変数の交互作用…と段階的に複雑さを加える:

$$f(X_1, \ldots, X_p) = \alpha + \sum_j g_j(X_j) + \sum_{j<k} g_{jk}(X_j, X_k) + \cdots$$

必要な精度に応じて「どこまで交互作用を考慮するか」を選べる。 計算コストと予測精度のバランスを取る、実用的なアプローチだ。

構造化カーネルでは、各座標に異なる重みをつけることもできる。 行列 $A$(正定値行列)によって、重要な変数の方向に「引き伸ばした」距離を使う:

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

例えば $X_1$ 方向を重視するなら、$X_1$ 軸方向の距離を小さく見積もることで、 その方向の近傍を広げる。重要でない方向には鈍感に、重要な方向には鋭敏に——まるでGIFの楕円のように。

局所尤度 — 分類への架け橋

局所回帰では「残差の二乗和を最小化」した。 これは暗黙のうちに「誤差がガウス分布に従う」という仮定を置いている。 しかし、予測したいのが確率(0〜1の値)だったら?発生件数(非負整数)だったら?

そこで登場するのが局所尤度推定だ。

通常のロジスティック回帰では、すべてのデータを使ってパラメータ $\beta$ を推定する(グローバルなフィッティング)。 局所版では、ターゲット点 $x_0$近くの点に重みをつけて推定する:

$$l(\beta(x_0)) = \sum_{i=1}^N K_\lambda(x_0, x_i) \cdot \ell(y_i, x_i^T\beta(x_0))$$

$\ell(y_i, x_i^T\beta)$ は個々の観測の対数尤度。$K_\lambda(x_0, x_i)$ が近傍に重みをつける。 つまり、ターゲット点の近くでのみロジスティック回帰を「フィッティングし直す」。

グローバルロジスティック回帰(直線境界)から局所ロジスティック回帰(曲線境界)への変化
直線の分類境界(グローバル)が、データの分布に沿った曲線境界(局所)へと変形する

これにより、単一の線形境界ではなく、非線形な確率面を推定できる。 各クラス $j$ に属する確率は、位置 $x$ に応じて変化するパラメータ $\beta_j(x)$ で記述される:

$$\Pr(G = j | X = x) = \frac{e^{\beta_j(x)}}{1 + \sum_{k=1}^{J-1} e^{\beta_k(x)}}$$

$\beta_j(x)$$x$ に応じて変化する点がポイントだ。 グローバルなロジスティック回帰では $\beta$ は定数だったが、局所版では「どの場所でフィッティングするか」によってパラメータが変わる。

実際の応用例として、心臓疾患リスクの推定が挙げられる。 収縮期血圧とBMIが高いほどリスクが高い——しかし単純な線形境界ではなく、 変数の相互作用を捉えた非線形な確率面が得られる。

局所尤度は強力だが、計算コストが高い点には注意が必要だ。各予測点で独立した最適化が必要になる。 予測点が1000個あれば、最適化を1000回繰り返すことになる。

カーネル密度推定 — データの「かたち」を知る

ここで視点を大きく変える。

これまでは「$X$ から $Y$ を予測する」という問いだった。 今度は、「$X$ そのものの分布はどういう形か?」を問う。 データがどこに集まっていて、どこが疎なのかを知りたい。

ヒストグラムを思い浮かべてほしい。データをビン(箱)に分けて、各箱の高さを頻度にする。 シンプルだが粗い。箱の幅の選び方で見え方が全然変わるし、箱の境界で不連続が生じる。

カーネル密度推定(Parzen推定とも呼ばれる)は、もっとなめらかな方法だ。 アイデアはシンプル:各データ点 $x_i$ の上に「小さな山(カーネル)」を置き、 全データ点の山を足し合わせて密度を推定する。

データ点から個別カーネルが立ち上がり、それらの合計が密度曲線を形成する
各データ点に小さなガウシアン山を置き、それらを重ね合わせると滑らかな密度曲線が現れる
$$\hat{f}(x_0) = \frac{1}{N\lambda} \sum_{i=1}^N K_\lambda(x_0, x_i)$$

ガウシアンカーネルを使えば:

$$\hat{f}(x_0) = \frac{1}{N} \sum_{i=1}^N \frac{1}{\lambda\sqrt{2\pi}} e^{-\frac{(x_0 - x_i)^2}{2\lambda^2}}$$

$\lambda$(バンド幅)が小さければ山が鋭くなり、大きければ山が広がってなめらかになる。 バンド幅は推定の精度を左右する重要なパラメータだ——小さすぎるとギザギザ、大きすぎると平坦になりすぎる。

この推定量には面白い別の見方がある。経験分布(各データ点に確率 $1/N$ を置く)とガウシアンノイズの「たたみ込み(convolution)」と解釈できる。 つまり、データ点を少しぼかした(ガウシアンで平滑化した)分布というイメージだ。

$$\hat{f}(x_0) = \frac{1}{N} \sum_{i=1}^N \phi_\lambda(x_0 - x_i)$$

$\phi_\lambda$ はガウシアンカーネル。 各データ点を中心とした正規分布を平均することで、滑らかな密度推定が得られる。

密度から分類へ — ナイーブベイズ

カーネル密度推定から分類へのジャンプは一歩だ。

2クラスの分類問題を考えよう。 クラス1のデータの密度 $\hat{f}_1(x)$、 クラス2の密度 $\hat{f}_2(x)$ を別々に推定する。 次に、ベイズの定理でこれらを組み合わせる:

$$\Pr(G = 1 | X = x) = \frac{\hat{\pi}_1 \hat{f}_1(x)}{\hat{\pi}_1 \hat{f}_1(x) + \hat{\pi}_2 \hat{f}_2(x)}$$

$\hat{\pi}_k$ は各クラスの事前確率(観測割合)。 2クラスのカーネル密度が交差するところが、分類境界になる。

2クラスの1次元密度曲線が交差し、交点が分類境界になる様子
青(クラス1)とオレンジ(クラス2)の密度が交差する点が自然な分類境界を形成する

前のセクションとの違いに注目しよう。

  • Section 2の局所尤度$X$ から直接 $\Pr(Y|X)$ を推定する(判別アプローチ)
  • このSection 4:各クラスの密度 $f_j(X)$ を推定してから、ベイズの定理で $\Pr(G|X)$ を計算する(生成アプローチ)

どちらも分類に使えるが、密度推定ベースは「各クラスのデータ分布を学ぶ」という点で異なる。

ナイーブベイズ分類器は、高次元問題での賢いトリックだ。

$p$ 個の特徴量 $X_1, X_2, \ldots, X_p$ があるとき、$p$ 次元の密度を直接推定するのは困難(次元の呪い!)。 しかし、特徴量が独立だと仮定すれば:

$$f_j(X) = \prod_{k=1}^p f_{jk}(X_k)$$

各クラス $j$ の密度は、各特徴量の1次元密度の積になる。 つまり、$p$ 次元の問題が $p$ 個の1次元問題に分解できる!

「ナイーブ(単純)」な理由は、この独立性仮定が現実には成り立たないことが多いからだ。 でも、驚くべき事実がある:独立性が成り立たなくても分類性能が高いケースが多い。 なぜかは今でも理論的に完全には解明されていない、面白い謎だ。

対数オッズを計算すると、ナイーブベイズの構造が見えてくる:

$$\log\frac{\Pr(G = l | X)}{\Pr(G = J | X)} = \alpha_l + \sum_{k=1}^p g_{lk}(X_k)$$

$g_{lk}(X_k) = \log f_{lk}(X_k) - \log f_{Jk}(X_k)$。 これは一般化加法モデル(GAM)の形だ——各変数の影響を独立した非線形関数 $g_k$ で表し、それらを足し合わせる。 ナイーブベイズは、GAMの一種として解釈できる(第9章でGAMを詳しく扱う)。

$$\hat{\Pr}(G = j | X = x_0) = \frac{\hat{\pi}_j \hat{f}_j(x_0)}{\sum_{k=1}^J \hat{\pi}_k \hat{f}_k(x_0)}$$

放射基底関数 — カーネルを「基底」として使う

これまでのカーネル法は、予測点 $x_0$ の近傍だけを見る「局所的」な方法だった。 各予測のたびに近傍のデータを探し、その場でフィッティングする。

放射基底関数(RBF)は発想を転換する。 局所フィッティングではなく、カーネルを基底関数として明示的に展開する。 モデルを事前に構築しておき、予測のたびに計算する:

$$f(x) = \sum_{j=1}^M K_{\lambda_j}(\xi_j, x) \cdot \beta_j$$

$\xi_j$ は「プロトタイプ」(基底の中心)。$\lambda_j$ は基底の幅。$\beta_j$ は係数。

このモデルはグローバルに定義されている。$x$ がどこにあっても、すべてのプロトタイプの影響を受ける——ただし近いプロトタイプほど影響が大きい。

複数のRBF基底関数(ガウシアン山)が重み付きで組み合わさり1つの関数を形成する
各プロトタイプに対応するガウシアン基底(異なる色)の重み付き和(白)が、任意の形状の関数を近似する
$$f(x) = \sum_{j=1}^M D\!\left(\frac{\|x - \xi_j\|}{\lambda_j}\right) \beta_j$$

学習の手順はシンプルだ:

  1. プロトタイプ $\xi_j$ の位置と幅 $\lambda_j$ を決める:教師なし学習(例えばk-meansクラスタリング)で入力データから自動的に決定する
  2. 係数 $\beta_j$ を求める:通常の回帰(最小二乗法)で解く。基底が固定されていれば線形問題になる

または、プロトタイプ・幅・係数を同時に最適化することもできる(ニューラルネットワーク的なアプローチ)。

正規化RBFでは、各プロトタイプの影響を合計が1になるよう正規化する:

$$h_j(x) = \frac{K_\lambda(\xi_j, x)}{\sum_{k=1}^M K_\lambda(\xi_k, x)}$$

これにより、モデルがどの $x$ でも意味のある出力を返す(補間性が保証される)。 特に、学習データのない領域でも合理的な予測ができる。

RBFネットワークはニューラルネットワークの一種として見ることもできる。 シグモイド活性化の代わりにガウシアンカーネルを使う隠れ層、と解釈できる。 これは次章(第11章)のニューラルネットワークへの橋渡しになる考え方だ。

まとめ — カーネルという統一言語

このセクションで学んだ内容を振り返ろう。

6.1〜6.3で局所回帰(近傍に重みをつけた回帰)を学んだ。 このセクションではそのアイデアを4つの方向に拡張した。

4つのカーネル法(局所回帰・局所尤度・密度推定・RBF)を統一的に示す4パネル図
カーネルという一本の糸が4つの手法を縫い合わせる:局所回帰・局所尤度・密度推定・RBFネットワーク
手法目的カーネルの使い方
局所回帰回帰近傍重み付き最小二乗
局所尤度分類・GLM近傍重み付き尤度最大化
密度推定(KDE)密度推定各点にカーネル山を配置
RBFネットワーク回帰・分類カーネルを基底関数として展開

すべての手法に共通するのは「距離に基づく重み付け」というカーネルの哲学。 近いものほど影響が大きい。距離の定義と幅パラメータ $\lambda$ を変えれば、柔軟に応用できる。

4つの拡張方向

  1. 構造化(6.4):高次元での次元の呪いに対抗するため、データに構造(加法性、交互作用の制限)を仮定する。
  2. 局所尤度(6.5):局所フィッティングを二乗損失から一般の尤度に拡張。ロジスティック回帰など任意のGLMを局所版にできる。
  3. 密度推定(6.6):目的変数なしに、入力 $X$ の分布を推定。カーネルをプロトタイプとして積み上げる。ナイーブベイズ分類器もこの枠組みで理解できる。
  4. 明示的な基底展開(6.7):局所フィッティングの代わりに、カーネルを基底関数として明示的に使う。RBFネットワークは、ニューラルネットへの橋渡し。

カーネルという概念は、これだけの多様な手法を統一する「言語」として機能している。 この視点を持つと、一見バラバラに見える手法が実は同じ原理に基づいていることがわかる。

次は第7章へ。「モデル評価と選択」——バンド幅 $\lambda$ の選び方も含め、 モデルの品質をどう測るかを学ぶ。 ここで学んだカーネル法のすべてに共通する「どうやって最適なパラメータを選ぶか」という問いに答える章だ。