最近在做一个时空序列聚类的小项目,度量聚类优劣的指标使用到了DBI指数,所以开始学习了一下DBI指数,以下是我的理解和基于python3的实现:
戴维森堡丁指数(DBI),又称为分类适确性指标,是由大卫L·戴维斯和唐纳德·Bouldin提出的一种评估聚类算法优劣的指标。首先假设我们有m个时间序列,这些时间序列聚类为n个簇。m个时间序列设为输入矩阵X,n个簇类设为N作为参数传入算法。使用下列公式进行计算:
这个公式的含义是度量每个簇类最大相似度的均值。
接下来是算法的具体计算步骤:
1、计算Si
DBI计算公式中首先定义了Si变量,Si计算的是类内数据到簇质心的平均距离,代表了簇类i中各时间序列的分散程度,计算公式为:其中Xj代表簇类i中第j个数据点,也就是一个时间序列,Ai是簇类i的质心,Ti是簇类i中数据的个数,p在通常情况下取2,这样就可以计算独立的数据点和质心的欧式距离(euclidean metric),当然在考察流型和高维数据的时候,欧氏距离也许不是最佳的距离计算方式,但也是比较典型的了。
2、计算Mij
分子之和计算完后,需计算分母Mij,定义为簇类i与簇类j的距离,计算公式为:
ak,i代表簇类i质心点的第k个值,Mij就是簇类i与簇类j质心的距离。
3、计算Rij
计算了分子与分母后,DBI定义了一个衡量相似度的值Rij,计算公式为:
4、计算DBI
有了