聚类模型的性能度量
聚类是一种相对特殊的机器学习任务类型 我们也需要给出一些略显不同的有效性指标(validity index)
聚类的目标是什么? 直观上看,我们希望 “物以类聚”,即同一簇的样本尽可能彼此相似,不同簇的样本尽可能不同.换言之,聚类结果的“簇内相似度”(intra-cluster similarity)高 且 “簇间相似度”(inter-cluster similarity)低.
聚类算法本身的介绍见机器学习进阶与无监督学习:谱聚类与图聚类。
外部指标
顾名思义,外部验证度量假设事先知道准确的或真实的聚类。真实的分簇标签(即外部信息)用于评估一个给定的聚类。通常我们是不知道准确的聚类的;但外部度量可以用于测试和验证不同的聚类方法。
所有外部度量都需要一个 r×k 的列联表N,该表是根据某个聚类C和真实值分划T生成的,定义如下:
N(i,j)=nij=∣Ci∩Tj∣
换句话说,计数值nij代表分簇Ci和真实值划分Tj所共有的点的数目。
此外,为明确起见, 令ni=∣Ci∣代表分簇Ci中点的数目,mj=∣Tj∣代表划分Tj中点的数目。列联表可以从T 和C在O(n)时间内计算出来.
基于匹配的度量
纯度
纯度(purity)量化了一个分簇Ci中只包含一个划分的实体的程度。换句话说,它度量了每个分簇有多“纯净”。分簇Ci的纯度定义为:
purityi=ni1j=1maxk{nij}
聚类C的纯度定义为所有分簇纯度的带权和:
purity=i=1∑rnnipurityi=n1i=1∑rj=1maxk{nij}
其中比例nni表示分簇Ci中的点所占的比例。
C的纯度越大,说明它与真实值的吻合度越高。纯度的最大值为 1,指每个簇都是仅由一个划分中的点构成的。若
r=k,则纯度值为1表示一个完美聚类,即分簇与划分一一对应。不过,即使
r>k,纯度也可能为 1(当每个分簇都是一个标准划分的子集时)。若
r<k,则纯度不可能为 1,因为至少有一个分簇包含来自多于一个分划的点。
最大匹配
最大匹配(maximum matching)度量选择分簇和划分之间的某个映射, 使得公共点的数目之和最大化(假设给定一个划分,只有一个分簇可以与之匹配)。这与纯度的情况不同。
形式层面来讲,我们将列联表看作一个完全带权二部图G=(V,E),其中每个划分和每个分簇都是一个节点,即V=C∪T,且存在一条边 (Ci,Tj)∈E,以及权值 w(Ci,Tj)=nij, 对于所有Ci∈C和Tj∈T。
图中的一个匹配(matching)M是E的一个子集,使得M中的边两两不相邻(即没有共同的顶点)。最大匹配度量定义为G中的最大权匹配:
match=argMmax{nw(M)}
其中一个匹配M的权值为M中所有边的权值之和,即w(M)=∑e∈Mw(e)
F Measure
给定分簇Ci,令ji代表包含Ci中最多点的划分,即ji=maxj=1k{nij}。一个分簇Ci的精度(precision)与其纯度相同:
preci=ni1j=1maxk{nij}=niniji
分簇Ci的召回(recall)定义为:
recalli=∣Tji∣niji=mjiniji
其中mji=∣Tji∣。它衡量了划分Tji与分簇Ci共同拥有的点的比例。
F-measure 是每一个分簇的精度值和召回值的调和平均数。分簇Ci的 F-measure 为:
Fi=preci1+recalli12=preci+recalli2⋅preci⋅recalli=ni+mji2niji
聚类C的 F-measure 为各分簇的 F-measure 的均值:
F=r1i=1∑rFi
他希望在精度和召回之间取得平衡
基于熵的度量
条件熵
一个聚类C的熵定义为:
H(C)=−i=1∑rpCilogpCi
其中pCi=nni是分簇Ci的概率。
同样,分划T的熵定义为:
H(T)=−j=1∑kpTjlogpTj其中
pTj=nmj是划分
Tj的概率。
T的分簇熵,即
T关于分簇
Ci的相对熵,定义为:
H(T∣Ci)=−j=1∑k(ninij)log(ninij)
给定聚类C 分划T 的条件熵定义为
H(T∣C)=i=1∑rnniH(T∣Ci)=−i=1∑rj=1∑knnijlog(ninij)=−i=1∑rj=1∑kpijlog(pCipij)
其中pij=nnij是分簇i中的一个点同时也属于划分j的概率。
一个分簇中的点越是分散到不同的划分中,条件熵就越大。对于一个完美聚类,条件熵的值为 0,而在最坏情况下条件熵的值为logk。
归一化互信息
互信息(mutual information)研究聚类C和分划T之间共享的信息量,定义为:
I(C,T)=i=1∑rj=1∑kpijlog(pCi⋅pTjpij)
互信息度量了C和T的联合概率pij和期望联合概率pCi⋅pTj (在独立假设下)之间的相关性。
若C和T是彼此独立的,则pij=pCi⋅pTi,因此I(C,T)=0。不过,互信息没有上界。
展开互信息我们可以得到
I(C,T)=H(T)−H(T∣C)I(C)
据此我们可以给出归一化互信息(NMI)
NMI(C,T)=H(C)I(C,T)⋅H(T)I(C,T)=H(C)⋅H(T)I(C,T)
他的取值范围在 [0,1] 之间 接近1意味着好的聚类
信息差异
这一指标是基于聚类C和真实值分划T的互信息及它们的熵,定义如下:
VI(C,T)=(H(T)−I(C,T)+(H(C)−I(C,T))=H(T)+H(C)−2I(C,T)
信息差异(VI)值为0,当且仅当C与T相同。因此,VI 值越小,聚类C就越好。
成对度量
对数据集 D={x1,x2,…,xm}, 假定通过聚类给出的簇划分为 C={C1, C2,…,Ck}, 参考模型给出的簇划分为C∗={C1∗,C2∗,…,Cs∗}.相应地,令λ 与λ∗ 分别表示与C 和C∗ 对应的簇标记向量. 我们将样本两两配对考虑,定义
a=∣SS∣,SS={(xi,xj)∣λi=λj,λi∗=λj∗,i<j)},b=∣SD∣,SD={(xi,xj)∣λi=λj,λi∗=λj∗,i<j)},c=∣DS∣,DS={(xi,xj)∣λi=λj,λi∗=λj∗,i<j)},d=∣DD∣, DD={(xi,xj)∣λi=λj,λi∗=λj∗,i<j)},
其中 SS 表示两模型都在相同簇中的样本对 SD表示前者相同簇 后者不同簇的样本 ,DS与DD也同理解释。
据此 我们可以定义
Jaccard
Jaccard 系数(Jaccard Coefficient,简称 JC)
JC=a+b+ca.
完美划分的Jaccard 系数为1
Rand 指数
Rand 指数(Rand Index,简称 RI)
RI=m(m−1)2(a+d).
其中m是总点数,完美划分Rand 指数为1
FM 指数
FM 指数(Fowlkes and Mallows Index,简称 FMI)
FMI=a+ba⋅a+ca.
完美划分FM 指数为1
关联度量
Hubert 统计量的定义
令X和Y为两个对称n×n矩阵,且N=(2n)。令x,y∈RN分别代表对X和 Y 的上三角元素(不包括主对角线元素)通过线性化得到的向量。令μX代表x的逐元素均值, 定义为:
μX=N1i=1∑n−1j=i+1∑nX(i,j)=N1xTx
令zx代表居中的x向量,定义为:
zx=x−1⋅μX
其中1∈RN是全 1 向量。同样,令μY代表y的逐元素均值,zy为居中的y向量。
Hubert 统计量定义为X和Y的平均逐元素乘积:
Γ=N1i=1∑n−1j=i+1∑nX(i,j)⋅Y(i,j)=N1xTy
归一化 Hubert 统计量定义为X和Y的逐元素相关度:
Γn=∑i=1n−1∑j=i+1n(X(i,j)−μX)2∑i=1n−1∑j=i+1n(Y[i]−μY)2∑i=1n−1∑j=i+1n(X(i,j)−μX)(Y(i,j)−μY)=σX2σY2σXY
离散 Hubert 统计量
令T和C为n×n的矩阵,定义如下:
T(i,j)={10yi=yj,i=j其他情况C(i,j)={10y^i=y^j,i=j其他情况
同时,令t,c∈RN分别表示由T和C的上三角元素(不包括对角线元素)构成的N维向量,其中N=(2n)代表不同的点对的数目。最后,令zt和zc代表居中的t向量和c向量。
离散 Hubert 统计量可以利用公式 (17.14)(令x=t,y=c)计算得到:
Γ=N1tTc=NTP
归一化离散 Hubert 统计量
离散 Hubert 统计量的归一化版本即t和c之间的相关度
Γn=∥zt∥∥zc∥ztTzc=cosθ
注意μT=N1tTt是属于同一划分(yi=yj)的点对的比例,不论y^i与y^j是否匹配。因此,可得:
μT=NtTt=NTP+FN
内部指标
非常明显的 外部指标在大多数情况下都没有价值 因为我们没有参考模型可以使用 除非我们是已知真实分类,只是想研究一下聚类算法的性能。内部指标往往依赖于样本间的距离与近似度,因此和机器学习进阶与无监督学习:谱聚类与图聚类联系密切 其中的归一割与模块度可以直接用于性能度量。
考虑样本之间的距离给出下面的定义
avg(C)diam(C)dmin(Ci,Cj)dcen(Ci,Cj)=∣C∣(∣C∣−1)21⩽i<j⩽∣C∣∑dist(xi,xj),=1⩽i<j⩽∣C∣maxdist(xi,xj),=xi∈Ci,xj∈Cjmindist(xi,xj),=dist(μi,μj),
四种样本间距离 如下 分别是 簇内样本间中心距离 簇内样本间最远距离 簇间最近距离 簇间中心距离
DB 指数
DB 指数(Davies-Bouldin Index,简称 DBI)
DBI=k1i=1∑kj=imax(dcen(μi,μj)avg(Ci)+avg(Cj))
DBI 的值越小越好
Dunn 指数
Dunn 指数(Dunn Index,简称 DI)
DI=1⩽i⩽kmin{j=imin(max1⩽l⩽kdiam(Cl)dmin(Ci,Cj))}.
而DI值越大越好.
BetaCV
BetaCV 度量是簇内距离均值与簇间距离均值的比值:
BetaCV=davgavg(C)
BetaCV 值越小,聚类的效果就越好,因为它表示簇内距离平均要小于簇间距离。
相对度量
相对度量比较同一个聚类算法的不同参数的聚类性能
Calinski-Harabasz(CH)
给定数据集D={xi}i=1n,D的散度矩阵(scatter matrix)为:
S=nΣ=j=1∑n(xj−μ)(xj−μ)T
其中μ=n1∑j=1nxj是均值,Σ是协方差矩阵。散度矩阵可以分解为两个矩阵S=SW+SB,其中SW是簇内散度矩阵,SB是簇间散度矩阵,分别表示为:
SW=i=1∑kxj∈Ci∑(xj−μi)(xj−μi)TSB=i=1∑kni(μi−μ)(μi−μ)T
其中μi=ni1∑xj∈Cixj是分簇Ci的均值。
对于一个给定的k值,Calinski-Harabasz(CH)方差比定义为:
CH(k)=tr(SW)/(n−k)tr(SB)/(k−1)=k−1n−k⋅tr(SW)tr(SB)
其中 tr(SW)和 tr(SB)是簇内散度矩阵和簇间散度矩阵的迹(即对角线元素之和)。
对于一个较好的k值,可以预测簇内的散度要相对小于簇间的散度,因此会得到一个较高的 CH(k) 值。另一方面,我们不想要一个很大的k值;
因此可以将 CH 值作图,并找到一个较大的增长处 (且其后没有或只有很小的增长)。
分簇稳定性
分簇稳定性背后的主要思想是:从与D相同的分布抽样得到的数据集生成的聚类应当是相似或“稳定”的。
分簇稳定性的方法可用于找出一个给定的聚类算法的合适参数值; 本书主要考虑合适的k值,即分簇的正确数目。
D的联合概率分布通常是未知的。因此,为以相同的分布抽样数据集,我们可以使用一系列方法,包括随机扰动(random perturbation)、子抽样(subsampling)或自助抽样(bootstrap resampling)。我们先考虑自助法(bootstrapping):
通过从D抽样(带放回,即允许同一个数据点被选择多次,每个样本Di因此是不同的)生成t个大小为n的样本。接下来,对每一个样本Di,分别用不同的k 值 ( 从 2 到 kmax)运行相同的聚类算法。
令Ck(Di)表示给定k时从样本Di获得的聚类。接下来,该方法用某个聚类函数比较所有聚类对Ck(Di)和Ck(Dj)之间的距离。某些外部聚类评估度量可以用作距离度量,例如,令C=Ck(Di),T=Ck(Dj),反之亦然。根据这些值,我们计算每个k值的期望成对距离。最后,使得从再抽样数据集获得的不同聚类的偏差最小的值k∗是k的最佳选择,因为它对应的稳定性最高。
聚类趋向性
聚类趋向性或可聚类性(clusterability)旨在判断数据集D是否存在有意义的分组。这样做通常很难,因为首先很难定义什么是一个分簇,例如分区的、层次式的、基于密度的、 基于图的,等等。
即便确定了分簇的类型,对于一个给定的数据集D,依然很难定义一个合适的零模型(null model,即没有任何聚类结构的模型)。此外,即便判定数据是可聚类的,我们依然要面临判断分簇数目的问题。
Hopkins 统计量是一种对空间随机性的稀疏抽样检验。给定一个包含n个点的数据集D,我们生成t个随机子样本Ri (每个子样本包含m个点,其中m≪n)。这些样本的数据空间与D相同,在每个维度上随机均匀地生成。
此外,我们还直接从D中生成t个子样本(每个含m个点),使用无放回的抽样。令Di代表第i个直接子样本。接下来,计算每个xj∈Di和D中每个点之间的最小距离:
δmin(xj)=xi∈D,xi=xjmin{δ(xj,xi)}
第i对样本Ri和Di Hopkins 统计量(在d个维度上)定义:
HSi=∑yj∈Ri(δmin(yj))d+∑xj∈Di(δmin(xj))d∑yj∈Ri(δmin(yj))d
这一统计量将随机生成的数据点的最近邻分布和D中数据点的随机子集的最近邻分布进行比较。若数据具有良好的聚类性,我们期望\delta_\min(x_j)要小于\delta_\min(y_j)\text{,且在这种情况下,HS}_i 趋向于 1。
若两个最近邻距离相似,则 HSi取值接近于 0.5,这意味着数据近乎随机且没有明显的聚类性。
最后,若\delta_\min(x_j)的值要大于\delta_\min(y_j),则 HSi倾向于 0,这意味着点排斥, 且无聚类。
根据t个不同的 HSi值,可以通过计算该统计量的均值和方差来判断D是否可聚类。