【机器学习】聚类分析的模型评估

摘要:
1fromskylearn.processingimportStandardScaler2data=StandardScaler().fit_transform(data)方法保存数据的平均值和方差,并且仍然可以使用数据的平均和方差进行归一化。1.轮廓系数该指数不需要知道数据集的真实标签。

  一、聚类算法中的距离

  1. 单个样本之间的距离

    【机器学习】聚类分析的模型评估第1张

  余弦距离     【机器学习】聚类分析的模型评估第2张

  在聚类分析中,一般需要对数据进行标准化,因为聚类数据会受数据量纲的影响。

  在sklearn库中,可调用如下方法进行标准化:

1 from sklearn.preprocessing import StandardScaler
2 data = StandardScaler().fit_transform(data)

  这种方法将data的均值和方差保存下来,并使用它们对数据进行归一化,这样,有新的数据输入时,仍可以沿用data的均值和方差来做归一化。

  【联】facenet中是采用的L2归一化,这和每个向量自身相关,而不是和整体数据相关。

  在上述距离中,受量纲影响较大的是明氏距离和欧氏距离(明氏距离的特例),马氏距离和余弦距离则受量纲影响较小。

  其中,余弦距离越大(趋近于1),代表两个向量的方向越接近,相似度越高。

  2. 两个聚类簇之间的距离

  【机器学习】聚类分析的模型评估第3张 

  二、聚类算法的评价

  评价聚类分群的最佳数量与分群效果。

  1. 轮廓系数(silhouette coefficient)

  轮廓系数这一指标无需知道数据集的真实标签。

  取值范围[-1, 1],值越大,聚类效果越好。旨在将某个对象与自己的簇的相似程度和与其他簇的相似程度作比较。轮廓系数最高的簇的数量表示簇的数量的最佳选择。

  轮廓系数综合考虑了内聚度和分离度两种因素。

  簇内不相似度ai:计算样本i到所属簇内其他样本的平均距离ai,将ai定义为样本i的簇内不相似度,簇C中所有样本的ai的均值为簇C的簇不相似度。

  簇间不相似度bi:计算样本i到其他某簇Cj的所有样本的平均距离bij,称为样本i与簇Cj的不相似度,将bi=min{bi1, bi2, ... bik}定义为样本i的簇间不相似度。

  样本i的轮廓系数

  【机器学习】聚类分析的模型评估第4张

  Si越接近1,则说明样本i的聚类合理;Si越接近-1,则说明样本越应该被分到其他簇内;Si近似为0,则说明样本i近似在两个簇的边界上。

  聚类结果的轮廓系数:所有样本的Si的均值。该系数越大,聚类效果越好。

1 from sklearn import metrics
2 metrics.silhouette_score(data, labels)

  2. 调整兰德指数(adjusted rand index)

  兰德指数需要知道实际的类别信息C,设K为聚类结果。用a表示在C、K中都是同一类别的元素的对数,用b表示在C、K中都是不同类别的元素的对数,则兰德指数为

  【机器学习】聚类分析的模型评估第5张

  其中【机器学习】聚类分析的模型评估第6张表示数据集中可以组成的总的元素对数。RI的取值范围为[0, 1],值越大,意味着聚类结果与真实情况越吻合。

  对于随机姐u共,RI并不能保证分数接近0。为了实现“在聚类结果随机产生的情况下,指标应该接近0”,提出了调整兰德指数,它具有更高的区分度:

  【机器学习】聚类分析的模型评估第7张

  ARI的取值范围为[-1, 1],值越大意味着聚类结果与真实情况越吻合。从广义角度来讲,ARI衡量的是两个数据分布的吻合程度。

1 metrics.adjusted_rand_score(labels_true, labels_pred)

  3. 互信息(mutual information)

  MI也用来衡量两个数据分布的吻合程度。

  假设U与V是对N个样本的分配情况,则两种分布的熵分别为

  【机器学习】聚类分析的模型评估第8张

  其中【机器学习】聚类分析的模型评估第9张

  则U与V之间的互信息MI定义为

  【机器学习】聚类分析的模型评估第10张

  其中【机器学习】聚类分析的模型评估第11张

  标准化后的互信息NMI为

  【机器学习】聚类分析的模型评估第12张

  与ARI类似,调整互信息(adjusted mutual information)为

  【机器学习】聚类分析的模型评估第13张

  MI与NMI的取值范围为[0, 1],AMI的取值范围为[-1,1],它们都是值越大意味着聚类结果与真实情况越吻合。

1 metrics.adjusted_mutual_info_score(labels_true, labels_pred)

   4. 同质性(homogeneity),完整性(completeness)和二者的调和平均(v-measure)

  同质性:每个簇只包含单个类的成员

  完整性:给定类的所有成员都分配给同一个簇

1 metrics.homogeneity_score(labels_true, labels_pred)
2 metrics.completeness_score(labels_true, labels_pred)
3 metrics.v_measure_score(labels_true, labels_pred)

  5. Calinski-Harabaz index

  数据类内协方差越小越好,类间协方差越大越好,calinski harabaz指数越高。

  它和轮廓系数一样,可以在数据真实标签不知道的情况下,对聚类效果进行评估。似乎比轮廓系数的计算更快。

1 metrics.calinski_harabaz_score(data, labels)

 更多参考:

sklearn中的模型评估-构建评估函数

sklearn-clustering官方文档 

(2.3.9 clustering performance evaluation,注意advantages&drawbacks)

  

  

免责声明:文章转载自《【机器学习】聚类分析的模型评估》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jmeter循环读取数据库表中的数据ReactiveX 学习笔记(35)使用 RxDart + RxCommand 进行 GUI 编程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

交换机的三种转发模式

下面是交换机6大工作原理: 1、基于源MAC地址学习 2、基于目标MAC地址转发  3、同一接口可以学习到多个MAC地址  4、同一个MAC地址被多个接口学习到,选择后学习到的接口 5、收到广/组播帧, 向本VLAN的其他所有接口转发  6、对于没有目标MAC地址表项的帧,向本VLAN的其他所有接口转发   交换机的三种转发模式: 1、直通式转发:  是指...

python--集合-set

1 1 # 集合-set 2 2 # 集合是高中的要给概念 3 3 # 一堆确定的无序的唯一的数据, 集合中的每一个数据成为一个元素 4 4 5 5 # 集合的定义 6 6 s = set() 7 7 print(type(s)) 8 8 print(s) 9 9 10 10 # 此时大括号中一定要有...

Django之路第四篇:Models

概述 通常,一个Model对应数据库的一张数据表 Django中Models以类的形式展现 它包含了一些基本字段以及数据的一些行为 ORM Django使用了对象关系映射-----ORM(Object Relation Mapping) 实现了对象和数据库之间的映射 隐藏了数据访问的细节,不需要编写SQL语句 编写Models的步骤 在应用根目录...

串行通信协议 —— UART

UART —— Universal Asynchronous Receiver/Transmitter —— 通用异步收发器  一、UART简介 (强烈推荐一篇详细介绍UART的博客:https://www.cnblogs.com/mylinux/p/4078576.html) UART是异步串口通信协议, 工作原理是将传输数据的每个字符一位接一位地传输,...

unity中ScriptableObject在assetbundle中的加载

转载请标明出处:http://www.cnblogs.com/zblade/ 以前都是写一些个人的调研博客,从今天开始,也写一些个人在开发中遇到的一些可以分享的趟坑博客,为后续的开发人员提供一些绵薄之力的帮助吧。 好的,今天就分享一个困扰了一个晚上的assetbundle中如何加载ScriptableObject的坑。 一、ScriptableObject...

ldap 导出、导入ldif数据

ldap 导出、导入ldif数据有如下方式: 1.dsadm(速度快,需要停止ldap实例) 2.dsconf(速度慢,需要保持ldap实例开启) windows导出、导入需要加上参数--unsecured 导出ldap数据--------- dsee7indsconf.exe export --unsecured D:NetAuthsoftbak2017...