机器学习:聚类

本文主要内容摘自:周志华,《机器学习》,清华大学出版社。

文章目录

      • 1、聚类任务
      • 2、性能度量
        • 2.1 外部指标
        • 2.2 内部指标
      • 3、距离计算

1、聚类任务

  聚类试图将数据集中的样本划分为若干个通常是不相交的子集。形式化来说,假定样本集 D = { x 1 , x 2 , … , x m } { \mathcal D}=\{{\bf x}_1,{\bf x}_2,\ldots,{\bf x}_m\} D={x1,x2,,xm}包含 m m m个无标记样本,每个样本 x i = ( x i 1 ; x i 2 ; … , x i n ; ) {\bf x}_i=(x_{i1};x_{i2};\ldots,x_{in};) xi=(xi1;xi2;,xin;)是一个 n n n维向量,则聚类算法将样本集 D \mathcal D D划分为 k k k个不相交的簇 { C l ∣ l = 1 , 2 , … , k } \{{ C}_l| l=1,2,\ldots,k\} {Cll=1,2,,k},其中 C l ′ ∩ l ′ = ̸ l C l = Φ C_{l'}\cap_{l' =\not l}C_l=\Phi Cll≠lCl=Φ D = ∪ l = 1 k C l D=\cup_{l=1}^{k}C_l D=l=1kCl。相应地,我们用 λ j ∈ { 1 , 2 , … , k } \lambda_j\in \{1,2,\ldots,k\} λj{1,2,,k}表示样本 x j {\bf x}_j xj的簇标记(cluster label),即 x j ∈ C λ j {\bf x}_j\in C_{\lambda_j} xjCλj。于是,聚类的结果可用包含 m m m个元素的簇标记向量 λ = ( λ 1 , λ 2 , … , λ m ) {\bm \lambda}=(\lambda_1,\lambda_2,\ldots,\lambda_m) λ=(λ1,λ2,,λm)来表示。
  下面先来讨论聚类算法涉及的两个基本问题–性能度量和距离计算。

2、性能度量

  直观来说,聚类算法应该是簇内相似度(intra-cluster similarity)高,且簇间相似度(inter-cluster similarity)低。
  聚类性能度量大致来说分为两类。第一类是将聚类结果与某个参考模型(reference model)进行比较,因而称为外部指标(external index);另一类是直接考查聚类结果而不利用任何参考模型,称为内部指标(internal index)。

2.1 外部指标

  对数据集 D = { x i , x 2 , … , x m } D=\{{\bf x}_i, {\bf x}_2,\ldots,{\bf x}_m\} D={xi,x2,,xm},假定经过聚类给出的簇划分为 C = { C 1 , C 2 , … , C k } {\mathcal C}=\{ C_1, C_2,\ldots,C_k\} C={C1,C2,,Ck},参考模型给出的簇划分为 C ∗ = { C 1 ∗ , C 2 ∗ , … , C s ∗ } {\mathcal C}^*=\{C_1^*,C_2^*,\ldots,C_s^*\} C={C1,C2,,Cs}。相应地,令 λ \bm \lambda λ λ ∗ \bm \lambda^* λ分别表示 C \mathcal C C C ∗ \mathcal C^* C对应的簇标记向量。我们将样本两两配对考虑,定义
a = ∣ S S ∣ , S S = { ( x i , x j ) ∣ λ i = λ j , λ i ∗ = λ j ∗ , i ≤ j } , b = ∣ S D ∣ , S D = { ( x i , x j ) ∣ λ i = λ j , λ i ∗ = ̸ λ j ∗ , i ≤ j } , c = ∣ D S ∣ , D S = { ( x i , x j ) ∣ λ i = ̸ λ j , λ i ∗ = λ j ∗ , i ≤ j } , d = ∣ D D ∣ , D D = { ( x i , x j ) ∣ λ i = ̸ λ j , λ i ∗ = ̸ λ j ∗ , i ≤ j } , a=|{\mathcal SS}|,{\mathcal SS}=\{({\bf x}_i,{\bf x}_j)|\lambda_i=\lambda_j,\lambda_i^*=\lambda_j^*,i\le j\},\\ b=|{\mathcal SD}|,{\mathcal SD}=\{({\bf x}_i,{\bf x}_j)|\lambda_i=\lambda_j,\lambda_i^*=\not\lambda_j^*,i\le j\},\\ c=|{\mathcal DS}|,{\mathcal DS}=\{({\bf x}_i,{\bf x}_j)|\lambda_i=\not \lambda_j,\lambda_i^*=\lambda_j^*,i\le j\},\\ d=|{\mathcal DD}|,{\mathcal DD}=\{({\bf x}_i,{\bf x}_j)|\lambda_i=\not\lambda_j,\lambda_i^*=\not\lambda_j^*,i\le j\},\\ a=SSSS={(xi,xj)λi=λj,λi=λj,ij},b=SDSD={(xi,xj)λi=λj,λi≠λj,ij},c=DSDS={(xi,xj)λi≠λj,λi=λj,ij},d=DDDD={(xi,xj)λi≠λj,λi≠λj,ij},其中,集合 S S \mathcal SS SS包含了在 C \mathcal C C中隶属于相同簇,在 C ∗ \mathcal C^* C中也隶属于相同簇的样本对;集合 S D \mathcal SD SD包含了在 C \mathcal C C中隶属于相同簇,但在 C ∗ \mathcal C^* C中隶属于不同簇的样本对;集合 D S \mathcal DS DS包含了在 C \mathcal C C中隶属于不同簇,在 C ∗ \mathcal C^* C中隶属于相同簇的样本对;集合 D D \mathcal DD DD包含了在 C \mathcal C C中和 C ∗ \mathcal C^* C中都隶属于不同簇的样本对。由于每个样本对 ( x i , x j ) ( i ≤ j ) ({\bf x}_i,{\bf x}_j)(i\le j) (xi,xj)(ij)都只能出现在一个集合中,因此有 a + b + c + d = C m 2 = m ( m − 1 ) 2 a+b+c+d=C_m^2=\frac{m(m-1)}{2} a+b+c+d=Cm2=2m(m1)
  常用聚类性能度量外部指标包括:

  • Jaccard系数(Jaccard Coefficient, JC)
    J C = a b + c + d . {\rm JC}=\frac{a}{b+c+d}. JC=b+c+da.
  • FM指数(Fowlkes and Mallows Index, FM)
    F M I = a a + b ⋅ a a + c {\rm FMI}=\sqrt{\frac{a}{a+b}\cdot \frac{a}{a+c}} FMI=a+baa+ca
  • Rand指数(Rand Index,RI)
    R I = 2 ( a + d ) m ( m − 1 ) . {\rm RI}=\frac{2(a+d)}{m(m-1)}. RI=m(m1)2(a+d).
    显然,上述性能度量的结果都在[0,1]区间,值越大越好。

2.2 内部指标

  对于簇划分${\mathcal C}={C_1,C_2,\ldots,C_k},定义
a v g ( C ) = 2 ∣ C ∣ ( ∣ C ∣ − 1 ) ∑ 1 ≤ i < j ≤ ∣ C ∣ d i s t ( x i , x j ) , d i a m ( C ) = max ⁡ 1 ≤ i < j ≤ ∣ C ∣ d i s t ( x i , x j ) , d min ⁡ ( C i , C j ) = min ⁡ x i ∈ C i , x j ∈ C j d i s t ( x i , x j ) , d c e n ( C i , C j ) = d i s t ( μ i , μ j ) , \begin{aligned} {\rm avg}({\mathcal C})&=\frac{2}{|{\mathcal C}|(|{\mathcal C}|-1)}\sum_{1\le i<j \le |{\mathcal C}|}{\rm dist}({\bf x}_i,{\bf x}_j),\\ {\rm diam}({\mathcal C})&=\max_{{1\le i<j \le |{\mathcal C}|}}{\rm dist}({\bf x}_i,{\bf x}_j),\\ d_{\min}({\mathcal C}_i,{\mathcal C}_j)&=\min_{{\bf x}_i\in {\mathcal C}_i,{\bf x}_j\in {\mathcal C}_j}{\rm dist}({\bf x}_i,{\bf x}_j),\\ d_{\rm cen}({\mathcal C}_i,{\mathcal C}_j)&={\rm dist}({\bm \mu}_i,{\bm \mu}_j), \end{aligned} avg(C)diam(C)dmin(Ci,Cj)dcen(Ci,Cj)=C(C1)21i<jCdist(xi,xj),=1i<jCmaxdist(xi,xj),=xiCi,xjCjmindist(xi,xj),=dist(μi,μj),其中, d i s t ( ⋅ , ⋅ ) {\rm dist}(\cdot,\cdot) dist(,)用于计算两个样本之间的距离; μ {\bm \mu} μ代表簇 C \mathcal C C的中心点 μ = 1 ∣ C ∣ ∑ 1 ≤ i ≤ ∣ C ∣ x i {\bm \mu}=\frac{1}{|{\mathcal C}|}\sum_{1\le i\le |{\mathcal C}|}{\bf x}_i μ=C11iCxi。显然, a v g ( C ) {\rm avg}(\mathcal C) avg(C)对应于簇C内样本间的平均距离; d i a m ( C ) {\rm diam}(\mathcal C) diam(C)对应于簇C内样本间的最远距离; d min ⁡ ( C i , C j ) d_{\min}({\mathcal C}_i,{\mathcal C}_j) dmin(Ci,Cj)对应于簇 C i {\mathcal C}_i Ci C j {\mathcal C}_j Cj最近样本间的距离 d c e n ( C i , C j ) d_{\rm cen}({\mathcal C}_i,{\mathcal C}_j) dcen(Ci,Cj)对应于簇 C i {\mathcal C}_i Ci C j {\mathcal C}_j Cj中心点间的距离。
  常用聚类性能度量内部指标包括:

  • DB指数(Davies-Bouldin Index, DBI)
    D B I = 1 k ∑ i = 1 k max ⁡ j = ̸ i [ a v g ( C i ) + a v g ( C j ) d c e n ( C i , C j ) ] . {\rm DBI}=\frac{1}{k}\sum_{i=1}^{k}\max_{j=\not i}{\Large[} \frac{{\rm avg}({\mathcal C}_i)+{\rm avg}({\mathcal C}_j)}{d_{\rm cen}({\mathcal C}_i,{\mathcal C}_j)}\Large]. DBI=k1i=1kj≠imax[dcen(Ci,Cj)avg(Ci)+avg(Cj)].
  • Dunn指数(Dunn Index, DI)
    D I = min ⁡ 1 ≤ i ≤ k { } {\rm DI}=\min_{1\le i\le k}{\Large \{} {\Large \}} DI=1ikmin{}
    显然,DBI的值越小越好,而DI则相反,值越大越好。

3、距离计算

  

  

  

你可能感兴趣的:(机器学习:聚类)