K-Means
-
在无监督学习(unsupervised learning)中,训练样本的标记信息是未知的。
-
无监督学习的目标:通过对无标记训练样本的学习来揭露数据的内在性质以及规律。
-
一个经典的无监督学习任务:寻找数据的最佳表达(representation)。常见的有:
- 低维表达:试图将数据(位于高维空间)中的信息尽可能压缩在一个较低维空间中。
- 稀疏表达:将数据嵌入到大多数项为零的一个表达中。该策略通常需要进行维度扩张。
- 独立表达:使数据的各个特征相互独立。
-
无监督学习应用最广的是聚类(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 Cl′⋂l′̸=lCl=ϕ且 D = ⋃ l = 1 k C l D=\bigcup_{l=1}^kC_l D=⋃l=1kCl。
- 通过这样的划分,每个簇可能对应于一个潜在的概念。这些概念对于聚类算法而言,事先可能是未知的。
- 聚类过程仅仅能自动形成簇结构,簇所对应的概念语义需要由使用者来提供。
-
相应的,用 λ 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} xj∈Cλj。于是,聚类的结果可用包含 m m m个元素的簇标记向量 λ = ( λ 1 ; λ 2 ; … ; λ m ) \mathbf \lambda=(\lambda_1;\lambda_2;…;\lambda_m) λ=(λ1;λ2;…;λm)表示。
-
聚类的作用:
- 可以作为一个单独的过程,用于寻找数据内在的分布结构。
- 也可以作为其他学习任务的前驱过程。如对数据先进行聚类,然后对每个簇单独训练模型。
-
聚类问题本身是病态的。即:没有某个标准来衡量聚类的效果。
-
可以简单的度量聚类的性质,如每个聚类的元素到该类中心点的平均距离。
但是实际上不知道这个平均距离对应于真实世界的物理意义。
-
可能很多不同的聚类都很好地对应了现实世界的某些属性,它们都是合理的。
如:在图片识别中包含的图片有:红色卡车、红色汽车、灰色卡车、灰色汽车。可以聚类成:红色一类、灰色一类;也可以聚类成:卡车一类、汽车一类。
解决该问题的一个做法是:利用深度学习来进行分布式表达,可以对每个车辆赋予两个属性:一个表示颜色、一个表示型号。
-
一、性能度量
- 聚类的性能度量也称作聚类的有效性指标(validity index)。
- 直观上看,希望同一簇的样本尽可能彼此相似,不同簇的样本之间尽可能不同。即:簇内相似度(intra-cluster similarity)高,且簇间相似度(inter-cluster similarity)低。
- 聚类的性能度量分两类:
- 聚类结果与某个参考模型(reference model)进行比较,称作外部指标(external index)。
- 直接考察聚类结果而不利用任何参考模型,称作内部指标(internal index) 。
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 < j } a=|SS|,\ SS=\left \{(\mathbf x_i,\mathbf x_j)|\lambda_i=\lambda_j,\lambda_i^*=\lambda_j^*,i<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 < j } b=|SD|,\ SD=\left \{(\mathbf x_i,\mathbf x_j)|\lambda_i=\lambda_j,\lambda_i^*\neq \lambda_j^*,i<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 < j } c=|DS|,\ SD=\left \{(\mathbf x_i,\mathbf x_j)|\lambda_i\neq\lambda_j,\lambda_i^*=\lambda_j^*,i<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 < j } d=|DD|,\ SD=\left \{(\mathbf x_i,\mathbf x_j)|\lambda_i\neq\lambda_j,\lambda_i^*\neq\lambda_j^*,i<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 < j ) (\mathbf x_i,\mathbf x_j)\ (i<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(m−1)/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+ba⋅a+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(m−1)2(a+d)(7)
上述性能度量的结果值均在 [ 0 , 1 ] [0,1] [0,1]区间,值越大越好。
-
1.2 内部指标
-
对聚类结果的簇划分 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 < j ⩽ ∣ C ∣ d i s t ( x i , x j ) avg(C)=\frac{2}{|C|(|C|-1)}\sum_{1\leqslant i<j\leqslant |C|}^{}dist(\mathbf x_i,\mathbf x_j)\tag{8} avg(C)=∣C∣(∣C∣−1)21⩽i<j⩽∣C∣∑dist(xi,xj)(8)(9) d i a m ( C ) = m a x 1 ⩽ i < j ⩽ ∣ C ∣ d i s t ( x i , x j ) diam(C)=max_{1\leqslant i<j\leqslant |C|}dist(\mathbf x_i,\mathbf x_j)\tag{9} diam(C)=max1⩽i<j⩽∣C∣dist(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)=minxi∈Ci,xj∈Cjdist(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 μ=C1∑1⩽i⩽∣C∣xi。
上述定义的意义为:
- 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中心点间的距离。
-
基于式(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=1∑kj̸=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=1⩽i⩽kmin{j̸=imin(max1⩽l⩽kdiam(Cl)dmin(Ci,Cj))}(13)
显然,DBI的值越小越好,DI的值越大越好。
-
1.3 距离计算
-
对函数 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)
-
当定样本 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=1∑n∣xiu−xju∣p1)(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=∣∣xi−xj∣∣2=u=1∑n∣xiu−xju∣(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=∣∣xi−xj∣∣1=u=1∑n∣xiu−xju∣(20)
当 p → ∞ p→\infty p→∞时则得到切比雪夫距离。
- 闵可夫斯基距离(Minkowski distance)
-
我们常将属性划分为连续属性(continuous attribute)和离散属性(categorical attribute),前者在定义域上有无穷多个取值,后者在定义域上是有限个取值。然而,在讨论距离计算时,属性上是否定义了"序"关系更为重要。例如定义域为 { 1 , 2 , 3 } \left \{1,2,3 \right \} {1,2,3}的离散属性与连续属性的性质更接近一些,能直接在属性上计算距离:"1"与"2"比较接近、与"3"比较远,这样的属性称为有序属性(ordinal attribute);而定义域为{飞机,火车,轮船}这样的离散属性则不能直接在属性上计算距离,称为无序属性(non-ordinal attribute)。闵可夫斯基距离可用于有序属性。
-
对无序属性可采用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=1∑k∣mu,amu,a,i−mu,bmu,b,i∣p(21)
该距离刻画的是:属性取值在各簇上的频率分布之间的差异。 -
将闵可夫斯基距离和VDM结合即可处理混合属性。假定有 n c n_c nc个有序属性, n − n c n-n_c n−nc个无序属性,不失一般性,令有序属性排列在无序属性之前,则:
(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=1∑nc∣xiu−xju∣p+nc+1∑nVDM(xiu−xju))p1(22) -
当样本空间中不同属性的重要性不同时,可使用加权距离(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=(ω1⋅∣xi1−xj1∣p1+...+ωn⋅∣xin−xjn∣p1)(23)
其中权重 ω i ⩾ 0 ( i = 1 , 2 , … , n ) \omega_i \geqslant 0\ (i=1,2,…,n) ωi⩾0 (i=1,2,…,n)表征不同属性的重要性,通常 ∑ i = 1 m ω i = 1 \sum_{i=1}^{m}\omega_i=1 ∑i=1mωi=1。 -
需注意的是,通常我们是基于某种形式的距离来定义相似度度量(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算法
-
给定样本集 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=1∑kx∈Ci∑∣∣x−μi∣∣22(24)
其中 μ i = 1 ∣ C i ∣ ∑ x ∈ C i x \mathbf \mu_i=\frac{1}{|C_i|}\sum_{x\in C_i}\mathbf x μi=∣Ci∣1∑x∈Cix是簇 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 minc∑i=1k∑x∈Ci∣∣x−μi∣∣22
-
k-means的优化目标需要考察 的所有可能的划分,这是一个NP难的问题。实际上k-means 采用贪心策略,通过迭代优化来近似求解。
-
首先假设一组均值向量。
-
然后根据假设的均值向量给出了 D D D的一个划分。
-
再根据这个划分来计算真实的均值向量:
- 如果真实的均值向量等于假设的均值向量,则说明假设正确。根据假设均值向量给出的D的一个划分确实是原问题的解。
- 如果真实的均值向量不等于假设的均值向量,则可以将真实的均值向量作为新的假设均值向量,继续迭代求解。
-
这里的一个关键就是:给定一组假设的均值向量,如何计算出 D D D的一个簇划分?
k均值算法的策略是:样本离哪个簇的均值向量最近,则该样本就划归到那个簇。
-
-
算法步骤:
输入:样本集 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=ϕ (1⩽i⩽k)
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 (1⩽i⩽k)的距离 d j i = ∣ ∣ x i − x j ∣ ∣ 2 d_{ji}=||\mathbf x_i-\mathbf x_j||_2 dji=∣∣xi−xj∣∣2
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^{'}=\frac{1}{|C_i|}\sum_{x\in C_i}\mathbf x μi′=∣Ci∣1∑x∈Cix
11: if μ i ′ ≠ μ i \mathbf \mu_i^{'}\neq \mathbf \mu_i μi′̸=μi then
12: 将当前均值向量 μ i \mathbf \mu_i μi更新为 μ i ′ \mathbf \mu_i^{'} μ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}
-
前面的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=1∑kx∈Ci∑∣x−μi∣2(25) -
手肘法核心思想:
- 随着聚类数k的增大,样本划分会更加精细,每个簇的聚合程度会逐渐提高,那么误差平方和SSE自然会逐渐变小。
- 当k小于真实聚类数时,由于k的增大会大幅增加每个簇的聚合程度,故SSE的下降幅度会很大,而当k到达真实聚类数时,再增加k所得到的聚合程度回报会迅速变小,所以SSE的下降幅度会骤减,然后随着k值的继续增大而趋于平缓,也就是说SSE和k的关系图是一个手肘的形状,而这个肘部对应的k值就是数据的真实聚类数。
-
-
k-means优点:
-
计算复杂度低,为O(N×K×q),其中q为迭代次数。
通常K和q要远远小于N,此时复杂度相当于O(N)。
-
思想简单,容易实现。
-
-
k-means缺点:
-
需要首先确定聚类的数量K。
-
分类结果严重依赖于分类中心的初始化。
通常进行多次k-means,然后选择最优的那次作为最终聚类结果。
-
结果不一定是全局最优的,只能保证局部最优。
-
对噪声敏感。因为簇的中心是取平均,因此聚类簇很远地方的噪音会导致簇的中心点偏移。
-
无法解决不规则形状的聚类。
-
无法处理离散特征,如:国籍、性别等。
-
-
k-means性质:
-
k-means实际上假设数据是呈现球形分布,实际任务中很少有这种情况。
与之相比,GMM使用更加一般的数据表示,即高斯分布。
-
k-means 假设各个簇的先验概率相同,但是各个簇的数据量可能不均匀。
-
k-means 使用欧式距离来衡量样本与各个簇的相似度。这种距离实际上假设数据的各个维度对于相似度的作用是相同的。
-
k-means 中,各个样本点只属于与其相似度最高的那个簇,这实际上是硬分簇。
-
k-means 算法的迭代过程实际上等价于EM 算法。
-
参考