クラスター分析 — データの中に潜む「仲間たち」を探す
ラベルなしデータの中に自然なグループ構造を発見する「クラスタリング」の世界へ。 K平均法から階層的クラスタリングまで、データの「距離」を道しるべに、似たもの同士を見つけ出すアルゴリズムの本質を視覚的に探る。
謎かけ — ラベルのない世界でどう分類するか?
あなたは音楽配信サービスの開発者だとしよう。ユーザーが何万曲も聴いてきたが、「この曲は〇〇ジャンル」というラベルはどこにもない。 それでも「似た聴き方をするユーザーたちを自動でグループ分けできれば、おすすめ精度が上がるはず」と考える。
これがクラスタリングの出発点だ。

教師あり学習との違いを考えてみよう。回帰や分類では「これは猫、これは犬」という正解ラベル付きデータから学ぶ。 しかしクラスター分析では、正解ラベルは一切ない。データ同士の「近さ」だけを頼りに、グループを発見しようとする。
形式的に言えば、$N$ 個のオブジェクトを$K$ 個のクラスターに分割する問題だ。目標は明快だ。
同じクラスター内のオブジェクトは互いに似ており、異なるクラスターのオブジェクトは異なる。
では「似ている」とは何か?ここに数学が登場する。
距離と非類似度 — 「似ている」を数値化する
クラスタリングの核心は、「2つのオブジェクトがどれだけ似ているか(あるいは異なるか)」を数値化することだ。

$N$ 個のオブジェクトについて、すべてのペアの「違いの大きさ」を記録した$N \times N$ の表(近接行列 $D$)を作る。$d_{ii'}$ が「$i$ 番目と$i'$ 番目のオブジェクトの違いの大きさ」だ。
変数が数値の場合、最も自然な選択はユークリッド距離の二乗だ。
- $x_{ij}$: $i$ 番目のオブジェクトの $j$ 番目の特徴量の値
- $p$: 特徴量の数(変数の次元)
直感的に言えば、2点間の直線距離を二乗したものだ。二乗することで「大きなズレ」を強調する効果がある。
複数の属性がある場合、属性ごとの距離を重みで統合できる。
重みをどう決めるか?スケールの違う変数(例:身長 cm と体重 kg)が対等に扱われるよう、$w_j$を「その属性の平均的な距離の逆数」とするのがよい。身長は 1 cm の差が小さい変化でも、体重は 1 kg の差が大きな変化なら、その差を調整できる。
この距離の定義が変われば、クラスタリングの結果も大きく変わる。良いクラスタリングの第一歩は、良い距離の定義から始まる。
K平均法 — シンプルで強力なクラスタリング
「クラスター分析のアルゴリズムを一つだけ知るとしたら?」
多くの実務家はK平均法(K-means)と答えるだろう。シンプルで理解しやすく、大規模データにも使える。
アイデアはこうだ:クラスター内の点が、そのクラスターの重心(平均)に近くなるように割り当てを決める。

目的関数は次のように表せる。
- $C(i)$: 点 $i$ に割り当てられたクラスターの番号
- $\bar{x}_k$: クラスター $k$ に属する点の平均(重心)
- $W(C)$: 全クラスターにわたる「点と重心の距離の二乗和」=クラスター内分散
これを最小化すると、「それぞれのグループ内でなるべくまとまった」クラスタリングが得られる。
2ステップの繰り返し(アルゴリズム)
ステップ 1 — 割り当て:現在の重心 $m_1, \ldots, m_K$ に対して、各点を最も近い重心のクラスターに割り当てる。
ステップ 2 — 更新:各クラスターに属する点の平均を新しい重心として計算する。
この2ステップを繰り返すと、$W(C)$ は単調に減少し、有限ステップで収束する。
ソフトK平均法 — 「どちらとも言えない」点の扱い
K平均法には一つ弱点がある。各点を「どれか1つのクラスター」に決めてしまう。 しかし現実のデータでは、2つのクラスターの境界付近の点は「どちらにも属しうる」という状況が多い。

そこで登場するのがガウス混合モデル(GMM)だ。
GMMでは各クラスターをガウス分布(釣り鐘型の確率分布)で表現し、 各点にクラスターへの「責任度(responsibility)」を割り当てる。
- $r_k(x)$: 点 $x$ がクラスター $k$ に属する確率的な重み(0〜1の値)
- $\pi_k$: クラスター $k$ の大きさの割合(事前確率)
- $\mathcal{N}(x \mid \mu_k, \sigma^2 I)$: 平均 $\mu_k$、分散 $\sigma^2$ のガウス分布(釣り鐘型)
責任度は「この点はクラスター1に80%、クラスター2に20%属する」という柔らかな割り当てだ。
K平均法との関係
- 分散 $\sigma^2$ が非常に小さい → 責任度は0か1に収束(K平均法と同じ結果)
- 分散 $\sigma^2$ が大きい → 責任度は均等に近い(ソフトな割り当て)
つまりK平均法は「分散が0に近い場合のGMM」として理解できる。どちらを使うかはデータの性質による。 境界が明確なら K平均法、曖昧ならGMMが自然だ。
階層的クラスタリング — デンドログラムで全体を俯瞰する
K平均法を使うとき、「$K$(クラスター数)をいくつにすればいいか?」という問いが必ず生じる。
階層的クラスタリングはこの問いを回避する。 事前に $K$ を決めず、すべての可能なグループ化を階層として表現する。

ボトムアップ(凝集型)アプローチ
- 最初、各データ点が独立したクラスター($N$ 個)
- 最も「近い」2つのクラスターを1つにマージ
- $N-1$ 個のクラスターになる
- ステップ2-3を繰り返し、最終的に全点が1つのクラスターに統合
この過程を樹形図(デンドログラム)として可視化する。 縦軸は「マージしたときの距離」、高い位置でマージされるほど、2グループは「遠い」ことを意味する。
デンドログラムを「どの高さで切るか」で、任意の $K$ のクラスタリング結果が得られる。
「グループ間の距離」の測り方で結果が変わる
| 手法 | 定義 | 特徴 |
|---|---|---|
| シングルリンケージ | 2グループ間の最も近い点ペアの距離 | 鎖状に伸びやすい |
| コンプリートリンケージ | 2グループ間の最も遠い点ペアの距離 | コンパクトなクラスターを好む |
| グループ平均 | 全ペアの平均距離 | 2つの中間的な性質 |
シングルリンケージは「1本のつながり」でクラスターが連結するため、細長い鎖のようなクラスターができやすい。 コンプリートリンケージは「どの2点も比較的近い」コンパクトなクラスターを形成する。
どれが「正しい」かは正解がなく、データの性質と目的による。
どの手法を選ぶべきか?
K平均法と階層的クラスタリング、 それぞれいつ使うべきだろうか。

K平均法が向く場合
- データ量が多い(数万〜数百万点)
- クラスター数 $K$ がある程度見当がついている
- クラスターが球状(ユークリッド距離が有効な形状)
- 計算速度が重要
階層的クラスタリングが向く場合
- $K$ を事前に決めたくない
- データに自然な階層構造がある(例:生物分類、顧客セグメント)
- データ量が少ない(数百〜数千点)
- デンドログラムによる可視化・解釈が欲しい
「最適な $K$ を客観的に選びたい」なら、$K$ を変えながら 「クラスター内分散 $W_K$」の変化を観察するのが基本的なアプローチだ。$W_K$ は $K$ が増えるにつれて必ず減少するが、 「改善の伸びが鈍くなる肘(elbow)」の点を探す。
実際には、どの手法もパラメータの選び方(距離定義、リンケージ基準など)に大きく依存する。 複数のアプローチを試して結果を比較するのが実践的には賢明だ。
クラスタリングは「正解がない」問題だ。しかしだからこそ、データの構造を発見する知的な探索となる。 正解がないからこそ、探索する価値がある。