クラスタリングの評価指標 | クラスタリング | Pythonによる機械学習を学ぶ

現在作成中です。今後加筆修正してまいります。
スポンサーリンク
スポンサーリンク

クラスタリングの評価指標(シルエットスコア、ダビーズ・ボウルディン指数)

クラスタリングの結果を評価するためには、いくつかの評価指標を用いることが重要です。代表的な指標として、シルエットスコアダビーズ・ボウルディン指数があります。これらの指標は、クラスタリングの質を数値的に評価するために使用されます。この記事では、それぞれの指標の概要と実装方法について解説します。

シルエットスコア

シルエットスコアは、各データポイントがどれだけ適切なクラスタに属しているかを評価します。具体的には、クラスタ内の結束度と他のクラスタとの分離度を測定します。シルエットスコアは -1 から 1 の範囲で、1 に近いほど良いクラスタリングを示します。

シルエットスコアの計算

  • a(i): 点が属するクラスタ内の他の点との平均距離
  • b(i): 点が属するクラスタ以外の最も近いクラスタとの平均距離
  • シルエットスコアは次の式で計算されます: score(i) = (b(i) - a(i)) / max(a(i), b(i))

シルエットスコアが高いほど、クラスタリングの結果が良いと判断されます。

Pythonによるシルエットスコアの実装

以下のコードは、Scikit-learnを使用してシルエットスコアを計算する方法を示しています。

from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
from sklearn.datasets import make_blobs

# サンプルデータの生成
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

# K-means クラスタリングの実行
kmeans = KMeans(n_clusters=4)
y_kmeans = kmeans.fit_predict(X)

# シルエットスコアの計算
silhouette_avg = silhouette_score(X, y_kmeans)
print(f'シルエットスコア: {silhouette_avg}')

この例では、シルエットスコアを計算するためにK-meansクラスタリングを使用しています。silhouette_score()関数を用いて、クラスタリングの結果を評価します。

ダビーズ・ボウルディン指数

ダビーズ・ボウルディン指数(Davies-Bouldin Index)は、クラスタの内部の分散とクラスタ間の分離度を測定します。この指標は、より低い値がより良いクラスタリングを示します。DB指数は、各クラスタのペアの比率の平均で計算されます。

ダビーズ・ボウルディン指数の計算

  • R(i, j): クラスタとクラスタの分散と距離の比率
  • DB指数は次の式で計算されます: DB = (1 / n_clusters) Σ(max(R(i, j)))

Pythonによるダビーズ・ボウルディン指数の実装

Scikit-learnを使用して、DB指数を計算するコード例を以下に示します。

from sklearn.cluster import KMeans
from sklearn.metrics import davies_bouldin_score
from sklearn.datasets import make_blobs

# サンプルデータの生成
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

# K-means クラスタリングの実行
kmeans = KMeans(n_clusters=4)
y_kmeans = kmeans.fit_predict(X)

# ダビーズ・ボウルディン指数の計算
db_score = davies_bouldin_score(X, y_kmeans)
print(f'ダビーズ・ボウルディン指数: {db_score}')

この例では、davies_bouldin_score()関数を用いてDB指数を計算しています。クラスタリングの結果の質を評価するために、この指数は便利です。

シルエットスコアとダビーズ・ボウルディン指数の比較

両方の指標がクラスタリングの質を評価するために使用されますが、それぞれ異なる視点を持っています。

指標 範囲 良い値 目的
シルエットスコア -1 から 1 1に近いほど良い クラスタ内の結束度とクラスタ間の分離度を測定
ダビーズ・ボウルディン指数 0 以上 値が低いほど良い クラスタ間の分散と分離度を測定

まとめ

シルエットスコアとダビーズ・ボウルディン指数は、クラスタリングの結果を評価するための強力なツールです。シルエットスコアは1に近い値が良い結果を示し、DB指数は値が低いほど良い結果を示します。クラスタリングアルゴリズムを選択する際、これらの指標を使用して結果を評価し、最適なクラスタリング手法を選ぶことが重要です。