自己組織化マップと主成分分析 — 高次元データの「地図」を作る

100次元のデータを2次元の「地図」に縮める。自己組織化マップ(SOM)から主成分分析(PCA)まで、 高次元の霧を晴らす手法を視覚的に探ろう。

問い — 高次元の霧を晴らすには?

100次元の空間にデータ点が浮かんでいると想像してほしい。人間の目では3次元までしか見えない。 では、この「高次元の霧」の中にある構造を、どうやって「見る」のか?

高次元空間の点群が低次元の曲線上に整列するアニメーション
散らばっていた点群が、実は低次元の曲線(多様体)上に乗っていることがわかる

ここで根本的な問いが生まれる。 高次元データの本質的な構造は、もっと低い次元に潜んでいるのではないか?

手書き数字の例を考えよう。数字「3」の画像は256ピクセル、つまり256次元の空間の一点だ。 しかし、すべての「3」が全く異なる256次元の点にあるわけではない。 「尾部の長さ」や「文字の太さ」など、わずかな変化要因がほとんどの違いを生み出している。

つまり、256次元に見えるデータが、実際には2〜3次元の多様体(manifold) 上に乗っているかもしれない。

この章で学ぶ手法はすべて、この直感を数学的に実現しようとする。自己組織化マップ主成分分析、主成分曲線、スペクトラルクラスタリング — それぞれが異なる方法で「高次元データの地図」を描く。

自己組織化マップ — データの「地図」を描く

自己組織化マップ(SOM: Self-Organizing Map)は、 神経科学者のコホネン(Kohonen)が提案した方法だ。 脳の感覚野が「トポグラフィックマップ」を形成することにヒントを得ている。

直感から始めよう。K平均法では K 個のプロトタイプが データ空間にバラバラに配置されていた。 SOMでは、プロトタイプに「2次元の地図」上の位置を割り当て、 地図上で隣接するプロトタイプはデータ空間でも隣接するよう強制する。

SOMのプロトタイプがデータに対応するように整列するアニメーション
左のデータ空間に対して、右の5×5グリッドのプロトタイプが徐々に各クラスタに対応した位置に整列する

アルゴリズムはシンプルだ。まず K 個のプロトタイプ$m_1, m_2, \ldots, m_K$を初期化し、各プロトタイプに2次元の「座標」$\ell_j \in \mathbb{R}^2$を割り当てる(例:5×5のグリッド)。

次に、各データ点 $x_i$ に対して最も近いプロトタイプ$m_{j^*}$ を見つける。そしてプロトタイプを更新するのだが、 ここがSOMのポイントだ。$m_{j^*}$ だけでなく、 地図上で隣接するプロトタイプも一緒に更新する:

$$m_k \leftarrow m_k + \alpha \cdot h\!\left(\|\ell_{j^*} - \ell_k\|\right) \cdot (x_i - m_k)$$

ここで $h(\cdot)$ は近傍関数で、地図上の距離が遠いほど影響が小さくなる。$\alpha$ は学習率だ。 学習が進むにつれて、$\alpha$ と近傍の範囲を徐々に縮小していく。

バッチ版では、各プロトタイプを近傍の点の加重平均で更新する:

$$m_j = \frac{\sum_k w_k x_k}{\sum_k w_k}$$

SOMの最終結果は、高次元データの「2次元地図」だ。 地図上で近い位置のプロトタイプは、元の高次元空間でも似たデータを担当する。 文書の類似性マップや消費者行動の可視化など、さまざまな分野で使われている。

主成分分析 — 最も情報量が多い方向を探す

主成分分析(PCA: Principal Component Analysis)は、 統計学の歴史の中で最も重要な手法の一つだ。アイデアはシンプルで美しい:

データの分散を最大化する方向(軸)を次々と見つけよ。

楕円状の点群に主成分の方向矢印が引かれ各点からの射影線が示されるアニメーション
黄色の矢印が第1主成分(最大分散方向)、緑の矢印が第2主成分(直交方向)。各点から第1主成分への射影線(灰色)が引かれる

数学的には、$N$ 個の$p$ 次元データ点$x_1, \ldots, x_N$ を、 ランク $q$ の線形モデルで近似する:

$$f(\lambda) = \mu + V_q \lambda$$

ここで $\mu$ は平均ベクトル、$V_q$$p \times q$ の 正規直交行列(主成分の方向ベクトル)、$\lambda$$q$ 次元の「スコア」だ。

目標は再構成誤差を最小化することだ:

$$\min_{V_q, \lambda_i} \sum_{i=1}^{N} \|x_i - \mu - V_q \lambda_i\|^2$$

解は特異値分解(SVD)で得られる。 平均中心化したデータ行列 $X$ に対して:

$$X = U D V^T$$

ここで $U$ は左特異ベクトル行列、$D$ は特異値の対角行列 ($d_1 \geq d_2 \geq \cdots \geq d_p$)、$V$ は右特異ベクトル行列(主成分の方向)だ。

主成分スコア $Z = UD$ が 新しい座標系での表現だ。 第一主成分 $z_1 = Ud_1$ は最大の分散を持ち、$z_2$$z_1$ に 直交する中で最大の分散を持つという構造になっている。

手書き数字の例では、130枚の「3」の画像(各256ピクセル)をPCAにかけると、 第1主成分は「下部の尾部の縦伸び」、第2主成分は「文字の太さ」を表す。 最初の50成分だけで分散の90%が説明できるのだ。

スパース主成分 — 解釈可能な軸を見つける

PCAには一つの問題がある。各主成分は全ての変数の線形結合なので、 「この主成分が何を表しているか」が分かりにくい。

例えば、20個の経済指標から主成分を求めると、 第1主成分が全20指標の重み付き和になってしまう。これでは解釈しにくい。

上段:全て非ゼロの棒グラフ(通常PCA)、下段:ほとんどがゼロの棒グラフ(スパースPCA)のアニメーション
上段が通常PCA(全変数が混在)、下段がスパースPCA(少数の変数だけが重要)。赤い棒だけが非ゼロ

スパース主成分分析(Sparse PCA)は、 各主成分の負荷(loadings)がスパース(多くがゼロ)になるよう正則化を加える手法だ。

SCoTLASS(Simplified Component Technique-LASSO)の定式化:

$$\max_{v} v^T (X^T X) v, \quad \text{s.t.} \quad \sum_j |v_j| \leq t, \quad v^T v = 1$$

これはLasso正則化をPCAに適用したもの。 パラメータ $t$ が小さいほど、多くの係数がゼロになる。

より実用的な定式化(行列分解版):

$$\min_{\Theta, V} \sum_{i} \|x_i - \Theta V^T x_i\|^2 + \lambda \sum_k \|v_k\|_2^2 + \lambda_1 \sum_k \|v_k\|_1$$

脳画像解析の例では、脳の断面形状データに適用すると、 通常のPCAでは全領域にわたる複雑な重みが得られる。 スパースPCAでは「前部の形状変化」「後部の形状変化」など、 局所的に解釈できる成分が得られる。

正則化によって情報の一部を犠牲にするが、科学的解釈のしやすさという重要な利益が得られる。 これは「性能」と「説明可能性」のトレードオフだ。

主成分曲線 — 直線から曲線へ

PCAは直線(線形)で低次元構造を捉える。しかしデータが湾曲した多様体上にあれば、 直線では限界がある。ホースを丸めたようなデータに対して、直線で近似するのは無理があるだろう。

S字型の点群に直線(PCA)が当てはまらず、主成分曲線が曲がって適合するアニメーション
黄色の破線(PCA直線)は曲がりに対応できないが、緑の曲線(主成分曲線)はデータの形に沿う

主成分曲線(Principal Curves)は、 PCAの非線形拡張だ。「データを最もよく要約する滑らかな曲線」を求める。

自己一貫性(Self-Consistency)という美しい性質がある:

$$f(\lambda) = \mathbb{E}[X \mid \lambda_f(X) = \lambda]$$

つまり、曲線上の各点は、その点に最も近いすべてのデータ点の平均(期待値)に等しい、 という性質だ。曲線はデータの「重心の軌跡」になっている。

アルゴリズムは交互最適化で進む:

  1. データ点を現在の曲線に投影する(各点の最近傍パラメータ $\lambda_f(x_i)$ を求める)
  2. 曲線を更新する:各 $\lambda$ に対して、投影されたデータ点の期待値を計算

これを収束するまで繰り返す。実務では、PCA解を初期値として使うことが多い。 収束した解が大域的最適解である保証はなく、初期値依存性がある点には注意が必要だ。

一般化すると主成分曲面(Principal Surfaces)になり、 2次元の滑らかな曲面でデータを近似する。多様体学習の基礎的なアプローチとも言える。

スペクトラルクラスタリング — グラフで繋がりを見る

主成分分析は「距離」ベースで次元を削減する。しかし、データが「環状」や「螺旋状」に分布している場合、 距離だけでは正しいクラスターが見えない。

スペクトラルクラスタリングは グラフ理論を使う別のアプローチだ。

同心円状の2クラスタが変換後の空間で明確に分離されるアニメーション
左:同心円状のデータ(内側=青、外側=黄)。右:グラフ構造を使った変換後の空間では2クラスタが明確に分離

直感はこうだ。互いに近いデータ点を「友達」として結ぶグラフを作る。 クラスタリングは「友達グループ」を見つけることだ。 環状データでも、環の内側にある点は環上の点と「友達」にはならない。 グラフの接続構造がクラスタの境界を正しく捉えてくれる。

アルゴリズムのステップ:

  1. 類似度行列 $W$ を構築する。 近い点のペアをエッジで結ぶ(RBFカーネルなどで)
  2. グラフラプラシアンを計算する:
    $$L = D - W$$
    $D$ は次数行列)
  3. $L$ の最小固有値に対応する固有ベクトルを用いて クラスタリングする(通常のK平均法で)

なぜ固有ベクトルなのか? グラフラプラシアンの固有値・固有ベクトルは、グラフの「接続構造」を捉えている。 分断されたクラスタは互いに影響を与えないため、固有ベクトルは自然にクラスタを分離する。

この手法は主成分分析と深く繋がっている。 カーネルPCAも同様の構造を持ち、非線形な次元削減を実現する:

$$\tilde{x}_i = \sum_l \gamma_l^{1/2} u_{il}$$

ここで $\gamma_l, u_{\cdot l}$ はカーネル行列$K$ の固有値・固有ベクトルだ。

SOMとPCAの比較 — 何が違うのか?

ここまで学んだ手法を比較しよう。それぞれが「データの低次元構造を見つける」という 共通目標に対して、異なるアプローチを取っている。

螺旋データに対してPCA・SOM・主成分曲線が異なる結果を示す4分割比較アニメーション
同じ螺旋データに対して4つの手法が異なる表現を与える。左上:元データ、右上:PCA、左下:SOM、右下:主成分曲線
手法線形/非線形出力特徴
PCA線形主成分スコアグローバルな最適解、高速
スパースPCA線形スパースな負荷行列解釈しやすい軸
主成分曲線/曲面非線形パラメータ化された多様体局所構造を保持
SOM非線形グリッドにマッピング2D視覚化、隣接関係を保存
スペクトラルクラスタリング非線形クラスタ割り当て複雑な形状に対応

重要な洞察をいくつか整理しよう。

SOMの特徴:バッチ版SOMはK平均法の サブセット(プロトタイプに位置制約を追加)。 学習中の「近傍の引き付け」が、地図上の隣接関係を保証する。 文書の類似性マップや、消費者行動の可視化に使われる。

PCAの特徴:解析的な解(SVD)があり、 グローバルな最適解が保証される。 スケールの異なる変数には標準化が必要(相関行列を使うか、変数をスケールする)。

主成分曲線の限界:収束した解が大域的最適解である保証はない。 初期値依存性がある。実務的には、PCA解を初期値として使う。

どれが「正しい」手法かは問題に依存する。 線形構造が想定できるならPCA、複雑な非線形構造ならSOMや主成分曲線が適切だ。

まとめ — データの「地図」を読む

3D空間の波打つ多様体が2D平面に展開されるアニメーション
波打つ多様体(曲面上の点群)が展開されて2次元平面になる。多様体学習の本質を表現

この章で学んだことを整理しよう。

中核となる問い:高次元データの中に潜む低次元構造をどう発見し、可視化するか?

共通の数学的枠組み$N$ 個の$p$ 次元データ点を、$q$ 次元($q \ll p$)の多様体上の点として表現する。

線形近似(PCA

非線形拡張

実用的なガイドライン

  1. まずPCAで線形構造を確認する
  2. データが非線形なら、SOMや主成分曲線へ
  3. クラスタ形状が複雑ならスペクトラルクラスタリング
  4. スパースPCAで解釈可能な成分が必要な場合に利用

次の章では、これとは別のアプローチで教師なし学習を深める。 独立成分分析(ICA)や多次元尺度法(MDS)など、 さらに多様な「データの形」を捉える手法を見ていこう。