6.8 混合モデルによる密度推定と分類

データの「かたち」を知りたい。そのための手法として、カーネル密度推定はN個のデータ点すべてを使う。 しかし、もし10,000点のデータが「3つのグループ」から来ているなら、10,000個のカーネルは必要ない。3つのガウス分布で十分かもしれない。

これが混合モデルの発想だ。そして驚くことに、この手法は密度推定にとどまらない—— クラスラベルを一切使わない教師なし学習が、ロジスティック回帰と同等の分類精度を達成することがある。

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

  • カーネル密度推定の限界と混合モデルの発想(N個 → M個のコンポーネント)
  • EMアルゴリズムによる混合モデルのパラメータ推定
  • 混合モデルとカーネル密度推定の理論的なつながり
  • ベイズ則を使った混合モデルによる分類
  • 心臓病データでの実例:教師なし学習の隠れた力

カーネル密度推定の限界と混合モデルの発想

データの「かたち」を知りたいとき、一つの方法はカーネル密度推定だ。

簡単に言えば:N個のデータ点がある場合、各点の周りに小さなガウス関数(釣り鐘型の曲線)を置いて、 それをすべて足し合わせる。すべての点が少しずつ「周囲に広がる」ように見せることで、 データ全体の形(分布)を推定する。

これは機能する。しかし問題がある。

N個のデータ点 = N個のコンポーネント。 データが10,000点あれば、10,000個のガウス関数が必要になる。

ここで問いかけてみよう:もしデータの真の構造が「3つのグループ」から来ているなら? 10,000個のコンポーネントは必要ない。3つのガウス分布で十分かもしれない。

これが混合モデルの発想だ。

KDEとガウス混合モデルの比較。上段がKDE(データ点ごとに小さなカーネル)、下段がGMM(少数の大きなガウス分布)
上段:KDE(N個の小さなカーネルを重ねる) 下段:混合モデル(M個の大きなガウス分布で近似)

混合モデルの数式はシンプルだ:

$$f(x) = \sum_{m=1}^{M} \alpha_m \phi(x; \mu_m, \Sigma_m)$$

各記号の意味を一つずつ確認しよう:

N個のデータ点の代わりに、M個(M ≪ N)のガウス分布でデータの全体形状を捉える。より少ない記述で、より本質的な構造を表現できる。

EMアルゴリズムによるフィッティング

混合モデルのパラメータ($\alpha_m$$\mu_m$$\Sigma_m$)はどうやって求めるのか?

直接最大化は難しい。各データ点が「どのコンポーネントから来たのか」が不明なためだ。 この「どこから来たか」という情報が隠れている——これが潜在変数(hidden variable)だ。

そこで登場するのがEMアルゴリズム(Expectation-Maximization)だ。 アイデアはシンプルで美しい:

  1. E-step(期待値ステップ):「このデータ点はどのコンポーネントから来たか?」の責任度(responsibility)を計算する
  2. M-step(最大化ステップ):責任度を使って、各コンポーネントのパラメータを更新する
  3. 収束するまで繰り返す
EMアルゴリズムの反復過程。E-stepで点の色(帰属)が変わり、M-stepで楕円が動く
E-step:各点の色が帰属確率を示す M-step:ガウス楕円が重心へ移動・リサイズ

E-stepで計算する責任度(responsibility)の数式:

$$\hat{r}_{im} = \frac{\hat{\alpha}_m \phi(x_i; \hat{\mu}_m, \hat{\Sigma}_m)}{\sum_{k=1}^{M} \hat{\alpha}_k \phi(x_i; \hat{\mu}_k, \hat{\Sigma}_k)}$$

これを分解して読もう:

これはまさにベイズの定理そのものだ。事前確率(混合比$\alpha_m$ )× 尤度 ÷ 正規化定数 = 事後確率。

そして重要な点に気づいてほしい:EMアルゴリズムはクラスラベルを一切使わない。 これは完全な教師なし学習だ。 ラベルなしで、データの隠れた構造(どの点がどのコンポーネントから来たか)を自動的に発見する。

カーネル密度推定との理論的つながり

混合モデルとカーネル密度推定。 これら2つは実は同じものの連続体上の両端だ。 少しずつ変化させると、一方が他方になる。

混合モデルの共分散行列を単純化していくと何が起きるか、一緒に見ていこう。

ステップ1$\Sigma_m = \sigma_m^2 I$ (球形ガウス分布)に制限すると、 混合モデルは「各コンポーネントを中心とした球形カーネルの和」という構造になる。

ステップ2:さらに極端に、すべてのコンポーネントで同じ分散$\sigma_m = \sigma$ とし、コンポーネント数を$M \to \infty$ に増やし、重みを均等($\alpha_m = 1/N$ )にして、 各データ点を中心($\mu_m = x_m$)に設定すると……

するとどうなるか?混合モデルはまさにカーネル密度推定そのものになる:

$$\hat{f}(x_0) = \frac{1}{N\lambda}\sum_{i=1}^N K_\lambda(x_0, x_i)$$
混合モデルからカーネル密度推定への連続的な変化。コンポーネント数MがM=3からN個へ増加
M=3(大きなガウス分布3つ)→ M=N(データ点ごとの小さなカーネル = KDE)

これは美しい結果だ。2つの手法を比較してみよう:

混合モデルカーネル密度推定
コンポーネント数M(M ≪ N)N(全データ点)
パラメータ数有限・固定データ数に依存
計算効率高い(推定後はM個の計算)予測時に全データが必要
柔軟性の制御コンポーネント数Mで調整バンド幅λで調整

混合モデルは「パラメトリックなコンパクト表現」、 カーネル密度推定は「ノンパラメトリックな全量表現」。 2つの手法は対立するのではなく、同じ連続体の上に立っている。 用途(計算効率重視か、柔軟性重視か)によって使い分ける。

分類への応用 — ベイズ則で「クラス」を判定する

混合モデルは密度推定だけではない。分類にも使える。 そして面白いことに、そのアプローチは直感的なものだ。

アイデアはシンプルだ。3ステップで考えよう:

  1. クラスごとに別々の混合モデルを学習する: クラスA用に $f_A(x)$、クラスB用に $f_B(x)$
  2. ベイズの定理で事後確率を計算する:$P(A|x) \propto f_A(x) \cdot P(A)$
  3. より高い確率のクラスに分類する

数式で書けば:

$$\Pr(g = \ell | x) = \frac{\pi_\ell f_\ell(x)}{\sum_{k} \pi_k f_k(x)}$$

各記号を確認しよう:

2クラスの混合密度を使ったベイズ分類。左が各クラスの混合密度、右が決定境界
左:2クラスそれぞれの混合密度(ガウス楕円) 右:事後確率が等しい曲線(決定境界)

重要な注意を確認しておこう: 各混合密度 $f_\ell(x)$ の学習はクラスラベルを使わない(教師なし学習)。 しかし、ベイズの定理を適用する際にラベル情報(各クラスのデータ)は使う。 つまり「教師なし学習で密度を学び、ベイズ則で分類する」という2段階の構造だ。

この手法の強みは柔軟なクラス境界だ。 ロジスティック回帰では直線しか引けない。 しかし混合モデルを使えば、各クラスが複雑な形の分布を持つ場合でも、 曲線的な境界を自然に表現できる。 GIFで見た通り、決定境界は直線ではなく曲線になっている。

実例 — 心臓病リスクの予測

理論だけでは実感が湧かない。実際のデータで確かめてみよう。

心臓病研究データセット:年齢(Age)という1つの特徴量で、 心臓病の有無(CHD)を予測する。 シンプルな1次元問題だが、混合モデルの力が如実に現れる例だ。

モデルの設定:各クラス(CHDあり・なし)に対して、M=2のガウス混合モデルを学習する。

心臓病データでの2成分混合モデル。上段がヒストグラム、下段が推定された混合密度
上段:CHDなし(広い平坦な分布)とCHDあり(58歳ピーク)のヒストグラム 下段:M=2混合モデルのフィッティング

推定されたパラメータ(心臓病ありクラス)を見てみよう:

これを読み解くと面白い構造が見える:

このモデルの混同行列を確認しよう:

CHD予測なしCHD予測あり
CHDなし(実際)23270
CHDあり(実際)7684

驚くべき結果:このモデルのエラー率は32%。 これは線形ロジスティック回帰と全く同じエラー率だ。

注目してほしいのは:このモデルは各クラスの混合密度を独立に学習している(ラベルなし)。 クラスラベルは「どちらのクラスのデータか」という分け方にしか使っていない。教師なし学習でここまでできる——これが教師なし学習の隠れた力だ。

まとめ — 混合モデルの三つの顔

このセクションで学んだことを整理しよう。混合モデルには三つの側面がある。

6章のカーネル法の連鎖。局所回帰→局所尤度→KDE→混合モデルへのフロー図
カーネルという一本の糸がつなぐ統計学習の手法群

1. 密度推定の道具として

ガウス混合モデルは、カーネル密度推定の「コンパクト版」だ。 全データ点にカーネルを置く代わりに、M個のガウス分布でデータの形を表現する。 M個のパラメータ($\alpha_m, \mu_m, \Sigma_m$)で十分。

2. 教師なし学習として

EMアルゴリズムはラベルなしで学習できる。 各データ点が「どのコンポーネントから来たか」という「隠れた構造」を自動的に発見する。 E-stepで帰属を推定し、M-stepでパラメータを更新する、エレガントな反復法だ。

3. 分類への橋渡しとして

クラスごとに混合密度を学習し、ベイズ則を適用するだけで分類が可能になる。 そして驚くことに、教師なし学習でも教師あり学習(ロジスティック回帰)と同等の性能を達成できることがある。

理論的な美しさを式で表現するとこうなる:

$$f(x) = \sum_{m=1}^{M} \alpha_m \phi(x; \mu_m, \Sigma_m) \xrightarrow{M \to \infty} \hat{f}_\lambda(x)$$

左辺は「有限個のコンポーネントを持つ混合モデル」、右辺は「カーネル密度推定」だ。 M を増やし続けると、混合モデルはカーネル密度推定に収束する。 2つの手法は対立しているのではなく、同じ連続体の上に立っている。

混合モデルはパラメトリックな構造(有限個のコンポーネント)と ノンパラメトリックな柔軟性(カーネル法)の橋渡しをしている。

次章(7章)では「モデルの複雑さをどう選ぶか」という根本的な問いに向き合う。 混合コンポーネント数Mの選択もその一例だ。 単純すぎるモデル(小さなM)と複雑すぎるモデル(大きなM)の間のバランスを、 どう理論的に決めるか——これがバイアス・バリアンスのトレードオフの核心だ。