聚类性能度量指标及距离计算

Python实现KMeans算法

1.外部指标

将聚类结果与某个“参考模型进行比较”

每次抽出两个样本,讨论所属聚类结果和参考模型,确定四个值:

  • a:聚类结果同属于一类,参考模型同属于一类
  • b:聚类结果同属于一类,参考模型同属于一类
  • c:聚类结果同属于一类,参考模型属于同一类
  • d:聚类结果同属于一类,参考模型同属于一类

1.1Jaccard系数(JC)

J C = a a + b + c JC=\frac{a}{a+b+c} JC=a+b+ca

1.2FM指数(FMI)

F M I = a a + b ∗ a a + c FMI=\sqrt{\frac{a}{a+b}*\frac{a}{a+c}} FMI=a+baa+ca

1.3Rand指数(RI)

R I = 2 ( a + d ) m ( m − 1 ) RI=\frac{2(a+d)}{m(m-1)} RI=m(m1)2(a+d)
上述性能度量的结果值均在[0,1]区间,值越大越好。

2.内部指标

直接考察聚类结果而不利用任何参考模型

将聚类结果的簇划分为 C = { C 1 , C 2 , . . . , C k } C=\{C_1,C_2,...,C_k\} C={C1,C2,...,Ck},也就是总共划分为k个簇
a v g ( C ) = 2 ∣ C ∣ ( ∣ C ∣ − 1 ) ∑ 1 ≤ i < j ≤ ∣ C ∣ d i s t ( x i , x j ) avg(C)=\frac{2}{|C|(|C|-1)}\sum_{1\leq i<j\leq|C|} dist(x_i,x_j) avg(C)=C(C1)21i<jCdist(xi,xj)

  • a v g ( C ) avg(C) avg(C):对应于簇C内样本间的平均距离
    d i a m ( C ) = m a x 1 ≤ i < j ≤ ∣ C ∣ d i s t ( x i , x j ) diam(C)=max_{1\leq i<j\leq|C|}dist(x_i,x_j) diam(C)=max1i<jCdist(xi,xj)
  • d i a m ( C ) diam(C) diam(C):对应于簇C内样本间的最远距离
    d m i n ( C i , C j ) = m i n x i ∈ C i , x j ∈ C j d i s t ( x i , x j ) d_{min}(C_i,C_j)=min_{x_i\in C_i,x_j\in C_j}dist(x_i,x_j) dmin(Ci,Cj)=minxiCi,xjCjdist(xi,xj)
  • d m i n ( C i , C j ) d_{min}(C_i,C_j) dmin(Ci,Cj):对应于簇 C i C_i Ci与簇 C j C_j Cj最近样本间的距离
    d c e n ( C i , C j ) = d i s t ( u i , u j ) d_{cen}(C_i,C_j)=dist(u_i,u_j) dcen(Ci,Cj)=dist(ui,uj)
  • d c e n ( C i , C j ) d_{cen}(C_i,C_j) dcen(Ci,Cj):对应于簇 C i C_i Ci与簇 C j C_j Cj中心点间的距离

2.1DB指数(DBI)

D B I = 1 k ∑ i = 1 k m a x j ≠ i ( a v g ( C i ) + a v g ( C j ) d c e n ( C i , C j ) ) DBI=\frac{1}{k}\sum_{i=1}^{k}max_{j\ne i}(\frac{avg(C_i)+avg(C_j)}{d_{cen}(C_i,C_j)}) DBI=k1i=1kmaxj=i(dcen(Ci,Cj)avg(Ci)+avg(Cj))

2.2Dunn指数(DI)

D I = m i n 1 ≤ i ≤ k { m i n j ≠ i ( d m i n ( C i , C j ) m a x 1 ≤ l ≤ k d i a m ( C l ) ) ) } DI=min_{1\leq i\leq k}\{min_{j\ne i}(\frac{d_{min}(C_i,C_j)}{max_{1\le l\le k}diam(C_l))})\} DI=min1ik{minj=i(max1lkdiam(Cl))dmin(Ci,Cj))}
DBI的值越小越好,DI值越大越好.

3距离计算

dist(,)若它是一个“距离度量”,则需要满足一些基本性质:

  • 非负性: d i s t ( x i , x j ) ≥ 0 dist(x_i,x_j)\geq0 dist(xi,xj)0
  • 同一性: d i s t ( x i , x j ) = 0 dist(x_i,x_j)=0 dist(xi,xj)=0当且仅当 x i = x j x_i=x_j xi=xj
  • 对称性: d i s t ( x i , x j ) = d i s t ( x j , x i ) dist(x_i,x_j)=dist(x_j,x_i) dist(xi,xj)=dist(xj,xi)
  • 直递性: d i s t ( x i , x j ) ≤ d i s t ( x i , x k ) + d i s t ( x k , x j ) dist(x_i,x_j)\le dist(x_i,x_k)+dist(x_k,x_j) dist(xi,xj)dist(xi,xk)+dist(xk,xj)

给定样本 x i = ( x i 1 ; x i 2 ; . . . ; x i n ) x_i=(x_{i1};x_{i2};...;x_{in}) xi=(xi1;xi2;...;xin) x j = ( x j 1 ; x j 2 ; . . . ; x j n ) x_j=(x_{j1};x_{j2};...;x_{jn}) xj=(xj1;xj2;...;xjn),最常用的是"闵可夫斯基距离"(Minkokski distance)
d i s t m k ( x i , x j ) = ( ∑ u = 1 n ∣ x i u − x j u ∣ ) 1 p dist_{mk}(x_i,x_j)=(\sum_{u=1}^n|x_{iu}-x_{ju}|)^{\frac{1}{p}} distmk(xi,xj)=(u=1nxiuxju)p1
p ≥ 1 p\geq 1 p1时,满足上述的距离基本性质

p = 2 p=2 p=2时,闵可夫斯基距离就是我们熟知的欧式距离(Euclidean distance)
d i s t e d ( x i , x j ) = ∣ ∣ x i − x j ∣ ∣ 2 = ∑ u = 1 n ∣ x i u − x j u ∣ 2 dist_{ed}(x_i,x_j)=||x_i-x_j||_2=\sqrt{\sum_{u=1}^n|x_{iu}-x_{ju}|^2} disted(xi,xj)=xixj2=u=1nxiuxju2
p = 1 p=1 p=1时,闵可夫斯基距离为曼哈顿距离(Manhattan distance)
d i s t m a n ( x i , x j ) = ∣ ∣ x i − x j ∣ ∣ 1 = ∑ u = 1 n ∣ x i u − x j u ∣ dist_{man}(x_i,x_j)=||x_i-x_j||_1=\sum_{u=1}^n|x_{iu}-x_{ju}| distman(xi,xj)=xixj1=u=1nxiuxju

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值