クラスター分析 — データの中に潜む「仲間たち」を探す

ラベルなしデータの中に自然なグループ構造を発見する「クラスタリング」の世界へ。 K平均法から階層的クラスタリングまで、データの「距離」を道しるべに、似たもの同士を見つけ出すアルゴリズムの本質を視覚的に探る。

謎かけ — ラベルのない世界でどう分類するか?

あなたは音楽配信サービスの開発者だとしよう。ユーザーが何万曲も聴いてきたが、「この曲は〇〇ジャンル」というラベルはどこにもない。 それでも「似た聴き方をするユーザーたちを自動でグループ分けできれば、おすすめ精度が上がるはず」と考える。

これがクラスタリングの出発点だ。

散らばった点群が3つのグループに自然に色分けされるアニメーション
ラベルなしの点群から、データの「近さ」だけを頼りにグループが浮かび上がる

教師あり学習との違いを考えてみよう。回帰分類では「これは猫、これは犬」という正解ラベル付きデータから学ぶ。 しかしクラスター分析では、正解ラベルは一切ない。データ同士の「近さ」だけを頼りに、グループを発見しようとする。

形式的に言えば、$N$ 個のオブジェクトを$K$ 個のクラスターに分割する問題だ。目標は明快だ。

同じクラスター内のオブジェクトは互いに似ており、異なるクラスターのオブジェクトは異なる。

では「似ている」とは何か?ここに数学が登場する。

距離と非類似度 — 「似ている」を数値化する

クラスタリングの核心は、「2つのオブジェクトがどれだけ似ているか(あるいは異なるか)」を数値化することだ。

2点間の距離の概念を視覚化するアニメーション
近い点同士(青)と遠い点間(赤)の距離の対比

$N$ 個のオブジェクトについて、すべてのペアの「違いの大きさ」を記録した$N \times N$ の表(近接行列 $D$)を作る。$d_{ii'}$ が「$i$ 番目と$i'$ 番目のオブジェクトの違いの大きさ」だ。

変数が数値の場合、最も自然な選択はユークリッド距離の二乗だ。

$$d(x_i, x_{i'}) = \sum_{j=1}^{p}(x_{ij} - x_{i'j})^2 = \|x_i - x_{i'}\|^2$$

直感的に言えば、2点間の直線距離を二乗したものだ。二乗することで「大きなズレ」を強調する効果がある。

複数の属性がある場合、属性ごとの距離を重みで統合できる。

$$D(x_i, x_{i'}) = \sum_{j=1}^{p} w_j \cdot d_j(x_{ij}, x_{i'j}), \quad \sum_{j=1}^{p} w_j = 1$$

重みをどう決めるか?スケールの違う変数(例:身長 cm と体重 kg)が対等に扱われるよう、$w_j$を「その属性の平均的な距離の逆数」とするのがよい。身長は 1 cm の差が小さい変化でも、体重は 1 kg の差が大きな変化なら、その差を調整できる。

この距離の定義が変われば、クラスタリングの結果も大きく変わる。良いクラスタリングの第一歩は、良い距離の定義から始まる。

K平均法 — シンプルで強力なクラスタリング

「クラスター分析のアルゴリズムを一つだけ知るとしたら?」

多くの実務家はK平均法(K-means)と答えるだろう。シンプルで理解しやすく、大規模データにも使える。

アイデアはこうだ:クラスター内の点が、そのクラスターの重心(平均)に近くなるように割り当てを決める。

K平均法の反復アルゴリズム:重心が動きながら収束していく
重心(大きな点)が徐々に各クラスターの中心へ収束していく様子

目的関数は次のように表せる。

$$W(C) = \sum_{k=1}^{K}\sum_{C(i)=k} \|x_i - \bar{x}_k\|^2$$

これを最小化すると、「それぞれのグループ内でなるべくまとまった」クラスタリングが得られる。

2ステップの繰り返し(アルゴリズム)

ステップ 1 — 割り当て:現在の重心 $m_1, \ldots, m_K$ に対して、各点を最も近い重心のクラスターに割り当てる。

$$C(i) = \arg\min_{1 \leq k \leq K} \|x_i - m_k\|^2$$

ステップ 2 — 更新:各クラスターに属する点の平均を新しい重心として計算する。

この2ステップを繰り返すと、$W(C)$ は単調に減少し、有限ステップで収束する。

注意点:K平均法は局所最適解に陥ることがある。 異なる初期値から複数回試し、最小の $W(C)$ を持つ解を採用するのが実践的だ。

また、ユークリッド距離で分割されたクラスターは自然にボロノイ領域(各点が最も近い重心を「担当する領域」に属する構造)を形成する。

ソフトK平均法 — 「どちらとも言えない」点の扱い

K平均法には一つ弱点がある。各点を「どれか1つのクラスター」に決めてしまう。 しかし現実のデータでは、2つのクラスターの境界付近の点は「どちらにも属しうる」という状況が多い。

ハード割り当てとソフト割り当ての左右対比
左:ハード割り当て(きっぱり二色)、右:ソフト割り当て(境界付近は中間色)

そこで登場するのがガウス混合モデル(GMM)だ。

GMMでは各クラスターをガウス分布(釣り鐘型の確率分布)で表現し、 各点にクラスターへの「責任度(responsibility)」を割り当てる。

$$r_k(x) \propto \pi_k \cdot \mathcal{N}(x \mid \mu_k, \sigma^2 I)$$

責任度は「この点はクラスター1に80%、クラスター2に20%属する」という柔らかな割り当てだ。

K平均法との関係

  • 分散 $\sigma^2$ が非常に小さい → 責任度は0か1に収束(K平均法と同じ結果)
  • 分散 $\sigma^2$ が大きい → 責任度は均等に近い(ソフトな割り当て)

つまりK平均法は「分散が0に近い場合のGMM」として理解できる。どちらを使うかはデータの性質による。 境界が明確なら K平均法、曖昧ならGMMが自然だ。

階層的クラスタリング — デンドログラムで全体を俯瞰する

K平均法を使うとき、「$K$(クラスター数)をいくつにすればいいか?」という問いが必ず生じる。

階層的クラスタリングはこの問いを回避する。 事前に $K$ を決めず、すべての可能なグループ化を階層として表現する。

デンドログラムが構築されていく様子(上の散布図と下のデンドログラムが同期)
上:点の結合の様子、下:それに対応するデンドログラムの成長。赤い切断線で任意の数に分割できる

ボトムアップ(凝集型)アプローチ

  1. 最初、各データ点が独立したクラスター($N$ 個)
  2. 最も「近い」2つのクラスターを1つにマージ
  3. $N-1$ 個のクラスターになる
  4. ステップ2-3を繰り返し、最終的に全点が1つのクラスターに統合

この過程を樹形図(デンドログラム)として可視化する。 縦軸は「マージしたときの距離」、高い位置でマージされるほど、2グループは「遠い」ことを意味する。

デンドログラムを「どの高さで切るか」で、任意の $K$ のクラスタリング結果が得られる。

「グループ間の距離」の測り方で結果が変わる

手法定義特徴
シングルリンケージ2グループ間の最も近い点ペアの距離鎖状に伸びやすい
コンプリートリンケージ2グループ間の最も遠い点ペアの距離コンパクトなクラスターを好む
グループ平均全ペアの平均距離2つの中間的な性質

シングルリンケージは「1本のつながり」でクラスターが連結するため、細長い鎖のようなクラスターができやすい。 コンプリートリンケージは「どの2点も比較的近い」コンパクトなクラスターを形成する。

どれが「正しい」かは正解がなく、データの性質と目的による。

どの手法を選ぶべきか?

K平均法階層的クラスタリング、 それぞれいつ使うべきだろうか。

K平均法と階層的クラスタリングの結果の左右対比
左:K平均法(色分けされた球状クラスター)、右:階層的クラスタリング(線で繋がれた木構造)

K平均法が向く場合

  • データ量が多い(数万〜数百万点)
  • クラスター数 $K$ がある程度見当がついている
  • クラスターが球状(ユークリッド距離が有効な形状)
  • 計算速度が重要

階層的クラスタリングが向く場合

  • $K$ を事前に決めたくない
  • データに自然な階層構造がある(例:生物分類、顧客セグメント)
  • データ量が少ない(数百〜数千点)
  • デンドログラムによる可視化・解釈が欲しい

「最適な $K$ を客観的に選びたい」なら、$K$ を変えながら 「クラスター内分散 $W_K$」の変化を観察するのが基本的なアプローチだ。$W_K$$K$ が増えるにつれて必ず減少するが、 「改善の伸びが鈍くなる肘(elbow)」の点を探す。

実際には、どの手法もパラメータの選び方(距離定義、リンケージ基準など)に大きく依存する。 複数のアプローチを試して結果を比較するのが実践的には賢明だ。

クラスタリングは「正解がない」問題だ。しかしだからこそ、データの構造を発見する知的な探索となる。 正解がないからこそ、探索する価値がある。