学习笔记【机器学习重点与实战】——8 聚类基础(评价指标/距离/相似度)

1 基本概念

在”无监督学习” (unsupervised learning) 中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。

聚类(clustering)就是一种研究最多、应用最广的无监督学习。对于大量未知标注的数据集,按照数据的内在相似性将数据集划分为多个类别,将相似的对象归到同一个簇中,使得簇内的数据相似度较大,而簇间的数据相似度较小。即有点像全自动分类,簇内的对象越相似,聚类的效果越好。

2 评价指标

2.1 样本无标签

(1)Silhouette Coefficient - 轮廓系数

较高的 Silhouette Coefficient 得分与具有更好定义的聚类的模型相关。Silhouette Coefficient 是为每个样本定义的,由两个得分组成:

  • a: 样本与同一类别中所有其他点之间的平均距离。
  • b: 样本与 下一个距离最近的簇 中的所有其他点之间的平均距离。

然后将单个样本的 Silhouette 系数 s 给出为:

s=bamax(a,b) s = b − a m a x ( a , b )

给定一组样本的 Silhouette 系数作为每个样本的 Silhouette 系数的平均值。

实现代码如下:

from sklearn.metrics.cluster import silhouette_score
silhouette_score(X, labels, metric='euclidean')

(2)Calinski-Harabaz

较高的 Calinski-Harabaz 的得分与具有更好定义的聚类的模型相关。类别内部数据的协方差越小越好,类别之间的协方差越大越好,这样的Calinski-Harabasz分数会高。 最大的优势是比轮廓系数快很多。

对于 k 簇,Calinski-Harabaz 得分 s 是作为 between-clusters dispersion mean (簇间色散平均值)与 within-cluster dispersion(群内色散之间)的比值给出的:

s(k)=Tr(Bk)Tr(Wk) s ( k ) = T r ( B k ) T r ( W k )

其中 BK B K 是 between group dispersion matrix (组间色散矩阵), WK W K 是由以下定义的 within-cluster dispersion matrix (群内色散矩阵):
Wk=q=1kxCq(xcq)(xcq)T W k = ∑ q = 1 k ∑ x ∈ C q ( x − c q ) ( x − c q ) T

Bk=qnq(cqc)(cqc)T B k = ∑ q n q ( c q − c ) ( c q − c ) T

N 为数据中的点数,C_q为 cluster (簇) q 中的点集, C_q 为 cluster(簇) 的 q 中心,c 为 E 的中心,n_q为 cluster(簇) 中的 q 点数。

实现代码如下:

from sklearn.metrics.cluster import calinski_harabaz_score
calinski_harabaz_score(X, labels)

(3)Compactness - 紧密性 CP

CP计算每一个类各点到聚类中心的平均距离。CP越低意味着类内聚类距离越近。但没有考虑类间效果。

(4)Separation - 间隔性 SP

SP计算各聚类中心两两之间平均距离。SP越高意味类间聚类距离越远。但没有考虑类内效果。

(5)Davies-Bouldin Index - DBI

DB计算任意两类别的类内距离平均距离(CP)之和除以两聚类中心距离,求最大值。DB越小意味着类内距离越小,同时类间距离越大。但因使用欧式距离,所以对于环状分布,聚类评测很差。

(6)Dunn Validity Index - DVI

DVI计算任意两个簇元素的最短距离(类间)除以任意簇中的最大距离(类内)。DVI越大意味着类间距离越大,同时类内距离越小。但对离散点的聚类测评很高、对环状分布测评效果差。

2.2 样本有标签

(1)Homogeneity - 均一性

每个簇只包含一个类的成员。

实现代码如下:

from sklearn.metrics.cluster import homogeneity_score
homogeneity_score(labels_true, labels_pred)

若labels_true = [0, 0, 1, 1],labels_pred = [1, 1, 0, 0];homogeneity_score = 1.0。

(2)Completeness - 完整性

给定类的所有成员都分配给同一个簇。

实现代码如下:

from sklearn.metrics.cluster import completeness_score
completeness_score(labels_true, labels_pred)

若labels_true = [0, 0, 1, 1],labels_pred = [0, 1, 0, 1];completeness_score = 0.0。

(3)V-measure

均一性和完整性的加权平均。

实现代码如下:

from sklearn.metrics.cluster import v_measure_score
v_measure_score(labels_true, labels_pred)

若labels_true = [0, 0, 1, 2],labels_pred = [0, 0, 1, 1];v_measure_score = 0.8。

(4)Rand index - 兰德指数 RI 、Adjusted Rand index - 调整兰德指数 ARI

RI=2(a+d)m(m1) R I = 2 ( a + d ) m ( m − 1 )

RI取值范围为[0,1],越大表示聚类效果准确性越高,同时每个类内的纯度越高。

为了实现“在聚类结果随机产生的情况下,指标应该接近零”,调整兰德系数(Adjusted rand index)被提出,它具有更高的区分度:

ARI=RIE|RI|max(RI)E|RI| A R I = R I − E | R I | m a x ( R I ) − E | R I |

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

实现代码如下:

from sklearn.metrics.cluster import adjusted_rand_score
adjusted_rand_score(labels_true, labels_pred)

若labels_true = [0, 0, 1, 2],labels_pred = [0, 0, 1, 1];v_measure_score = 0.57。

(5)Normalized Mutual Information - 标准互信息NMI、Mutual Information - 互信息MI、Adjusted Mutual Information - 调整互信息MI

利用基于互信息的方法来衡量聚类效果需要实际类别信息,NIM是用熵做分母将MI值调整到0与1之间。NMI与MI取值范围为[0,1],AMI取值范围为[−1,1],值越大意味着聚类结果与真实情况越吻合。

实现代码如下:

from sklearn.metrics.cluster import adjusted_mutual_info_score
adjusted_mutual_info_score(labels_true, labels_pred)

若labels_true = [0, 0, 0, 0],labels_pred = [0, 1, 2, 3];v_measure_score = 0.0。

3 距离/相似度计算

“距离度量” (distance measure) ,则需满足一些基本性质:

dist(xi,xj)0dixi,xj)=0xi=xjdist(xi,xj)=dist(xj,xi)dist(xi,xj)dist(xi,xk)+dist(xk,xj)(3)(4)(5)(6) (3) 非 负 性 : d i s t ( x i , x j ) ≥ 0 (4) 同 一 性 : d i 的 x i , x j ) = 0 当 且 仅 当 x i = x j (5) 对 称 性 : d i s t ( x i , x j ) = d i s t ( x j , x i ) (6) 直 递 性 : d i s t ( x i , x j ) ≤ d i s t ( x i , x k ) + d i s t ( x k , x j )

(1)Euclidean Distance - 欧式距离

以古希腊数学家欧几里得命名的距离;也就是我们直观的两点之间直线最短的直线距离。

d=i=1n(xiyi)2 d = ∑ i = 1 n ( x i − y i ) 2

(2)Manhattan Distance - 曼哈顿距离

是由十九世纪的赫尔曼·闵可夫斯基所创词汇;是种使用在几何度量空间的几何学用语,用以标明两个点在标准坐标系上的绝对轴距总和;也就是和象棋中的“車”一样横平竖直的走过的距离;曼哈顿距离是超凸度量。

d=i=1n|xiyi| d = ∑ i = 1 n | x i − y i |

(3)Minkowski Distance - 闵氏距离

以俄罗斯数学家闵可夫斯基命名的距离;是欧式距离的推广,p=2时等价于欧氏距离,和p-范数等值。

d=i=1n(xiyi)pp d = ∑ i = 1 n ( x i − y i ) p p

(4)Jaccard Coefficient - 杰卡德相似系数

越大越相似;分子是A和B的交集大小,分母是A和B的并集大小。

J(A,B)=|AB||AB| J ( A , B ) = | A ⋂ B | | A ⋃ B |

(5)Cosine Similarity - 余弦相似度
S=xy|x||y| S = x ⋅ y | x | | y |

(6)Pearson Correlation - 皮亚逊相关系数

分子是两个集合的交集大小,分母是两个集合大小的几何平均值。是余弦相似性的一种形式。

r=ni=1(Xix¯¯¯)(yiy¯¯¯)ni=1(Xix¯¯¯)2ni=1(yiy¯¯¯)2 r = ∑ i = 1 n ( X i − x ¯ ) ( y i − y ¯ ) ∑ i = 1 n ( X i − x ¯ ) 2 ∑ i = 1 n ( y i − y ¯ ) 2

(7)Kullback-Leibler Divergence - K-L散度

即相对熵;是衡量两个分布(P、Q)之间的距离;越小越相似。

D(P||Q)=i=1nP(i)logP(i)Q(i) D ( P | | Q ) = ∑ i = 1 n P ( i ) l o g P ( i ) Q ( i )

4 参考

  1. 机器学习升级版视频 - 邹博
  2. 《机器学习 - 周志华》第9章 聚类
  3. 《机器学习实战》第10章 利用K-均值聚类算法对未标注数据分组
  4. 18种和“距离(distance)”、“相似度(similarity)”相关的量的小结

===========文档信息============
学习笔记由博主整理编辑,供非商用学习交流用
如本文涉及侵权,请随时留言博主,必妥善处置
版权声明:非商用自由转载-保持署名-注明出处
署名(BY) :dkjkls(dkj卡洛斯)
文章出处:http://blog.csdn.net/dkjkls

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值