|
|
|
|
# 聚类模型性能评估指标
|
|
|
|
|
|
|
|
|
|
聚类的性能度量大致分为两类:一类是将聚类结果与某个参考模型作为参照进行比较,也就是所谓的**外部指标**;另一类是则是直接度量聚类的性能而不使用参考模型进行比较,也就是**内部指标**。
|
|
|
|
|
|
|
|
|
|
##外部指标
|
|
|
|
|
|
|
|
|
|
**外部指标通常使用 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$$对应的簇标记,则有:
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
a=|\{(x_i, x_j)|\lambda_i=\lambda_j, \lambda^*_i=\lambda^*_j,i < j\}|
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
b=|\{(x_i, x_j)|\lambda_i=\lambda_j, \lambda^*_i\neq\lambda^*_j, i < j\}|
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
c=|\{(x_i, x_j)|\lambda_i\neq\lambda_j, \lambda^*_i=\lambda^*_j, i < j\}|
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
d=|\{(x_i, x_j)|\lambda_i\neq\lambda_j, \lambda^*_i\neq\lambda^*_j, i < j\}|
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
举个例子,参考模型给出的簇与聚类模型给出的簇划分如下:
|
|
|
|
|
|
|
|
|
|
| 编号 | 参考簇 | 聚类簇 |
|
|
|
|
|
| ------------ | ------------ | ------------ |
|
|
|
|
|
| 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]$$,值越大说明聚类性能越好,公式如下:
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
JC=\frac{a}{a+b+c}
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
因此刚刚的例子中,$$JC=\frac{2}{2+1+4}=\frac{2}{7}$$
|
|
|
|
|
|
|
|
|
|
###FM指数
|
|
|
|
|
|
|
|
|
|
**FM指数**根据上面所提到的$$a$$,$$b$$,$$c$$来计算,并且值域为$$[0, 1]$$,值越大说明聚类性能越好,公式如下:
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
FMI=\sqrt{\frac{a}{a+b}*\frac{a}{a+c}}
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
因此刚刚的例子中,$$FMI=\sqrt{\frac{2}{2+1}*\frac{2}{2+4}}=\sqrt{\frac{4}{18}}$$
|
|
|
|
|
|
|
|
|
|
###Rand指数
|
|
|
|
|
|
|
|
|
|
**Rand指数**根据上面所提到的$$a$$和$$d$$来计算,并且值域为$$[0, 1]$$,值越大说明聚类性能越好,假设$$m$$为样本数量,公式如下:
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
RandI=\frac{2(a+d)}{m(m-1)}
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
因此刚刚的例子中,$$RandI=\frac{2*(2+8)}{6*(6-1)}=\frac{2}{3}$$。
|
|
|
|
|
|
|
|
|
|
##内部指标
|
|
|
|
|
|
|
|
|
|
**内部指标通常使用 Davies-Bouldin Index (DB指数)以及 Dunn Index(Dunn指数)。**
|
|
|
|
|
|
|
|
|
|
#####DB指数
|
|
|
|
|
|
|
|
|
|
**DB指数**又称 DBI ,计算公式如下:
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
DBI=\frac{1}{k}\sum_{i=1}^kmax(\frac{avg(C_i)+avg(C_j)}{d_c(\mu_i,\mu_j)}), i \neq j
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
公式中的表达式其实很好理解,其中$$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 |
|
|
|
|
|
|
|
|
|
|
从表格可以看出:
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
k=2
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
\mu_1=(\frac{(3+2+3)}{3}, \frac{(4+3+4)}{3})=(2.67,3.67)
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
\mu_2=(\frac{(6+7+8)}{3}, \frac{(9+10+11)}{3})=(7,10)
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
d_c(\mu_1, \mu_2)=\sqrt{(2.67-7)^2+(3.67-10)^2}=7.67391
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
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
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
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
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
因此有:
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
DBI=\frac{1}{k}\sum_{i=1}^kmax(\frac{avg(C_i)+avg(C_j)}{d_c(\mu_i,\mu_j)})=0.204765
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
**DB指数越小就越就意味着簇内距离越小同时簇间距离越大,也就是说DB指数越小越好。**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
###Dunn指数
|
|
|
|
|
|
|
|
|
|
**Dunn指数**又称DI,计算公式如下:
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
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)})\}
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
公式中的表达式其实很好理解,其中$$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 |
|
|
|
|
|
|
|
|
|
|
从表格可以看出:
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
k=2
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
d_{min}(C_1,C_2)=\sqrt{(3-6)^2+(4-9)^2}=5.831
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
diam(C_1)=\sqrt{(3-2)^2+(4-2)^2}=1.414
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
diam(C_2)=\sqrt{(6-8)^2+(9-11)^2}=2.828
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
因此有:
|
|
|
|
|
|
|
|
|
|
<center>
|
|
|
|
|
$$
|
|
|
|
|
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
|
|
|
|
|
$$
|
|
|
|
|
</center>
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
**Dunn指数越大意味着簇内距离越小同时簇间距离越大,也就是说Dunn指数越大越好。**
|