# 3.3 聚类模型性能评估指标 聚类的性能度量大致分为两类:一类是将聚类结果与某个参考模型作为参照进行比较,也就是所谓的**外部指标**;另一类是则是直接度量聚类的性能而不使用参考模型进行比较,也就是**内部指标**。 ## 3.3.1 外部指标 **外部指标通常使用 Jaccard Coefficient(JC系数)、Fowlkes and Mallows Index(FM指数)以及 Rand index(Rand指数)。** 想要计算上述指标来度量聚类的性能,首先需要计算出$$a$$,$$c$$,$$d$$,$$e$$。假设数据集$$E=\{x_1,x_2,...,x_m\}$$。通过聚类模型给出的簇划分为$$C=\{C_1,C_2,...C_k\}$$,参考模型给出的簇划分为$$D=\{D_1,D_2,...D_s\}$$。$$\lambda$$与$$\lambda^*$$分别表示$$C$$与$$D$$对应的簇标记,则有:
$$ 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系数**根据上面所提到的$$a$$,$$b$$,$$c$$来计算,并且值域为$$[0, 1]$$,值越大说明聚类性能越好,公式如下:
$$ JC=\frac{a}{a+b+c} $$

因此刚刚的例子中,$$JC=\frac{2}{2+1+4}=\frac{2}{7}$$ ###FM指数 **FM指数**根据上面所提到的$$a$$,$$b$$,$$c$$来计算,并且值域为$$[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指数**根据上面所提到的$$a$$和$$d$$来计算,并且值域为$$[0, 1]$$,值越大说明聚类性能越好,假设$$m$$为样本数量,公式如下:
$$ RandI=\frac{2(a+d)}{m(m-1)} $$

因此刚刚的例子中,$$RandI=\frac{2*(2+8)}{6*(6-1)}=\frac{2}{3}$$。 ## 3.3.2 内部指标 **内部指标通常使用 Davies-Bouldin Index (DB指数)以及 Dunn Index(Dunn指数)。** #####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_i$$第$$i$$个簇中所有数据与第$$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指数越大越好。**