聚类结果不好怎么办_人脸聚类常用评价指标

1.概述

好的聚类算法,一般要求类簇具有:

  • 高的类内 (intra-cluster) 相似度
  • 低的类间 (inter-cluster) 相似度

评价一个聚类算法的指标不像有监督的分类算法计算其精确率,召回率等指标那样简单。聚类评估中不应该将标注结果作为聚类结果的评价指标,除非我们有相关的先验知识或某种假设,知道评估的这种标准或相似性度量下其簇内差距更小。

对于聚类算法大致可分为 外部评价标准和内部评价标准。外部评价标准针对的是给定一个基准,譬如另外一种聚类结果,当然人工标注也可理解为一种算法,根据这些基准数据对聚类结果进行评价。

8ea8e8b360bc624a992ed4743d082643.png

以sklearn给出的这图为例,我们看上去哪种算法好,哪种不好,实际是我们给了他一种事实标准,由此为基准去评价的。

在数据分析中,包括有监督和无监督的机器学习算法,重要的是距离的衡量,就是我们怎么认为谁跟谁是最相似的度量标准。这距离常用的有欧式距离,曼哈顿距离,余弦距离等, 距离标准不一,自然聚类的结果不一。举个不恰当的例子,三个人站这里,可以按年龄,性别,项目,籍贯等作为距离标准,每种的结果是不一样的。

针对人脸聚类的问题,一个人的多张人脸其相似度差异是会很大的,尤其是图像质量的差异。下图是我用github上开源的一份gan代码 修改后跑出来的GAN人脸(git@github.com:a312863063/seeprettyface-generator-yellow.git),

50102588c4211aff02fe7ce22e4526cf.png

用另一个完全无关的人脸识别模型去对这些图片进行align并进行特征提取,align后如下

a5dc96778e48255ab05dd80064d7c4d6.png

依次提特征后计算0024这张图片与其他图片的相似度,可以看出其与前几张是完全不相似甚至为负余弦相似度的,跟随后的那些也是相似度逐渐降低的。然后进一步的计算n与n+1张的相似度,则都在0.8以上,要知道这里是原始的相似度,通常来说声称的相似度是要经过一道拉伸函数转换的,这里的0.8都相当于98%左右了.

6ccaa9bae09eefd322858278eed4bf22.png

再放一个类似的供观摩:

ab3f82cf2552711028db33ff107a17ee.png

如果把这些假脸当做现实社会中采集的万千人脸挑出的些图片的话,按这个排序,两两相似度都差不多95%以上,理应是一个人,然而随便相距较远的两个图又明显不是一个人,这种情况该怎么划分类簇?

实际情况远比这个复杂,不同的划分标准及评价准则都将影响聚类的算法及结果。

聚类的评价就是判断聚类算法给每个数据的类别标签与真实标签的一致性程度。虽说聚类是无监督学习,但常用的评价指标均需要用到类别标签。

2. 机器学习中聚类的评价指标

下面是sklearn中几种聚类度量指标,

2.1 兰德指数

兰德指数RI(Rand Index),将聚类看成一对对点的决策过程,对N(N-1)/2对样本依次计算其分类结果。

If C is a ground truth class assignment and K the clustering, let us define TP and TN as:
TP:the number of pairs of elements that are in the same set in C and in the same set in K
TN:the number of pairs of elements that are in different sets in C and in different sets in K

假设C是真实标签集,K是聚类的结果,定义TP为本来为一个类中的点对在聚类结果K中也在一个类中,定义TN为本来不在一个类中的点对在聚类结果中也不在一个类簇中。则兰德系数可以表示为:

此处的RI进一步的可以计算

以下供参考,

在RI中FP与FN的后果假设是一样的,实际人脸聚类执行中要考虑一人分多类的后果大还是多人混到一类的后果大,如果一人分成多类的后果更严重则可以采用

并令beta的值大于1

2.2 调整后的兰德指数(Adjusted Rand index, ARI)

RI的指标对于随机划分来说其值不为0,用于衡量两个分布的相似程度,取值范围[-1,1],数值越接近1越好,随机产生标签时则值接近0

计算过程较麻烦,需要先生成列连表再计算。
from sklearn.metrics import adjusted_rand_score
labels_true = [0, 0, 1, 1, 2, 2]
labels_pred = [0, 0, 1, 1, 1, 2]
ari=adjusted_rand_score(labels_true, labels_pred)  
print('兰德系数为:%f'%(ari))
值为0.4444

即使将标签改变,譬如pred中的2改为3其分值也不变。

2.3 纯度Purity

其中N表示总的样本个数,

表示聚类算法的划分,
表示真是类别标签划分。

在每个聚类簇中分配一个标签,且为此标签的样本在该簇中出现次数最多,计算所有K个聚类簇中的这个次数之和与总数之比为纯度。

81fd4cdc1ffb069fc9c2c4a3f5f87acc.png

(5+3+4)/(7+5+5)=12/17=0.706

这个指标无法准确反映聚类的质量与簇个数的关系

2.4 NMI(Normalized Mutual Information)

Given the knowledge of the ground truth class assignments labels_true and our clustering 
algorithm assignments of the same samples labels_pred, the Mutual Information is a function 
that measures the agreement of the two assignments, ignoring permutations. 
Two different normalized versions of this measure are available, 
Normalized Mutual Information (NMI) and Adjusted Mutual Information (AMI). 
NMI is often used in the literature, 
while AMI was proposed more recently and is normalized against chance

在已知真实标签labels_true的数据集下利用聚类算法基于该样本得到labels_pred, 互信息Mutual information不考虑标签排列的情况下测量两个标签分配的一致性。互信息有两个标准化版本,归一化互信息Normalized mutual information和调节互信息Adjusted mutual information。

其中

为互信息,互信息的最小值为0,当类簇随机划分及聚类算法与真实标签完全独立时,互信息为0;如果聚类算法完整重现了真实标签,则互信息为1.

当聚类的簇数等于样本个数时互信息MI也达到最大值,其未对簇数目较大的划分方式进行惩罚。NMI则对MI进行了修正,使得值落在[0,1]之间。

互信息的几种实现其对于labels_true和labels_pred是对称的,互换位置也没关系。

优点:随机分配的AMI接近0; 数值趋近1时说明两个分配有极高的一致性。

缺点:同样需要标注数据

2.5 同质性,完整性和V-measure

已知真实簇的标签分配,可以使用条件熵分析来定义一些直观的度量。

Rosenberg 和 Hirschberg (2007) 为任何簇分配定义了以下两个理想的目标:

  • 同质性(homogeneity): 每个簇只包含一个类的成员
  • 完整性(completeness): 给定类的所有成员都分配给同一个簇。

这两个分别有对应的homogeneity_score和completeness_score作为分数去衡量。

同质性和完整性两个分数的调和平均成为V-measure,最新的sklearn中还支持带beta参数的v_measure_score

3fda7d48b6d5a67aaf320455054ca119.png

这个例子中第二个pred提高了同质性,但2依然分给了3,4两个标签,完整性依然欠缺一点。比前一个减少了多人分一类,依然存在一人分多类的现象。

2.6 Fowlkes-Mallows(FMI)

FMI也要求标签已知,定义为成对的准确率和召回率的几何平均值:

其中其中的TP真正例(True Positive)的数量(即,真实标签组和预测标签组中属于相同簇的点对数),FP假正例(False Positive)(即,在真实标签组中属于同一簇的点对数,而不在预测标签组中),FN假负例(False Negative)的数量(即,预测标签组中属于同一簇的点对数,而不在真实标签组中)

计算可以使用sklearn的metrics.fowlkes_mallows_score(labels_true, labels_pred)进行计算

e93b10804136e41b2df7a9a80b315ebe.png

以上这些都是要有真实标签数据的,对于没有标签数据的则有Silhouette系数,Calinski-Harabaz 指数,Davies-Bouldin Index(DBI)等,因为没有了标签数据,所以衡量标准都依赖距离了,目标只有一个,刻画类内紧密,类间疏远的程度。考虑到人脸特征并非凸集及其高维特性,用这种刻画想法很好,却没多少意义。

下面时cvpr2019,2020相关聚类算法及与其他算法在公开数据集上的benchmark指标,可以看出这人用的也是Precision/Recall/Fscore等基本指标,更专业点的是用Pairwise F-score,BCubed F-score,NMI三种。所以一般来说,选择这其中的几种可满足研发需要了。

Pairwise F-score在介绍RI的时候提到的成对的precision与recall的时候介绍了,

BCubed precision表示一个类簇档案中是否都是一个人的照片,相当于同质性。Bcubed recall表示一个人的照片是否都分到同一类簇档案中去了,相当于完整性。BCubed F-score就是综合precision和recall的结果了。

4bc132b3490f131f895b28022258b090.png

49767d6a2d8ec8bee6e373acc589bc24.png

Enrique Amigo, Julio Gonzalo, Javier Artiles, and Felisa ´ Verdejo. A comparison of extrinsic clustering evaluation metrics based on formal constraints. Information retrieval, 12(4):461–486, 2009

Yichun Shi, Charles Otto, and Anil K Jain. Face clustering: representation and pairwise constraints. IEEE Transactions on Information Forensics and Security, 13(7):1626– 1640, 2018

Zhongdao Wang, Liang Zheng, Yali Li, and Shengjin Wang. Linkage based face clustering via graph convolution network. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 1117–1125, 2019.

Lei Yang, Xiaohang Zhan, Dapeng Chen, Junjie Yan, Chen Change Loy, and Dahua Lin. Learning to cluster faces on an affinity graph. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 2298– 2306, 2019.

@inproceedings{yang2019learning,
title={Learning to Cluster Faces on an Affinity Graph},
author={Yang, Lei and Zhan, Xiaohang and Chen, Dapeng and Yan, Junjie and Loy, Chen Change and Lin, Dahua},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
year={2019}
}
@inproceedings{yang2020learning,
title={Learning to Cluster Faces via Confidence and Connectivity Estimation},
author={Yang, Lei and Chen, Dapeng and Zhan, Xiaohang and Zhao, Rui and Loy, Chen Change and Lin, Dahua},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
year={2020}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值