📜  剪影指数 – 集群有效性指数 | 2套

📅  最后修改于: 2022-05-13 01:58:07.659000             🧑  作者: Mango

剪影指数 – 集群有效性指数 | 2套

先决条件: Dunn 索引和 DB 索引 - 集群有效性索引

许多有趣的算法被应用于分析非常大的数据集。大多数算法不提供任何验证和评估方法。因此很难断定哪些是最好的集群并且应该进行分析。

有几个指标可用于预测最佳集群——

  1. 剪影索引
  2. 邓恩指数
  3. 数据库索引
  4. CS指数
  5. I-索引
  6. XB 或谢本尼索引

现在,让我们讨论内部集群有效性索引Silhouette Index

剪影索引 –

轮廓分析是指一种解释和验证数据集群内一致性的方法。轮廓值是衡量一个对象与其自己的集群(内聚)相比其他集群(分离)的相似程度。它可用于研究生成的簇之间的分离距离。轮廓图显示了一个集群中的每个点与相邻集群中的点的接近程度的度量,从而提供了一种视觉评估参数(如集群数量)的方法。



轮廓值的计算 –
如果Silhouette 索引值很高,则该对象与其自己的集群匹配良好,而与相邻集群的匹配不佳。使用每个样本的平均簇内距离 (a) 和平均最近簇距离 (b) 计算轮廓系数。轮廓系数定义为 -

S(i) = ( b(i) – a(i) ) / ( max { ( a(i), b(i) ) }

在哪里,

  • a(i) 是第 i对象与同一簇中所有其他对象的平均差异
  • b(i) 是第 i对象与最近簇中的所有对象的平均相异度。

轮廓值范围 –

现在,显然 S(i) 将位于[-1, 1]

  1. 如果轮廓值接近 1,则样本已很好地聚类并已分配给非常合适的聚类。
  2. 如果轮廓值即将为 0,则可以将样本分配给离它最近的另一个集群,并且该样本与两个集群的距离相等。这意味着它表示重叠的集群
  3. 如果轮廓值接近 –1,则样本被错误分类并且仅被放置在集群之间的某处。

以下是上述剪影索引的Python实现:

from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
  
# Generating the sample data from make_blobs
  
X, Y = make_blobs()  
  
no_of_clusters = [2, 3, 4, 5, 6]
  
for n_clusters in no_of_clusters:
  
    cluster = KMeans(n_clusters = n_clusters)
    cluster_labels = cluster.fit_predict(X)
  
    # The silhouette_score gives the 
    # average value for all the samples.
    silhouette_avg = silhouette_score(X, cluster_labels)
  
    print("For no of clusters =", n_clusters,
          " The average silhouette_score is :", silhouette_avg)

输出:

For no of clusters = 2  The average silhouette_score is : 0.7722709127556407
For no of clusters = 3  The average silhouette_score is : 0.8307470737845413
For no of clusters = 4  The average silhouette_score is : 0.6782013483149748
For no of clusters = 5  The average silhouette_score is : 0.5220013897800627
For no of clusters = 6  The average silhouette_score is : 0.3453103523071251

参考:
https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html
https://en.wikipedia.org/wiki/Silhouette_(聚类)