You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

6.7 KiB

聚类模型性能评估指标

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

##外部指标

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

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


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

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

c=|\{(x_i, x_j)|\lambda_i\neq\lambda_j, \lambda^*_i=\lambda^*_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

那么满足$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系数根据上面所提到的$abc来计算,并且值域为[0, 1]$,值越大说明聚类性能越好,公式如下:


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

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

###FM指数

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


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

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

###Rand指数

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


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

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

##内部指标

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

#####DB指数

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


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

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

举个例子,现在有$6条西瓜数据\{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

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

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

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

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(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=\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=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)})\}

公式中的表达式其实很好理解,其中$k代表聚类有多少个簇,d_{min}(C_i,C_j)代表第i个簇中的样本与第j个簇中的样本之间的最短距离,diam(C_l)代表第l$个簇中相距最远的样本之间的距离。

还是这个例子,现在有 6 条西瓜数据{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

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

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

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

因此有:


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指数越大越好。