6.7 KiB
聚类模型性能评估指标
聚类的性能度量大致分为两类:一类是将聚类结果与某个参考模型作为参照进行比较,也就是所谓的外部指标;另一类是则是直接度量聚类的性能而不使用参考模型进行比较,也就是内部指标。
##外部指标
外部指标通常使用 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}
$。
##内部指标
内部指标通常使用 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指数越大越好。