クラスタ数はどう決める?エルボー法とシルエット分析を初心者向けにやさしく解説|統計自主学習⑰

はじめに

前回の記事では、クラスタリング(k-means法など)を使ってデータをグループ分けする方法を学びました。クラスタリングとは?教師なし学習の基本をやさしく解説

しかし、実際にクラスタリングをする際に必ず悩むのが
「クラスタ数(k)をいくつにすればいいのか?」という問題です。

この記事では、

  • クラスタ数を決める基本的な考え方
  • エルボー法(Elbow Method)
  • シルエット分析(Silhouette Analysis)
    について、やさしく解説していきます!

🔹 統計自主学習シリーズまとめページはこちら
【初心者向け】統計自主学習シリーズまとめ


なぜクラスタ数を決めるのが難しいのか?

クラスタリングでは、
「正解」があるわけではありません。

クラスタ数を多くすれば細かく分けられますが、

  • 細かすぎると意味のないグループになる
    クラスタ数を少なくすれば大雑把にまとまりますが、
  • 粗すぎると違うタイプのデータが混ざってしまう

➡️ 「適切なバランス」を見極める必要があるのです。


エルボー法(Elbow Method)

エルボー法とは?

エルボー法は、
クラスタ数と誤差(SSE:Sum of Squared Errors)の関係を見ることで、
適切なkを探す方法です。

手順

  1. いろいろなクラスタ数kでk-meansを実行
  2. 各kに対して、クラスタ内誤差(SSE)を計算
  3. kを横軸、SSEを縦軸にグラフを描く
  4. グラフが急に「曲がる(ひじのように折れる)」ポイントを探す

この「ひじ(エルボー)」の部分が、適切なクラスタ数の目安になります。


エルボー法のPython例

from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# データ例
X = [[1,2],[1,4],[1,0],[4,2],[4,4],[4,0],[8,2],[8,4],[8,0]]

# エルボー法
sse = []
for k in range(1, 10):
kmeans = KMeans(n_clusters=k, random_state=42)
kmeans.fit(X)
sse.append(kmeans.inertia_) # inertia_ がSSEを表す

plt.plot(range(1, 10), sse, marker='o')
plt.xlabel('クラスタ数k')
plt.ylabel('SSE(クラスタ内誤差)')
plt.title('エルボー法')
plt.show()

シルエット分析(Silhouette Analysis)

シルエット分析とは?

シルエット分析は、
各データがどれだけ「自分のクラスタに適切に属しているか」を評価する方法です。

シルエットスコアは-1から1の間の値を取り、

  • 1に近い → しっかり自分のクラスタに属している
  • 0に近い → 境界にいる(どちらでもない)
  • マイナス → 間違ったクラスタに割り当てられている

手順

  1. いろいろなクラスタ数でクラスタリング
  2. 各クラスタ数についてシルエットスコアを計算
  3. スコアが最も高くなるクラスタ数を選ぶ

シルエット分析のPython例

from sklearn.metrics import silhouette_score

# クラスタ数ごとのシルエットスコア
for k in range(2, 7):
kmeans = KMeans(n_clusters=k, random_state=42)
labels = kmeans.fit_predict(X)
score = silhouette_score(X, labels)
print(f"クラスタ数: {k}, シルエットスコア: {score:.3f}")

シルエットスコアが高いほど、自然なクラスタ分けができていることを意味します!


エルボー法とシルエット分析の違い

比較項目エルボー法シルエット分析
基本指標クラスタ内誤差(SSE)クラスタ適合度(シルエットスコア)
特徴曲がりポイントを探すスコアの最大化を目指す
向いている場面とりあえずざっくり決めたいときより精密にクラスタ適合を見たいとき

まとめ

  • クラスタ数は適切に決める必要がある
  • エルボー法は「ひじポイント」を探す方法
  • シルエット分析は「クラスタ適合度」を評価する方法
  • 両方試して総合的に判断するのが理想!

【あわせて読みたい】

🔹 次におすすめの記事

教師なし学習の応用編:異常検知・次元削減の世界をやさしく解説

🔹 関連記事
クラスタリングとは?教師なし学習の基本をやさしく解説

主要6モデルをやさしく解説!線形回帰・ロジスティック回帰・KNN・SVM・決定木・ランダムフォレストとは?

分類問題の基礎!混同行列・精度・再現率・F1スコアの正しい使い方

なぜ標準化・正規化でモデルの精度が上がるのか?実例と一緒に解説

🔹 統計自主学習シリーズまとめページはこちら
【初心者向け】統計自主学習シリーズまとめ

コメント

タイトルとURLをコピーしました