🐕

クラスター数の選択(Elbow法など)について

2025/03/10に公開

クラスター分析(クラスタリング)では、適切なクラスター数(k)を決定することが非常に重要です。クラスター数が適切でないと、データの構造を正しく反映できず、分析結果が信頼できないものになってしまいます。


1. Elbow法(エルボー法)

概要

Elbow法は、クラスター数を決定する最も一般的な方法の一つです。K-meansのようなクラスタリング手法を適用する際に、適切なクラスタ数を見つけるために使用されます。

手順

  1. K-meansを異なるクラスター数(k)で実行
    • k = 1, 2, 3, ..., n(例えば1〜10の範囲)
  2. 各kに対する「歪み(Distortion)」または「SSE(Sum of Squared Errors, 2乗誤差の和)」を計算
    • SSEは、各データポイントとその所属クラスターの重心(セントロイド)の距離の二乗の合計
    • SSEが小さいほど、クラスターがデータをよく説明している
  3. SSEをプロット
    • x軸: クラスター数(k)
    • y軸: SSE
  4. 「ひじ(Elbow)」のように見えるポイントを探す
    • SSEの減少が急から緩やかに変わるポイントが、適切なk
    • それ以上kを増やしても、SSEの減少率が小さくなる → クラスターの分割が過剰になる

Elbow法のグラフ
図の説明:

  • k = 1 → SSEが高い(全データが1つのクラスタにまとめられている)
  • k = 2, 3, 4 → SSEが急激に減少
  • k = 5 以降 → SSEの減少が緩やかになる("elbow" に見える)

→ この場合、k=3または4が適切なクラスタ数と判断できる。

メリット・デメリット

メリット デメリット
直感的にクラスター数を決定できる ひじ(Elbow)が明確でない場合がある
計算がシンプルで、K-meansに適用しやすい SSEの減少がスムーズな場合、どこを選ぶべきか不明瞭

2. シルエット分析(Silhouette Score)

概要

**シルエットスコア(Silhouette Coefficient)は、各クラスターの「分離度」と「密集度」**を評価する指標です。

計算方法

シルエットスコアは以下の数式で定義されます:
[
S(i) = \frac{b(i) - a(i)}{\max(a(i), b(i))}
]

  • ( a(i) ): クラスター内の平均距離(同じクラスタの他のデータ点との平均距離)
  • ( b(i) ): 他のクラスターの最も近いクラスタとの平均距離(異なるクラスターの最近傍クラスタの平均距離)

解釈

  • S(i) ≈ 1 → クラスタ内で密集しており、他のクラスタと適切に分離 → 良いクラスタリング
  • S(i) ≈ 0 → どのクラスタにも適合していない → クラスタ間の差が曖昧
  • S(i) < 0 → データポイントが誤ったクラスタに割り当てられている可能性

適用方法

  1. 異なるk(クラスタ数)でクラスタリングを実行
  2. 各kに対するシルエットスコアを計算
  3. シルエットスコアが最大のkを選択

メリット・デメリット

メリット デメリット
クラスタリングの質を定量的に評価できる 計算コストがElbow法より高い
クラスターの適切な分離度を評価可能 クラスター数が大きすぎる場合、スコアが小さくなる

3. ギャップ統計量(Gap Statistic)

概要

ギャップ統計量は、データのクラスタリング結果とランダムなデータのクラスタリング結果を比較することで、最適なクラスター数を決める手法。

手順

  1. クラスタ数を変えながらK-meansを実行し、各kに対するSSEを計算
  2. 同じデータ範囲でランダムに生成したデータを用意し、SSEを計算
  3. 元のデータのSSEとランダムデータのSSEの差(ギャップ統計量)を計算
  4. ギャップ統計量が最大になるkを選択

メリット・デメリット

メリット デメリット
ランダムなデータと比較することで客観的な評価ができる 計算コストが高い
Elbow法のように「ひじ」の形状に依存しない 実装がやや複雑

4. Davies-Bouldin Index(DB指数)

概要

DB指数は、**各クラスターの「類似度」と「分離度」**を考慮し、クラスタリングの質を評価する指標。

計算方法

[
DB = \frac{1}{k} \sum_{i=1}^{k} \max_{j \neq i} \left( \frac{\sigma_i + \sigma_j}{d_{ij}} \right)
]

  • ( \sigma_i ): クラスター (i) の平均内部距離
  • ( d_{ij} ): クラスター (i) と クラスター (j) の中心間の距離

解釈

  • DB指数が小さいほど良い
  • クラスターが密集しており、他のクラスターと十分に分離しているほどDB値は小さくなる

まとめ

手法 特徴 適用しやすさ
Elbow法 SSEの減少をプロットしてひじを探す ★★★★☆(簡単)
シルエット分析 クラスターの密集度と分離度を評価 ★★★☆☆(やや計算コストあり)
ギャップ統計量 ランダムデータと比較し適切なクラスタ数を決定 ★★☆☆☆(計算コスト高)
DB指数 クラスターの類似度を数値化 ★★☆☆☆(計算コスト高)

適用するデータによって適切な手法は異なりますが、まずElbow法を試し、補助的にシルエット分析やギャップ統計量を使うのが一般的な流れです。

さらに詳しく知りたい部分があれば教えてください!

Discussion