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.

246 lines
7.2 KiB

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