はじめに
前回の記事では、クラスタリング(k-means法など)を使ってデータをグループ分けする方法を学びました。クラスタリングとは?教師なし学習の基本をやさしく解説
しかし、実際にクラスタリングをする際に必ず悩むのが
「クラスタ数(k)をいくつにすればいいのか?」という問題です。
この記事では、
- クラスタ数を決める基本的な考え方
- エルボー法(Elbow Method)
- シルエット分析(Silhouette Analysis)
について、やさしく解説していきます!
🔹 統計自主学習シリーズまとめページはこちら
▶【初心者向け】統計自主学習シリーズまとめ
なぜクラスタ数を決めるのが難しいのか?
クラスタリングでは、
「正解」があるわけではありません。
クラスタ数を多くすれば細かく分けられますが、
- 細かすぎると意味のないグループになる
クラスタ数を少なくすれば大雑把にまとまりますが、 - 粗すぎると違うタイプのデータが混ざってしまう
➡️ 「適切なバランス」を見極める必要があるのです。
エルボー法(Elbow Method)
エルボー法とは?
エルボー法は、
クラスタ数と誤差(SSE:Sum of Squared Errors)の関係を見ることで、
適切なkを探す方法です。
手順
- いろいろなクラスタ数kでk-meansを実行
- 各kに対して、クラスタ内誤差(SSE)を計算
- kを横軸、SSEを縦軸にグラフを描く
- グラフが急に「曲がる(ひじのように折れる)」ポイントを探す
この「ひじ(エルボー)」の部分が、適切なクラスタ数の目安になります。
エルボー法の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に近い → 境界にいる(どちらでもない)
- マイナス → 間違ったクラスタに割り当てられている
手順
- いろいろなクラスタ数でクラスタリング
- 各クラスタ数についてシルエットスコアを計算
- スコアが最も高くなるクラスタ数を選ぶ
シルエット分析の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スコアの正しい使い方
▶なぜ標準化・正規化でモデルの精度が上がるのか?実例と一緒に解説
🔹 統計自主学習シリーズまとめページはこちら
▶【初心者向け】統計自主学習シリーズまとめ

コメント