K-Means

K-Means

  1. 在无监督学习(unsupervised learning)中,训练样本的标记信息是未知的。

  2. 无监督学习的目标:通过对无标记训练样本的学习来揭露数据的内在性质以及规律。

  3. 一个经典的无监督学习任务:寻找数据的最佳表达(representation)。常见的有:

    • 低维表达:试图将数据(位于高维空间)中的信息尽可能压缩在一个较低维空间中。
    • 稀疏表达:将数据嵌入到大多数项为零的一个表达中。该策略通常需要进行维度扩张。
    • 独立表达:使数据的各个特征相互独立。
  4. 无监督学习应用最广的是聚类(clustering) 。

    • 假定样本集 D = { x 1 , x 2 , … , x m } D = \left \{\mathbf x_1,\mathbf x_2,…,\mathbf x_m \right \} D={x1,x2,,xm}包含 m m m个无标记样本,每个样本 x i = ( x i 1 ; x i 2 ; … ; x i n ) \mathbf x_i = (x_{i1};x_{i2};…;x_{in}) xi=(xi1;xi2;;xin)是一个n维特征向量,则聚类算法将样本集 D D D划分为 k k k个不相交的簇 { C l   ∣   l = 1 , 2 , … , k } \left \{C_l\ |\ l=1,2,…,k \right \} {Cl  l=1,2,,k},其中 C l ′ ⋂ l ′ ≠ l C l = ϕ C_{l^{'}}\bigcap_{l^{'}\neq l}C_l = \phi Cll̸=lCl=ϕ D = ⋃ l = 1 k C l D=\bigcup_{l=1}^kC_l D=l=1kCl
    • 通过这样的划分,每个簇可能对应于一个潜在的概念。这些概念对于聚类算法而言,事先可能是未知的。
    • 聚类过程仅仅能自动形成簇结构,簇所对应的概念语义需要由使用者来提供。
  5. 相应的,用 λ j ∈ { 1 , 2 , … , k } \lambda_j\in \left \{1,2,…,k \right \} λj{1,2,,k}表示样本 x j \mathbf x_j xj簇标记(cluster label),即 x j ∈ C λ j \mathbf x_j \in C_{\lambda j} xjCλj。于是,聚类的结果可用包含 m m m个元素的簇标记向量 λ = ( λ 1 ; λ 2 ; … ; λ m ) \mathbf \lambda=(\lambda_1;\lambda_2;…;\lambda_m) λ=(λ1;λ2;;λm)表示。

  6. 聚类的作用:

    • 可以作为一个单独的过程,用于寻找数据内在的分布结构。
    • 也可以作为其他学习任务的前驱过程。如对数据先进行聚类,然后对每个簇单独训练模型。
  7. 聚类问题本身是病态的。即:没有某个标准来衡量聚类的效果。

    • 可以简单的度量聚类的性质,如每个聚类的元素到该类中心点的平均距离。

      但是实际上不知道这个平均距离对应于真实世界的物理意义。

    • 可能很多不同的聚类都很好地对应了现实世界的某些属性,它们都是合理的。

      如:在图片识别中包含的图片有:红色卡车、红色汽车、灰色卡车、灰色汽车。可以聚类成:红色一类、灰色一类;也可以聚类成:卡车一类、汽车一类。

      解决该问题的一个做法是:利用深度学习来进行分布式表达,可以对每个车辆赋予两个属性:一个表示颜色、一个表示型号。

一、性能度量

  1. 聚类的性能度量也称作聚类的有效性指标(validity index)。
  2. 直观上看,希望同一簇的样本尽可能彼此相似,不同簇的样本之间尽可能不同。即:簇内相似度(intra-cluster similarity)高,且簇间相似度(inter-cluster similarity)低。
  3. 聚类的性能度量分两类:
    • 聚类结果与某个参考模型(reference model)进行比较,称作外部指标(external index)。
    • 直接考察聚类结果而不利用任何参考模型,称作内部指标(internal index) 。

1.1 外部指标

  1. 对数据集 D = { x 1 , x 2 , … , x m } D=\left \{\mathbf x_1,\mathbf x_2,…,\mathbf x_m \right \} D={x1,x2,,xm},假定通过聚类给出的簇划分为 C = { C 1 , C 2 , … , C k } C=\left \{C_1,C_2,…,C_k \right \} C={C1,C2,,Ck},参考模型给定的簇划分为 C ∗ = { C 1 ∗ , C 2 ∗ , … , C s ∗ } C^*=\left \{C_1^*,C_2^*,…,C_s^* \right \} C={C1,C2,,Cs}。相应地,令 λ \mathbf \lambda λ λ ∗ \mathbf \lambda^* λ分别表示与 C C C C ∗ C^* C对应的簇标记向量,将样本两两配对考虑,定义:
    (1) a = ∣ S S ∣ ,   S S = { ( x i , x j ) ∣ λ i = λ j , λ i ∗ = λ j ∗ , i &lt; j } a=|SS|,\ SS=\left \{(\mathbf x_i,\mathbf x_j)|\lambda_i=\lambda_j,\lambda_i^*=\lambda_j^*,i&lt;j \right \}\tag{1} a=SS, SS={(xi,xj)λi=λj,λi=λj,i<j}(1)

    (2) b = ∣ S D ∣ ,   S D = { ( x i , x j ) ∣ λ i = λ j , λ i ∗ ≠ λ j ∗ , i &lt; j } b=|SD|,\ SD=\left \{(\mathbf x_i,\mathbf x_j)|\lambda_i=\lambda_j,\lambda_i^*\neq \lambda_j^*,i&lt;j \right \}\tag{2} b=SD, SD={(xi,xj)λi=λj,λi̸=λj,i<j}(2)

    (3) c = ∣ D S ∣ ,   S D = { ( x i , x j ) ∣ λ i ≠ λ j , λ i ∗ = λ j ∗ , i &lt; j } c=|DS|,\ SD=\left \{(\mathbf x_i,\mathbf x_j)|\lambda_i\neq\lambda_j,\lambda_i^*=\lambda_j^*,i&lt;j \right \}\tag{3} c=DS, SD={(xi,xj)λi̸=λj,λi=λj,i<j}(3)

    (4) d = ∣ D D ∣ ,   S D = { ( x i , x j ) ∣ λ i ≠ λ j , λ i ∗ ≠ λ j ∗ , i &lt; j } d=|DD|,\ SD=\left \{(\mathbf x_i,\mathbf x_j)|\lambda_i\neq\lambda_j,\lambda_i^*\neq\lambda_j^*,i&lt;j \right \}\tag{4} d=DD, SD={(xi,xj)λi̸=λj,λi̸=λj,i<j}(4)

    ∣ ⋅ ∣ |·| 表示集合的元素的个数。各集合的意义为:

    • S S SS SS:包含了同时隶属于 C , C ∗ C,C^* C,C的样本对。
    • S D SD SD:包含了隶属于 C C C,但是不隶属与 C ∗ C^* C的样本对。
    • D S DS DS:包含了不隶属于 C C C,但是隶属与 C ∗ C^* C的样本对。
    • D D DD DD:包含了既不隶属于 C C C,又不隶属与 C ∗ C^* C的样本对。

    由于每个样本对 ( x i , x j )   ( i &lt; j ) (\mathbf x_i,\mathbf x_j)\ (i&lt;j) (xi,xj) (i<j)仅能出现在一个集合中,因此有 a + b + c + d = m ( m − 1 ) / 2 a+b+c+d=m(m-1)/2 a+b+c+d=m(m1)/2成立。

  2. 基于式(1)~(4)可导出下面这些常用的聚类性能外部指标:

    • Jaccard系数(Jaccard Coefficient,简称JC)
      (5) J C = a a + b + c JC=\frac{a}{a+b+c}\tag{5} JC=a+b+ca(5)

    • FM指数(Fowlkes and Mallows Index,简称FMI)
      (6) F M I = a a + b ⋅ a a + c FMI=\sqrt{\frac{a}{a+b}·\frac{a}{a+c}}\tag{6} FMI=a+baa+ca (6)

    • Rand指数(Rand Index,简称RI)
      (7) R I = 2 ( a + d ) m ( m − 1 ) RI=\frac{2(a+d)}{m(m-1)}\tag{7} RI=m(m1)2(a+d)(7)

    上述性能度量的结果值均在 [ 0 , 1 ] [0,1] [0,1]区间,值越大越好。

1.2 内部指标

  1. 对聚类结果的簇划分 C = { C 1 , C 2 , … , C k } C=\left \{C_1,C_2,…,C_k \right \} C={C1,C2,,Ck},定义:
    (8) a v g ( C ) = 2 ∣ C ∣ ( ∣ C ∣ − 1 ) ∑ 1 ⩽ i &lt; j ⩽ ∣ C ∣ d i s t ( x i , x j ) avg(C)=\frac{2}{|C|(|C|-1)}\sum_{1\leqslant i&lt;j\leqslant |C|}^{}dist(\mathbf x_i,\mathbf x_j)\tag{8} avg(C)=C(C1)21i<jCdist(xi,xj)(8)

    (9) d i a m ( C ) = m a x 1 ⩽ i &lt; j ⩽ ∣ C ∣ d i s t ( x i , x j ) diam(C)=max_{1\leqslant i&lt;j\leqslant |C|}dist(\mathbf x_i,\mathbf x_j)\tag{9} diam(C)=max1i<jCdist(xi,xj)(9)

    (10) 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,Cj)=min_{\mathbf x_i\in C_i,x_j\in C_j}dist(\mathbf x_i,\mathbf x_j)\tag{10} dmin(Ci,Cj)=minxiCi,xjCjdist(xi,xj)(10)

    (11) d c e n ( C i , C j ) = d i s t ( μ i , μ j ) d_{cen}(C_i,C_j)=dist(\mathbf \mu_i,\mathbf \mu_j)\tag{11} dcen(Ci,Cj)=dist(μi,μj)(11)

    其中 d i s t ( ⋅ , ⋅ ) dist(·,·) dist(,)用于计算两个样本之间的距离; μ \mathbf \mu μ代表簇 C C C的中心点 μ = 1 C ∑ 1 ⩽ i ⩽ ∣ C ∣ x i \mathbf \mu=\frac{1}{C}\sum_{1\leqslant i\leqslant|C|}\mathbf x_i μ=C11iCxi

    上述定义的意义为:

    • a v g ( C ) avg(C) avg(C):簇 C C C中每对样本之间的平均距离。
    • d i a m ( C ) diam(C) diam(C):簇 C C C中距离最远的两个样本的距离。
    • d m i n ( C i , C j ) d_{min}(C_i,Cj) dmin(Ci,Cj):簇 C i C_i Ci与簇 C j C_j Cj中最近样本间的距离。
    • 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. 基于式(8)~(11)可导出下面这些常用的聚类性能内部指标:

    • DB指数(Davies-Bouldin Index,简称DBI):
      (12) 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}\underset{j\neq i}{max}\left (\frac{avg(C_i)+avg(C_j)}{dcen(C_i,C_j)} \right )\tag{12} DBI=k1i=1kj̸=imax(dcen(Ci,Cj)avg(Ci)+avg(Cj))(12)

    • Dunn指数(Dunn Index,简称DI):
      (13) 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=\underset{1\leqslant i\leqslant k}{min}\left \{\underset{j\neq i}{min} \left (\frac{d_{min}(C_i,C_j)}{max_{1\leqslant l\leqslant k }diam(C_l)} \right )\right \}\tag{13} DI=1ikmin{j̸=imin(max1lkdiam(Cl)dmin(Ci,Cj))}(13)

    显然,DBI的值越小越好,DI的值越大越好。

1.3 距离计算

  1. 对函数 d i s t ( ⋅ , ⋅ ) dist(·,·) dist(,),若它是一个距离度量(distance measure),则需满足一些基本性质:
    (14) 非 负 性 : d i s t ( x i , x j ) ⩾ 0 非负性:dist(\mathbf x_i,\mathbf x_j)\geqslant0\tag{14} dist(xi,xj)0(14)

    (15) 同 一 性 : d i s t ( x i , x j ) = 0   当 且 仅 当 x i = x j 同一性:dist(\mathbf x_i,\mathbf x_j)=0\ 当且仅当\mathbf x_i=\mathbf x_j\tag{15} dist(xi,xj)=0 xi=xj(15)

    (16) 对 称 性 : d i s t ( x i , x j ) = d i s t ( x j , x i ) 对称性:dist(\mathbf x_i,\mathbf x_j)=dist(\mathbf x_j,\mathbf x_i)\tag{16} :dist(xi,xj)=dist(xj,xi)(16)

    (17) 直 递 性 : 对 称 性 : 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(\mathbf x_i,\mathbf x_j)\leqslant dist(\mathbf x_i,\mathbf x_k)\leqslant dist(\mathbf x_k,\mathbf x_j)\tag{17} :dist(xi,xj)dist(xi,xk)dist(xk,xj)(17)

  2. 当定样本 x i = ( x i 1 ; x i 2 ; … ; x i n ) \mathbf x_i = (x_{i1};x_{i2};…;x_{in}) xi=(xi1;xi2;;xin) x j = ( x j 1 ; x j 2 ; … ; x j n ) \mathbf x_j = (x_{j1};x_{j2};…;x_{jn}) xj=(xj1;xj2;;xjn),常用的有以下距离:

    • 闵可夫斯基距离(Minkowski distance)
      (18) d i s t m k = ( ∑ u = 1 n ∣ x i u − x j u ∣ 1 p ) dist_{mk}=\left (\sum_{u=1}^{n}|x_{iu}-x_{ju}|^{\frac{1}{p}} \right )\tag{18} distmk=(u=1nxiuxjup1)(18)
      p = 2 p=2 p=2时,闵可夫斯基距离就是欧式距离(Euclidean distance):
      (19) d i s t e d = ∣ ∣ x i − x j ∣ ∣ 2 = ∑ u = 1 n ∣ x i u − x j u ∣ dist_{ed}=||\mathbf x_{i}-\mathbf x_{j}||_2=\sqrt{\sum_{u=1}^{n}|x_{iu}-x_{ju}|}\tag{19} disted=xixj2=u=1nxiuxju (19)
      p = 1 p=1 p=1时,闵可夫斯基距离就是曼哈顿距离(Manhattan distance),亦称为街区距离(city block distance):
      (20) d i s t m a n = ∣ ∣ x i − x j ∣ ∣ 1 = ∑ u = 1 n ∣ x i u − x j u ∣ dist_{man}=||\mathbf x_{i}-\mathbf x_{j}||_1=\sum_{u=1}^{n}|x_{iu}-x_{ju}|\tag{20} distman=xixj1=u=1nxiuxju(20)
      p → ∞ p→\infty p时则得到切比雪夫距离。
  3. 我们常将属性划分为连续属性(continuous attribute)和离散属性(categorical attribute),前者在定义域上有无穷多个取值,后者在定义域上是有限个取值。然而,在讨论距离计算时,属性上是否定义了"序"关系更为重要。例如定义域为 { 1 , 2 , 3 } \left \{1,2,3 \right \} {1,2,3}的离散属性与连续属性的性质更接近一些,能直接在属性上计算距离:"1"与"2"比较接近、与"3"比较远,这样的属性称为有序属性(ordinal attribute);而定义域为{飞机,火车,轮船}这样的离散属性则不能直接在属性上计算距离,称为无序属性(non-ordinal attribute)。闵可夫斯基距离可用于有序属性。

  4. 对无序属性可采用VDM(Value Difference Metric)。令 m u , a m_{u,a} mu,a表示在属性 u u u上取值为 a a a的样本数, m u , a , i m_{u,a,i} mu,a,i表示在第 i i i个样本簇中在属性 u u u上取值为 a a a的样本数, k k k为样本簇数,则属性 u u u上两个离散值 a a a b b b之间的VDM距离为:
    (21) V D M p ( a , b ) = ∑ i = 1 k ∣ m u , a , i m u , a − m u , b , i m u , b ∣ p VDM_p(a,b)=\sum_{i=1}^{k}|\frac{m_{u,a,i}}{m_{u,a}}-\frac{m_{u,b,i}}{m_{u,b}}|^p\tag{21} VDMp(a,b)=i=1kmu,amu,a,imu,bmu,b,ip(21)
    该距离刻画的是:属性取值在各簇上的频率分布之间的差异。

  5. 将闵可夫斯基距离和VDM结合即可处理混合属性。假定有 n c n_c nc个有序属性, n − n c n-n_c nnc个无序属性,不失一般性,令有序属性排列在无序属性之前,则:
    (22) M i n k o v D M p ( x i , x j ) = ( ∑ u = 1 n c ∣ x i u − x j u ∣ p + ∑ n c + 1 n V D M ( x i u − x j u ) ) 1 p MinkovDM_p(\mathbf x_i,\mathbf x_j)=\left (\sum_{u=1}^{n_c}|x_{iu}-x_{ju}|^p+\sum_{n_{c+1}}^{n}VDM(x_{iu}-x_{ju}) \right )^{\frac{1}{p}}\tag{22} MinkovDMp(xi,xj)=(u=1ncxiuxjup+nc+1nVDM(xiuxju))p1(22)

  6. 当样本空间中不同属性的重要性不同时,可使用加权距离(weighted distance)。以加权闵可夫斯基距离为例:
    (23) d i s t w m k = ( ω 1 ⋅ ∣ x i 1 − x j 1 ∣ 1 p + . . . + ω n ⋅ ∣ x i n − x j n ∣ 1 p ) dist_{wmk}=(\omega_1·|x_{i1}-x_{j1}|^{\frac{1}{p}}+...+\omega_n·|x_{in}-x_{jn}|^{\frac{1}{p}})\tag{23} distwmk=(ω1xi1xj1p1+...+ωnxinxjnp1)(23)
    其中权重 ω i ⩾ 0   ( i = 1 , 2 , … , n ) \omega_i \geqslant 0\ (i=1,2,…,n) ωi0 (i=1,2,,n)表征不同属性的重要性,通常 ∑ i = 1 m ω i = 1 \sum_{i=1}^{m}\omega_i=1 i=1mωi=1

  7. 需注意的是,通常我们是基于某种形式的距离来定义相似度度量(similarity measure),距离越大,相似度越小。然而,用于相似度度量的距离未必一定要满足距离度量的所有性质,尤其是式(17)。例如在某些任务中我们可能希望有这样的相似度度量:“人” “马"分别与"人马"相似,但"人"与"马"很不相似;要达到这个目的,可以领"人” "马"与"人马"之间的距离都比较小,但"人"与"马"之间的距离很大,如下图所示,此时距离不再满足直递性;这样的距离称为非度量距离(non-metric distance)。此外,这里介绍的距离计算式都是事先定义好的,但在不少现实任务中,有必要基于数据样本来确定合适的距离计算式,这可通过距离度量学习(distance metric learning)来事先。

在这里插入图片描述

这个例子中,从数学上看,令 d 3 = 3 d_3=3 d3=3即可满足直递性;但从语义上看, d 3 d_3 d3应远大于 d 1 d_1 d1 d 2 d_2 d2

二、K-Means算法

  1. 给定样本集 D = { x 1 , x 2 , … , x m } D=\left \{ \mathbf x_1,\mathbf x_2,…,\mathbf x_m\right \} D={x1,x2,,xm},k均值(k-means)算法针对聚类所得划分 C = { C 1 , C 2 , … , C k } C=\left \{C_1,C_2,…,C_k \right \} C={C1,C2,,Ck}最小化平方误差:
    (24) E = ∑ i = 1 k ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2 2 E=\sum_{i=1}^{k}\sum_{\mathbf x \in C_i}||\mathbf x-\mathbf \mu_i||_2^2\tag{24} E=i=1kxCixμi22(24)
    其中 μ i = 1 ∣ C i ∣ ∑ x ∈ C i x \mathbf \mu_i=\frac{1}{|C_i|}\sum_{x\in C_i}\mathbf x μi=Ci1xCix是簇 C i C_i Ci的均值向量

    • E刻画了簇类样本围绕簇均值向量的紧密程度,其值越小,则簇内样本相似度越高。
    • k-means 算法的优化目标为:最小化E。即: m i n c ∑ i = 1 k ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2 2 min_c \sum_{i=1}^{k}\sum_{\mathbf x \in C_i}||\mathbf x-\mathbf \mu_i||_2^2 minci=1kxCixμi22
  2. k-means的优化目标需要考察 的所有可能的划分,这是一个NP难的问题。实际上k-means 采用贪心策略,通过迭代优化来近似求解。

    • 首先假设一组均值向量。

    • 然后根据假设的均值向量给出了 D D D的一个划分。

    • 再根据这个划分来计算真实的均值向量:

      • 如果真实的均值向量等于假设的均值向量,则说明假设正确。根据假设均值向量给出的D的一个划分确实是原问题的解。
      • 如果真实的均值向量不等于假设的均值向量,则可以将真实的均值向量作为新的假设均值向量,继续迭代求解。
    • 这里的一个关键就是:给定一组假设的均值向量,如何计算出 D D D的一个簇划分?

      k均值算法的策略是:样本离哪个簇的均值向量最近,则该样本就划归到那个簇。

  3. 算法步骤:

    输入:样本集 D = { x 1 , x 2 , … , x m } D=\left \{ \mathbf x_1,\mathbf x_2,…,\mathbf x_m\right \} D={x1,x2,,xm};

    ​ 聚类簇数 k k k

    过程:

    1:从 D D D中随机选择 k k k个样本作为初始均值向量 { μ 1 , μ 2 , … , μ k } \left \{ \mathbf \mu_1,\mathbf \mu_2,…,\mathbf \mu_k\right \} {μ1,μ2,,μk}

    2:repeat

    3: 令 C i = ϕ   ( 1 ⩽ i ⩽ k ) C_i=\phi \ (1\leqslant i\leqslant k) Ci=ϕ (1ik)

    4: for j = 1,2,…,m do

    5: 计算样本 x j \mathbf x_j xj与各均值向量 μ i   ( 1 ⩽ i ⩽ k ) \mathbf \mu_i \ (1\leqslant i\leqslant k) μi (1ik)的距离 d j i = ∣ ∣ x i − x j ∣ ∣ 2 d_{ji}=||\mathbf x_i-\mathbf x_j||_2 dji=xixj2

    6: 根据距离最近的均值向量确定 x j \mathbf x_j xj的簇标记: λ j = a r g m i n x ∈ { 1 , 2 , … , k } d j i \lambda_j=argmin_{x\in \left \{1,2,…,k \right \}}d_{ji} λj=argminx{1,2,,k}dji

    7: 将样本 x j \mathbf x_j xj划入相应的簇: C λ j ⋃ { x j } C_{\lambda_{j}}\bigcup\left \{\mathbf x_j \right \} Cλj{xj}

    8: end for

    9: for i = 1,2,…,k do

    10: 计算新均值向量: μ i ′ = 1 ∣ C i ∣ ∑ x ∈ C i x \mathbf \mu_i^{&#x27;}=\frac{1}{|C_i|}\sum_{x\in C_i}\mathbf x μi=Ci1xCix

    11: if μ i ′ ≠ μ i \mathbf \mu_i^{&#x27;}\neq \mathbf \mu_i μi̸=μi then

    12: 将当前均值向量 μ i \mathbf \mu_i μi更新为 μ i ′ \mathbf \mu_i^{&#x27;} μi

    13: else

    14: 保持当前均值向量不变

    15: end if

    16: end for

    17:until 当前均值向量均未更新

    **输出:**簇划分 C = { C 1 , C 2 , … , C k } C=\left \{C_1,C_2,…,C_k \right \} C={C1,C2,,Ck}

  4. 前面的k-means中簇的数目k是一个用户预先定义的参数,在k值未知的情况下可使用手肘法求得最佳k值

    • 核心指标SSE(sum of the squared errors,误差平方和)
      (25) S S E = ∑ i = 1 k ∑ x ∈ C i ∣ x − μ i ∣ 2 SSE=\sum_{i=1}^{k}\sum_{\mathbf x\in C_i}|\mathbf x-\mu_i|^2\tag{25} SSE=i=1kxCixμi2(25)

    • 手肘法核心思想:

      • 随着聚类数k的增大,样本划分会更加精细,每个簇的聚合程度会逐渐提高,那么误差平方和SSE自然会逐渐变小。
      • 当k小于真实聚类数时,由于k的增大会大幅增加每个簇的聚合程度,故SSE的下降幅度会很大,而当k到达真实聚类数时,再增加k所得到的聚合程度回报会迅速变小,所以SSE的下降幅度会骤减,然后随着k值的继续增大而趋于平缓,也就是说SSE和k的关系图是一个手肘的形状,而这个肘部对应的k值就是数据的真实聚类数。

在这里插入图片描述

  1. k-means优点:

    • 计算复杂度低,为O(N×K×q),其中q为迭代次数。

      通常K和q要远远小于N,此时复杂度相当于O(N)。

    • 思想简单,容易实现。

  2. k-means缺点:

    • 需要首先确定聚类的数量K。

    • 分类结果严重依赖于分类中心的初始化。

      通常进行多次k-means,然后选择最优的那次作为最终聚类结果。

    • 结果不一定是全局最优的,只能保证局部最优。

    • 对噪声敏感。因为簇的中心是取平均,因此聚类簇很远地方的噪音会导致簇的中心点偏移。

    • 无法解决不规则形状的聚类。

    • 无法处理离散特征,如:国籍、性别等。

  3. k-means性质:

    • k-means实际上假设数据是呈现球形分布,实际任务中很少有这种情况。

      与之相比,GMM使用更加一般的数据表示,即高斯分布。

    • k-means 假设各个簇的先验概率相同,但是各个簇的数据量可能不均匀。

    • k-means 使用欧式距离来衡量样本与各个簇的相似度。这种距离实际上假设数据的各个维度对于相似度的作用是相同的。

    • k-means 中,各个样本点只属于与其相似度最高的那个簇,这实际上是硬分簇。

    • k-means 算法的迭代过程实际上等价于EM 算法。

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值