聚类模型性能评估指标
聚类的性能度量大致分为两类:一类是将聚类结果与某个参考模型作为参照进行比较,也就是所谓的外部指标;另一类是则是直接度量聚类的性能而不使用参考模型进行比较,也就是内部指标。
外部指标
外部指标通常使用 Jaccard Coefficient(JC系数)、Fowlkes and Mallows Index(FM指数)以及 Rand index(Rand指数)。
想要计算上述指标来度量聚类的性能,首先需要计算出a,c,d,e。假设数据集E={x1,x2,...,xm}。通过聚类模型给出的簇划分为C={C1,C2,...Ck},参考模型给出的簇划分为D={D1,D2,...Ds}。λ与λ∗分别表示C与D对应的簇标记,则有:
a=∣{(xi,xj)∣λi=λj,λi∗=λj∗,i<j}∣
b=∣{(xi,xj)∣λi=λj,λi∗≠λj∗,i<j}∣
c=∣{(xi,xj)∣λi≠λj,λi∗=λj∗,i<j}∣
d=∣{(xi,xj)∣λi≠λj,λi∗≠λj∗,i<j}∣
举个例子,参考模型给出的簇与聚类模型给出的簇划分如下:
编号 |
参考簇 |
聚类簇 |
1 |
0 |
0 |
2 |
0 |
0 |
3 |
0 |
1 |
4 |
1 |
1 |
5 |
1 |
2 |
6 |
1 |
2 |
那么满足a的样本对为(1,2)(因为1号样本与2号样本的参考簇都为0,聚类簇都为0),(5,6)(因为5号样本与6号样本的参考簇都为1,聚类簇都为2)。总共有2个样本对满足a,因此a=2。
满足b的样本对为(3,4)(因为3号样本与4号样本的参考簇不同,但聚类簇都为1)。总共有1个样本对满足b,因此b=1。
那么满足c的样本对为(1,3)(因为1号样本与3号样本的聚类簇不同,但参考簇都为0),(2,3)(因为2号样本与3号样本的聚类簇不同,但参考簇都为0),(4,5)(因为4号样本与5号样本的聚类簇不同,但参考簇都为1),(4,6)(因为4号样本与6号样本的聚类簇不同,但参考簇都为1)。总共有4个样本对满足c,因此c=4。
满足d的样本对为(1,4)(因为1号样本与4号样本的参考簇不同,聚类簇也不同),(1,5)(因为1号样本与5号样本的参考簇不同,聚类簇也不同),(1,6)(因为1号样本与6号样本的参考簇不同,聚类簇也不同),(2,4)(因为2号样本与4号样本的参考簇不同,聚类簇也不同),(2,5)(因为2号样本与5号样本的参考簇不同,聚类簇也不同),(2,6)(因为2号样本与6号样本的参考簇不同,聚类簇也不同),(3,5)(因为3号样本与5号样本的参考簇不同,聚类簇也不同),(3,6)(因为3号样本与6号样本的参考簇不同,聚类簇也不同)。总共有8个样本对满足d,因此d=8。
JC系数
JC系数根据上面所提到的a,b,c来计算,并且值域为[0,1],值越大说明聚类性能越好,公式如下:
JC=a+b+ca
因此刚刚的例子中,JC=2+1+42=72
FM指数
FM指数根据上面所提到的a,b,c来计算,并且值域为[0,1],值越大说明聚类性能越好,公式如下:
FMI=√a+ba∗a+ca
因此刚刚的例子中,FMI=√2+12∗2+42=√184
Rand指数
Rand指数根据上面所提到的a和d来计算,并且值域为[0,1],值越大说明聚类性能越好,假设m为样本数量,公式如下:
RandI=m(m−1)2(a+d)
因此刚刚的例子中,RandI=6∗(6−1)2∗(2+8)=32。
内部指标
内部指标通常使用 Davies-Bouldin Index (DB指数)以及 Dunn Index(Dunn指数)。
DB指数
DB指数又称 DBI ,计算公式如下:
DBI=k1∑i=1kmax(dc(μi,μj)avg(Ci)+avg(Cj)),i≠j
公式中的表达式其实很好理解,其中k代表聚类有多少个簇,μi代表第i个簇的中心点,avg(Ci)代表Ci第i个簇中所有数据与第i个簇的中心点的平均距离。dc(μi,μj)代表第i个簇的中心点与第j个簇的中心点的距离。
举个例子,现在有6条西瓜数据{x1,x2,...,x6},这些数据已经聚类成了2个簇。
编号 |
体积 |
重量 |
簇 |
1 |
3 |
4 |
1 |
2 |
6 |
9 |
2 |
3 |
2 |
3 |
1 |
4 |
3 |
4 |
1 |
5 |
7 |
10 |
2 |
6 |
8 |
11 |
2 |
从表格可以看出:
k=2
μ1=(3(3+2+3),3(4+3+4))=(2.67,3.67)
μ2=(3(6+7+8),3(9+10+11))=(7,10)
dc(μ1,μ2)=√(2.67−7)2+(3.67−10)2=7.67391
avg(C1)=(√(3−2.67)2+(4−3.67)2+√(2−2.67)2+(3−3.67)2+√(3−2.67)2+(4−3.67)2)/3=0.628539
avg(C2)=(√(6−7)2+(9−10)2+√(7−7)2+(10−10)2+√(8−7)2+(11−10)2)/3=0.94281
因此有:
DBI=k1∑i=1kmax(dc(μi,μj)avg(Ci)+avg(Cj))=0.204765
DB指数越小就越就意味着簇内距离越小同时簇间距离越大,也就是说DB指数越小越好。
Dunn指数
Dunn指数又称DI,计算公式如下:
DI=min1≤i≤k{mini≠j(max1≤l≤kdiam(Cl)dmin(Ci,Cj))}
公式中的表达式其实很好理解,其中k代表聚类有多少个簇,dmin(Ci,Cj)代表第i个簇中的样本与第j个簇中的样本之间的最短距离,diam(Cl)代表第l个簇中相距最远的样本之间的距离。
还是这个例子,现在有 6 条西瓜数据{x1,x2,...,x6},这些数据已经聚类成了 2 个簇。
编号 |
体积 |
重量 |
簇 |
1 |
3 |
4 |
1 |
2 |
6 |
9 |
2 |
3 |
2 |
3 |
1 |
4 |
3 |
4 |
1 |
5 |
7 |
10 |
2 |
6 |
8 |
11 |
2 |
从表格可以看出:
k=2
dmin(C1,C2)=√(3−6)2+(4−9)2=5.831
diam(C1)=√(3−2)2+(4−2)2=1.414
diam(C2)=√(6−8)2+(9−11)2=2.828
因此有:
DI=min1≤i≤k{mini≠j(max1≤l≤kdiam(Cl)dmin(Ci,Cj))}=2.061553
Dunn指数越大意味着簇内距离越小同时簇间距离越大,也就是说Dunn指数越大越好。