几种常见的聚类评估指标

本文介绍了聚类算法的评估指标,包括聚类纯度、兰德系数(RI)及其调整版本(ARI),并详细阐述了这些指标的计算原理和过程。通过示例展示了如何计算这些指标,以评估聚类算法的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 前言

如同之前介绍的其它算法模型一样,对于聚类来讲我们同样会通过一些评价指标来衡量聚类算法的优与劣。在聚类任务中,常见的评价指标有:纯度(Purity)、兰德系数(Rand Index, RI)、F值(F-score)和调整兰德系数(Adjusted Rand Index,ARI)。同时,这四种评价指标也是聚类相关论文中出现得最多的评价方法。下面,我们就来对这些算法一一进行介绍。

2 聚类评价指标

假设现在有一批文档一共包含有叉形、圆形与菱形三个类别,此时你需要对其进行聚类处理,且现在某聚类算法的聚类结果如图1所示:

000364
图 1. 文本聚类结果

如图1所示,该聚类算法一共将所有的文本划分成了三个簇,那么我们该怎么来对这一结果进行评判呢?

扫码回复“加群”即可进入月来客栈交流群!

2.1聚类纯度

在聚类结果的评估标准中,一种最简单最直观的方法就是计算它的聚类纯度(purity),别看纯度听起来很陌生,但实际上和分类问题中的准确率有着异曲同工之妙。因为聚类纯度的总体思想也用聚类正确的样本数除以总的样本数,因此它也经常被称为聚类的准确率。只是对于聚类后的结果我们并不知道每个簇所对应的真实类别,因此需要取每种情况下的最大值。具体的,纯度的计算公式定义如下:
P=(Ω,C)=1N∑kmax⁡j∣ωk∩cj∣(1) \begin{aligned} P=(\Omega,\mathbb{C})=\frac{1}{N}\sum_{k}\max_{j}|\omega_k\cap c_j| \end{aligned}\tag{1} P=(Ω,C)=N1kjmaxωkcj(1)
其中NNN表示总的样本数;Ω={ ω1,ω2,...,ωK}\Omega=\{\omega_1,\omega_2,...,\omega_K\}Ω={ ω1,ω2,...,ωK}表示一个个聚类后的簇,而C={ c1,2,...cJ}\mathbb{C}=\{c_1,_2,...c_J\}C={ c1,2,...cJ}表示正确的类别;ωk\omega_kωk表示聚类后第kkk个簇中的所有样本,cjc_jcj表示第jjj个类别中真实的样本。在这里PPP的取值范围为[0,1][0,1][0,1],越大表示聚类效果越好。

有了公式(1)(1)(1)之后,我们就可以通过它来计算图1中聚类结果的纯度。对于第一个簇来说:∣ω1∩c1∣=5|\omega_1\cap c_1|=5ω1c1=5∣ω1∩c2∣=1|\omega_1\cap c_2|=1ω1c2=1∣ω1∩c3∣=0|\omega_1\cap c_3|=0ω1c3=0,可以看出我们此时假设c1c_1c1对应的是叉形、c2c_2c2对应的是圆形、c3c_3c3对应的是菱形(这个对应顺序没有任何关系)。因此第一个簇聚类正确的样本数就为555。同理,按照这样的方法可以计算得到第二个簇和第三个簇聚类正确的样本数444333。所以,对于图1所示的聚类结果来说,其最终的纯度为:
P=5+4+317=0.706(2) P=\frac{5+4+3}{17}=0.706\tag{2} P=175+4+3=0.706(2)

2.2 兰德系数与F值

2.2.1 计算原理

在介绍完了纯度这一评价指标后,我们再来看看兰德系数(Rand Index)和F值。虽然兰德系数听起来是一个陌生的名词,但它的计算过程却也与准确率的计算过程类似。同时,虽然这里也有一个叫做F值的指标,并且它的计算过程也和分类指标中的F值类似,但是两者却有着本质的差别。说了这么多,那这两个指标到底该怎么算呢?同分类问题中的混淆矩阵类似,这里我们也要先定义四种情况进行计数,然后再进行指标的计算。

为了说明兰德系数背后的思想,我们还是以图1中的聚类结果为例进行说明(为了方便观察,我们再放一张图在这里):

000364
图 1. 文本聚类结果

现在你想象一下,把这三个簇想象成三个黑色的布袋。那么对于任意一个布袋来说:①如果你从里面任取两个样本出来均是同一个类别,这就表示这个布袋中的所有样本都算作是聚类正确的;②相反,如果取出来发现存在两个样本不是同一类别的情况,则就说明存在着聚类错误的情况。其次,对于任意两个布袋来说:③如果你任意从两个布袋中各取一个样本发现两者均是不同类别,这就表示两个布袋中的样本都被聚类正确了;④相反,如果发现取出来的两个样本存在相同的情况,则说明此时也存在着聚类错误的情况。大家想一想,应该再也找不出第五种情况了。由此,我们可以做出如下定义:

  • TPTPTP:表示两个同类样本点同一个簇(布袋)中的情况数量;
  • FPFPFP:表示两个非同类样本点同一个簇中的情况数量;
  • TNTNTN:表示两个非同类样本点分别在两个簇中的情况数量;
  • FNFNFN:表示两个同类样本点分别在两个簇中的情况数量;

由此,我们便能得到如下所示的对混淆矩阵(Pair Confusion Matrix):

000365
图 2. 对混淆矩阵图

其中图2右边所示的矩阵就是根据图1中的聚类结果计算而来。因此,TP=20TP=20TP=20的含义就是在所有簇中,任一簇中任取两个样本均是同一类别的情况总数;TN=72TN=72TN=72则表示在所有簇中,任两簇中各取一个样本均不是同一类别的情况总数。

有了上面各种情况的统计值,我们就可以定义出兰德系数和F值的计算公式:
RI=TP+TNTP+FP+FN+TN(3) RI=\frac{TP+TN}{TP+FP+FN+TN}\tag{3} RI=TP+FP+FN+TNTP+TN(3)

Precision=TPTP+FPRecall=TPTP+FNFβ=(1+β2)Precision⋅Recallβ2⋅Precision+Recall(4) \begin{aligned} Precision&=\frac{TP}{TP+FP}\\[2ex] Recall&=\frac{TP}{TP+FN}\\[2ex] F_{\beta}&=(1+\beta^2)\frac{Precision\cdot Recall}{\beta^2\cdot Precision+Recall} \end{aligned}\tag{4} PrecisionRecallFβ=TP+FPTP=TP+FNTP=(1+

### 头歌平台中的聚类算法性能评估指标 头歌平台(Tougo)作为一个在线实验教学平台,支持多种数据科学和机器学习的实践任务。在聚类算法的性能评估方面,尽管具体实现可能因项目或课程设置而异,但通常会采用广泛接受的聚类性能评估指标。以下是一些常见评估指标及其在头歌平台中的潜在应用: #### 1. 内部评估指标 内部评估指标不需要参考真实标签,而是直接基于数据本身的特性进行评估。以下是几种常用的内部评估指标[^2]: - **Davies-Bouldin Index (DB 指数)**:该指数通过计算簇之间的相似性和簇内紧凑性来衡量聚类质量。较低的 DB 指数表示更好的聚类效果。 - **Calinski-Harabasz Index**:也称为方差比率准则,它通过簇间离散度与簇内离散度的比值来评估聚类质量。较高的值表示更好的聚类效果[^1]。 - **Silhouette Coefficient(轮廓系数)**:该系数衡量每个样本与其自身簇的距离与其他簇的距离之比。值越接近 1 表示样本与其簇更紧密相关。 #### 2. 外部评估指标 外部评估指标需要真实的标签作为参考,以比较聚类结果与真实标签之间的匹配程度。以下是几种常用的外部评估指标[^3]: - **Adjusted Rand Index (ARI)**:调整后的兰德指数衡量了聚类结果与真实标签之间的相似性。值为 1 表示完全匹配,值为 0 表示随机分配。 - **Normalized Mutual Information (NMI)**:归一化的互信息衡量了聚类结果与真实标签之间的共享信息量。值越高表示聚类结果与真实标签越接近。 - **Accuracy (ACC)**:准确率衡量了聚类结果中正确分类的样本比例。需要注意的是,ACC 在聚类任务中可能需要进行标签映射以获得最佳匹配。 #### 3. 综合评估方法 在实际应用中,通常需要综合多个指标来全面评估聚类性能。例如,在头歌平台的某些实验中,可能会使用如下代码来计算并输出多种评估指标的结果: ```python from sklearn import metrics # 假设 labels_true 是真实标签,labels_pred 是聚类结果 evaluation_metrics = { 'Silhouette Coefficient': metrics.silhouette_score(data, labels_pred), 'Davies-Bouldin Index': metrics.davies_bouldin_score(data, labels_pred), 'Calinski-Harabasz Index': metrics.calinski_harabasz_score(data, labels_pred), 'Adjusted Rand Index': metrics.adjusted_rand_score(labels_true, labels_pred), 'Normalized Mutual Information': metrics.normalized_mutual_info_score(labels_true, labels_pred), 'Accuracy': metrics.accuracy_score(labels_true, labels_pred) } print("聚类性能评估结果:", evaluation_metrics) ``` 上述代码展示了如何结合内部和外部评估指标聚类结果进行全面分析[^1]。 #### 4. 特殊场景下的评估指标 在深度聚类领域,部分研究者倾向于使用 ACC、NMI 和 ARI 作为主要评估指标,并辅以其他参考指标如 F1 分数[^3]。此外,根据具体应用场景,可能还需要引入特定领域的评估标准。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值