聚类(六)—— 聚类评估
主要内容聚类分析概述K-Means聚类层次聚类基于密度的聚类其他聚类方法聚类评估小结六、聚类评估聚类评估用于对在数据集上进行聚类的可行性和被聚类方法产生的结果的质量进行评估。聚类评估主要包括以下任务。1.估计聚类趋势2.确定数据集中的划分簇数3.测定聚类质量聚类趋势的估计(3)如果D是均匀分布的,H接近0.5。聚类簇数的确定找出正确的簇数依赖于数据集分布的形状和尺度,也依赖于用户要求的聚类分辨率。
六、聚类评估
聚类评估用于对在数据集上进行聚类的可行性和被聚类方法产生的结果的质量进行评估。聚类评估主要包括以下任务。
1.估计聚类趋势
2.确定数据集中的划分簇数
3.测定聚类质量
聚类趋势的估计
(3)
如果D是均匀分布的,H接近0.5。
聚类簇数的确定
找出正确的簇数依赖于数据集分布的形状和尺度,也依赖于用户要求的聚类分辨率。有许多估计簇数的可能方法。这里简略介绍几种简单但流行和有效的方法。
它基于如下观察:增加簇数有助于降低每个簇的簇内方差之和。这是因为有更多的簇可以捕获更细的数据对象簇,簇中对象之间更为相似。然而,如果形成太多的簇,则降低簇内方差和的边缘效应可能下降,因为把一个凝聚的簇分裂成两个簇只能使簇内方差和的稍微降低。因此,一种选择正确的簇数启发式方法是使用簇内方差和关于簇数曲线的拐点。
聚类质量的测定
1.外在方法
有许多度量(如熵、纯度、精度、召回率和F度量)用来评估分类模型的性能。对于分类,度量预测的类标号与实际类标号的对应程度。但是这些度量通过使用簇标号而不是预测的类标号,不需要做较大的改变。
兰德系数RI 和ARI:
a表示表示在实际类别信息与聚类结果中都是同类别的元素对数,b表示在实际类别信息与聚类结果中都是不同类别的元素对数,分母表示数据集中可以组成的总元素对数。
兰德系数的值在[0,1]之间,当聚类结果完美匹配时,兰德系数为1。对于随机结果,RI并不能保证分数接近零。为了实现“在聚类结果随机产生的情况下,指标应该接近零”,调整兰德系数(Adjusted rand index)被提出,它具有更高的区分度。
ARI取值范围为[-1,1],负数代表结果不好,值越大意味着聚类结果与真实情况越吻合。ARI可用于聚类算法之间的比较。
sklearn中的ARI计算
from sklearn import metrics
labels_true = [0,0,0,1,1,1]
labels_pred = [0,0,1,1,2,2]
print(metrics.adjusted_rand_score(labels_true,labels_pred))
0.24242424242424243
2.内在方法
内在方法用于没有基准可用时的聚类质量评估,通过考察簇的分离情况和簇的紧凑度进行聚类评估。
sklearn中通过sklearn.metrics.silhouette_score()方法计算聚类的轮廓系数。
对Iris数据聚类并计算轮廓系数。
import numpy as np
from sklearn.cluster import KMeans
from sklearn import metrics
from sklearn.metrics import silhouette_score
from sklearn.datasets import load_iris # 导入数据集iris
X = load_iris().data # 载入数据集
kmeans_model = KMeans(n_clusters=3,random_state=1).fit(X)
labels = kmeans_model.labels_
metrics.silhouette_score(X,labels,metric='euclidean')
0.5528190123564091
更多推荐