聚类模型性能评估指标

聚类的性能度量大致分为两类:一类是将聚类结果与某个参考模型作为参照进行比较,也就是所谓的外部指标;另一类是则是直接度量聚类的性能而不使用参考模型进行比较,也就是内部指标

外部指标

外部指标通常使用 Jaccard Coefficient(JC系数)、Fowlkes and Mallows Index(FM指数)以及 Rand index(Rand指数)。

想要计算上述指标来度量聚类的性能,首先需要计算出aaccddee。假设数据集E={x1,x2,...,xm}E=\{x_1,x_2,...,x_m\}。通过聚类模型给出的簇划分为C={C1,C2,...Ck}C=\{C_1,C_2,...C_k\},参考模型给出的簇划分为D={D1,D2,...Ds}D=\{D_1,D_2,...D_s\}λ\lambdaλ\lambda^*分别表示CCDD对应的簇标记,则有:

a={(xi,xj)λi=λj,λi=λj,i<j} a=|\{(x_i, x_j)|\lambda_i=\lambda_j, \lambda^*_i=\lambda^*_j,i < j\}|

b={(xi,xj)λi=λj,λiλj,i<j} b=|\{(x_i, x_j)|\lambda_i=\lambda_j, \lambda^*_i\neq\lambda^*_j, i < j\}|

c={(xi,xj)λiλj,λi=λj,i<j} c=|\{(x_i, x_j)|\lambda_i\neq\lambda_j, \lambda^*_i=\lambda^*_j, i < j\}|

d={(xi,xj)λiλj,λiλj,i<j} d=|\{(x_i, x_j)|\lambda_i\neq\lambda_j, \lambda^*_i\neq\lambda^*_j, i < j\}|

举个例子,参考模型给出的簇与聚类模型给出的簇划分如下:

编号 参考簇 聚类簇
1 0 0
2 0 0
3 0 1
4 1 1
5 1 2
6 1 2

那么满足aa的样本对为(1,2)(1, 2)(因为11号样本与22号样本的参考簇都为00,聚类簇都为00),(5,6)(5, 6)(因为55号样本与66号样本的参考簇都为11,聚类簇都为22)。总共有22个样本对满足aa,因此a=2a=2

满足bb的样本对为(3,4)(3, 4)(因为33号样本与44号样本的参考簇不同,但聚类簇都为11)。总共有11个样本对满足bb,因此b=1b=1

那么满足cc的样本对为(1,3)(1, 3)(因为11号样本与33号样本的聚类簇不同,但参考簇都为00),(2,3)(2, 3)(因为22号样本与33号样本的聚类簇不同,但参考簇都为00),(4,5)(4, 5)(因为44号样本与55号样本的聚类簇不同,但参考簇都为11),(4,6)(4, 6)(因为44号样本与66号样本的聚类簇不同,但参考簇都为11)。总共有44个样本对满足cc,因此c=4c=4

满足dd的样本对为(1,4)(1, 4)(因为11号样本与44号样本的参考簇不同,聚类簇也不同),(1,5)(1, 5)(因为11号样本与55号样本的参考簇不同,聚类簇也不同),(1,6)(1, 6)(因为11号样本与66号样本的参考簇不同,聚类簇也不同),(2,4)(2, 4)(因为22号样本与44号样本的参考簇不同,聚类簇也不同),(2,5)(2, 5)(因为22号样本与55号样本的参考簇不同,聚类簇也不同),(2,6)(2, 6)(因为22号样本与66号样本的参考簇不同,聚类簇也不同),(3,5)(3, 5)(因为33号样本与55号样本的参考簇不同,聚类簇也不同),(3,6)(3, 6)(因为33号样本与66号样本的参考簇不同,聚类簇也不同)。总共有88个样本对满足dd,因此d=8d=8

JC系数

JC系数根据上面所提到的aabbcc来计算,并且值域为[0,1][0, 1],值越大说明聚类性能越好,公式如下:

JC=aa+b+c JC=\frac{a}{a+b+c}

因此刚刚的例子中,JC=22+1+4=27JC=\frac{2}{2+1+4}=\frac{2}{7}

FM指数

FM指数根据上面所提到的aabbcc来计算,并且值域为[0,1][0, 1],值越大说明聚类性能越好,公式如下:

FMI=aa+baa+c FMI=\sqrt{\frac{a}{a+b}*\frac{a}{a+c}}

因此刚刚的例子中,FMI=22+122+4=418FMI=\sqrt{\frac{2}{2+1}*\frac{2}{2+4}}=\sqrt{\frac{4}{18}}

Rand指数

Rand指数根据上面所提到的aadd来计算,并且值域为[0,1][0, 1],值越大说明聚类性能越好,假设mm为样本数量,公式如下:

RandI=2(a+d)m(m1) RandI=\frac{2(a+d)}{m(m-1)}

因此刚刚的例子中,RandI=2(2+8)6(61)=23RandI=\frac{2*(2+8)}{6*(6-1)}=\frac{2}{3}

内部指标

内部指标通常使用 Davies-Bouldin Index (DB指数)以及 Dunn Index(Dunn指数)。

DB指数

DB指数又称 DBI ,计算公式如下:

DBI=1ki=1kmax(avg(Ci)+avg(Cj)dc(μi,μj)),ij DBI=\frac{1}{k}\sum_{i=1}^kmax(\frac{avg(C_i)+avg(C_j)}{d_c(\mu_i,\mu_j)}), i \neq j

公式中的表达式其实很好理解,其中kk代表聚类有多少个簇,μi\mu_i代表第ii个簇的中心点,avg(Ci)avg(C_i)代表CiC_iii个簇中所有数据与第ii个簇的中心点的平均距离。dc(μi,μj)d_c(\mu_i, \mu_j)代表第ii个簇的中心点与第jj个簇的中心点的距离。

举个例子,现在有66条西瓜数据{x1,x2,...,x6}\{x_1,x_2,...,x_6\},这些数据已经聚类成了22个簇。

编号 体积 重量
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 k=2

μ1=((3+2+3)3,(4+3+4)3)=(2.67,3.67) \mu_1=(\frac{(3+2+3)}{3}, \frac{(4+3+4)}{3})=(2.67,3.67)

μ2=((6+7+8)3,(9+10+11)3)=(7,10) \mu_2=(\frac{(6+7+8)}{3}, \frac{(9+10+11)}{3})=(7,10)

dc(μ1,μ2)=(2.677)2+(3.6710)2=7.67391 d_c(\mu_1, \mu_2)=\sqrt{(2.67-7)^2+(3.67-10)^2}=7.67391

avg(C1)=((32.67)2+(43.67)2+(22.67)2+(33.67)2+(32.67)2+(43.67)2)/3=0.628539 avg(C_1)=(\sqrt{(3-2.67)^2+(4-3.67)^2}+\sqrt{(2-2.67)^2+(3-3.67)^2}+\sqrt{(3-2.67)^2+(4-3.67)^2})/3=0.628539

avg(C2)=((67)2+(910)2+(77)2+(1010)2+(87)2+(1110)2)/3=0.94281 avg(C_2)=(\sqrt{(6-7)^2+(9-10)^2}+\sqrt{(7-7)^2+(10-10)^2}+\sqrt{(8-7)^2+(11-10)^2})/3=0.94281

因此有:

DBI=1ki=1kmax(avg(Ci)+avg(Cj)dc(μi,μj))=0.204765 DBI=\frac{1}{k}\sum_{i=1}^kmax(\frac{avg(C_i)+avg(C_j)}{d_c(\mu_i,\mu_j)})=0.204765

DB指数越小就越就意味着簇内距离越小同时簇间距离越大,也就是说DB指数越小越好。

Dunn指数

Dunn指数又称DI,计算公式如下:

DI=min1ik{minij(dmin(Ci,Cj)max1lkdiam(Cl))} DI=min_{1\leq i\leq k}\{min_{i\neq j}(\frac{d_min(C_i,C_j)}{max_{1\leq l\leq k}diam(C_l)})\}

公式中的表达式其实很好理解,其中kk代表聚类有多少个簇,dmin(Ci,Cj)d_{min}(C_i,C_j)代表第ii个簇中的样本与第jj个簇中的样本之间的最短距离,diam(Cl)diam(C_l)代表第ll个簇中相距最远的样本之间的距离。

还是这个例子,现在有 6 条西瓜数据{x1,x2,...,x6}\{x_1,x_2,...,x_6\},这些数据已经聚类成了 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 k=2

dmin(C1,C2)=(36)2+(49)2=5.831 d_{min}(C_1,C_2)=\sqrt{(3-6)^2+(4-9)^2}=5.831

diam(C1)=(32)2+(42)2=1.414 diam(C_1)=\sqrt{(3-2)^2+(4-2)^2}=1.414

diam(C2)=(68)2+(911)2=2.828 diam(C_2)=\sqrt{(6-8)^2+(9-11)^2}=2.828

因此有:

DI=min1ik{minij(dmin(Ci,Cj)max1lkdiam(Cl))}=2.061553 DI=min_{1\leq i\leq k}\{min_{i\neq j}(\frac{d_min(C_i,C_j)}{max_{1\leq l\leq k}diam(C_l)})\}=2.061553

Dunn指数越大意味着簇内距离越小同时簇间距离越大,也就是说Dunn指数越大越好。

results matching ""

    No results matching ""