聚类算法

聚类任务

在“无监督学习”中,训练样本的标记信息是未知的,目标是通过对无标记样本的学习揭示数据的内在性质及规律,为进一步的数据分析提供基础。
“无监督学习”任务中,研究最多、应用最广的是“聚类”。

聚类试图将数据集中的样本划分成若干个通常是不相交的子集,每个子集称为一个“簇”。通过这样的划分,每个簇可能对应于一些潜在的概念(比如类别)。

注意:这些概念对于聚类算法而言事先是未知的,聚类过程仅能自动形成"簇"结构,簇所对应的概念语义需由使用者来把握和命名。

形式化说明:假设样本集 D = { x 1 , x 2 , … x m } D=\{x_1,x_2,…x_m\} D={x1,x2,xm}包含m个无标记样本,每个样本 x i = ( x i 1 , x i 2 , … … x i n ) x_i=(x_{i1},x_{i2},……x_{in}) xi=(xi1,xi2,xin)是一个n维特征向量,则聚类算法将样本集D划分为k个不相交的簇 { C l ∣ l = 1 , 2 , … k } \{C_l|l=1,2,…k\} {Cll=1,2,k}其中KaTeX parse error: Expected '}', got 'EOF' at end of input: C_l'∩{C_l=∅ D = ∑ l = 1 k C l D=\displaystyle\sum_{l=1}^kC_l D=l=1kCl,相应的,用 λ j ∈ { 1 , 2 … k } λ_j∈\{1,2…k\} λj{1,2k}表示样本 x j x_j xj的簇标记,即 x j ∈ C λ j x_j∈C_{λ_j} xjCλj
于是,聚类的结果可用包含m个元素的簇标记向量 λ ∈ { λ 1 , λ 2 … λ m } λ∈\{λ_1,λ_2…λ_m\} λ{λ1,λ2λm}表示。
基于不同的策略,人们设计出了多种类型的聚类算法。在讨论聚类算法之前,先讨论聚类算法涉及的两个基本问题:性能度量和距离计算。

性能度量

聚类性能度量也称作聚类的“有效性指标”。与监督学习的性能度量类似,对聚类结果,我们需要通过某种性能度量来评估其好坏
另一方面,如果明确了将要使用的性能度量,则可直接将其作为聚类过程的优化目标,从而更好的得到符合要求的聚类结果。

聚类结果的“簇内相似度高,簇间相似度低”

聚类性能度量大致有两类:
1)将聚类结果与某个”参考模型“进行比较,称为“外部指标”
2)直接考察聚类结果而不利用任何参考模型,称为“内部指标”
对于数据集 D = { x 1 , x 2 … … x m } D=\{x_1,x_2……x_m\} D={x1,x2xm}假设通过聚类给出的簇划分为 C = { C 1 , C 2 … … C k } C=\{C_1,C_2……C_k\} C={C1,C2Ck},参考模型给出的簇划分为 C ∗ = { C 1 ∗ , C 2 ∗ … … C s ∗ } C^*=\{C_1^*,C_2^*……C_s^*\} C={C1,C2Cs},相应的令 λ 与 λ ∗ λ与λ^* λλ分别表示与 C 和 C ∗ C和C^* CC对应的簇标记向量(每个元素的取值是1到k和1 到 s)
我们将样本两两配对考虑,定义
a = ∣ S S ∣ , S S = { ( x i , x j ) ∣ λ i = λ j , λ i ∗ = λ j ∗ , i &lt; j } a=|SS|,SS=\{(x_i,x_j)|λ_i=λ_j,λ_i^*=λ_j^*,i&lt;j\} a=SS,SS={(xi,xj)λi=λj,λi=λj,i<j} (1)
b = ∣ S D ∣ , S D = { ( x i , x j ) ∣ λ i = λ j , λ i ∗ ≠ λ j ∗ , i &lt; j } b=|SD|,SD=\{(x_i,x_j)|λ_i=λ_j,λ_i^*≠λ_j^*,i&lt;j\} b=SD,SD={(xi,xj)λi=λj,λi̸=λj,i<j} (2)
c = ∣ D S ∣ , D S = { ( x i , x j ) ∣ λ i ≠ λ j , λ i ∗ = λ j ∗ , i &lt; j } c=|DS|,DS=\{(x_i,x_j)|λ_i≠λ_j,λ_i^*=λ_j^*,i&lt;j\} c=DS,DS={(xi,xj)λi̸=λj,λi=λj,i<j} (3)
d = ∣ D D ∣ , D D = { ( x i , x j ) ∣ λ i ≠ λ j , λ i ∗ ≠ λ j ∗ , i &lt; j } d=|DD|,DD=\{(x_i,x_j)|λ_i≠λ_j,λ_i^*≠λ_j^*,i&lt;j\} d=DD,DD={(xi,xj)λi̸=λj,λi̸=λj,i<j} (4)
其中集合SS中包含了在C中隶属于相同簇且在 C ∗ C^* C中也隶属于相同的簇的样本集。
集合SD包含了在C中属于相同的簇但在 C ∗ C^* C中隶属于不同簇的样本对,c d依次类推。
由于每一个样本对 ( x i , x j ) (x_i,x_j) (xi,xj)仅能出现在一个集合中,因此有a+b+c+d=m(m-1)/2

由上面的四个式子推出常用的聚类性能度量外部指标:
Jaccard系数
J C = a a + b + c JC=\frac{a}{a+b+c} JC=a+b+ca
FM指数
F M I = s q r t ( a a + b ∗ a a + c ) FMI=sqrt(\frac{a}{a+b}*\frac{a}{a+c}) FMI=sqrt(a+baa+ca)
Rand指数
R I = 2 ( a + d ) m ( m − 1 ) RI=\frac{2(a+d)}{m(m-1)} RI=m(m1)2(a+d)
显然,上述性能度量的结果均在 [ 0 , 1 ] [0,1] [0,1],值越大越好。

内部指标:
考虑聚类结果的簇划分 C = { C 1 , C 2 … … C k } C=\{C_1,C_2……C_k\} C={C1,C2Ck},定义

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)|}\displaystyle\sum_{1≤i≤j≤|C|}dist(x_i,x_j) avg(C)=C(C1)21ijCdist(xi,xj)

d i a m ( C ) = m a x d i s t ( x i , x j ) , 1 ≤ i ≤ j ≤ ∣ C ∣ diam(C)=maxdist(x_i,x_j),1≤i≤j≤|C| diam(C)=maxdist(xi,xj),1ijC

d m i n ( C i , C j ) = m i n d i s t ( x i , x j ) , x i ∈ C i , x j ∈ C j d_{min}(C_i,C_j)=mindist(x_i,x_j),x_i∈C_i,x_j∈C_j dmin(Ci,Cj)=mindist(xi,xj),xiCi,xjCj

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 i s t ( ) dist() dist()用于计算两个样本之间的距离, u u u代表簇C的中心点 u = 1 ∣ C ∣ ∑ 1 ≤ i ≤ ∣ C ∣ x i u=\frac{1}{|C|}\displaystyle\sum_{1≤i≤|C|}x_i u=C11iCxi
显然, a v g ( C ) avg(C) avg(C)对应于簇C内样本间的平均距离, d i a m ( C ) diam(C) diam(C)对于簇C内样本间的最远距离, d m i n ( C i , C j ) d_{min}(C_i,C_j) dmin(Ci,Cj)对应于簇 C i , C j C_i,C_j Ci,Cj最近样本间的距离, d c e n ( C i , C j ) d_{cen}(C_i,C_j) dcen(Ci,Cj)对应于 C i , C j C_i,C_j Ci,Cj中心点间的距离。

DB指数:

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

Dunn指数:

D I = m i n 1 ≤ i ≤ k { m i n i ≠ j ( d m i n ( C i , C j ) m a x 1 ≤ l ≤ k d i a m ( C l ) ) } DI=min_{1≤i≤k}\{min_{i≠j}(\frac{d_{min}(C_i,C_j)}{max_{1≤l≤k}diam(C_l)})\} DI=min1ik{mini̸=j(max1lkdiam(Cl)dmin(Ci,Cj))}

显然DBI越小越好,Dunn越大越好。

距离计算

给定样本 x i = ( x i 1 , x i 2 … … x i n ) x_i=(x_{i1},x_{i2}……x_{in}) xi=(xi1,xi2xin) x j = ( x j 1 , x j 2 … … x j n ) x_j=(x_{j1},x_{j2}……x_{jn}) xj=(xj1,xj2xjn),最常用的是“闵可夫斯基距离”
d i s t m k ( x i , x j ) = ( ∑ u = 1 n ∣ x i u − x j u ∣ p ) 1 p dist_{mk}(x_i,x_j)=(\displaystyle\sum_{u=1}^{n}|x_{iu}-{x_{ju}|^p})^{\frac{1}{p}} distmk(xi,xj)=(u=1nxiuxjup)p1

p=2 时是欧氏距离,p=1时是曼哈顿距离

在讨论距离计算时,属性上是否定义了“序”关系十分重要,例如定义域为 { 1 , 2 , 3 } \{1,2,3\} {1,2,3}的离散属性与连续属性的性质更接近一些,能直接在属性值上计算距离:1与2比较接近,与3比较远,这样的属性称为“有序属性

而定义域为 { 飞 机 , 火 车 , 轮 船 } \{飞机,火车,轮船\} {}这样的离散属性则不能直接在属性值上计算距离,称为“无序属性

显然闵可夫斯基距离可用于计算有序属性

对于无序属性可采用VDM,令 m u , a m_{u,a} mu,a表示在属性u上取值为a的样本数, m u , a , i m_{u,a,i} mu,a,i表示在第i个样本簇中在属性u上取值为a的样本数,k为样本簇数,则属性u上两个离散值a与b之间的VDM的距离为

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)=\displaystyle\sum_{i=1}^{k}|\frac{m_{u,a,i}}{m_{u,a}}-\frac{m_{u,b,i}}{m_{u,b}}|^p VDMp(a,b)=i=1kmu,amu,a,imu,bmu,b,ip

于是可将闵可夫斯基距离和VDM距离结合即可处理混合属性。假设有 n c n_c nc个有序属性, n − n c n-n_c nnc个无序属性,则

M i n k o v D M p ( x i , x j ) = ( ∑ u = 1 n c ∣ x i u − x j u ∣ p + ∑ u = n c + 1 n V D M p ( x i u − x j u ) ) 1 p MinkovDM_p(x_i,x_j)=(\displaystyle\sum_{u=1}^{n_c}|x_{iu}-x_{ju}|^p+\displaystyle\sum_{u=n_c+1}^{n}VDM_p(x_{iu}-x_{ju}))^{\frac{1}{p}} MinkovDMp(xi,xj)=(u=1ncxiuxjup+u=nc+1nVDMp(xiuxju))p1

当样本空间中的不同属性的重要性不同时,可使用“加权距离”,以加权闵可夫斯基距离为例

d i s t w m k ( x i , x j ) = ( w 1 ∣ x i 1 − x j 1 ∣ p + … … + w n ∣ x i n − x j n ∣ p ) dist_{wmk}(x_i,x_j)=(w_1|x_{i1}-x_{j1}|^p+……+w_n|x_{in}-x_{jn}|^p) distwmk(xi,xj)=(w1xi1xj1p++wnxinxjnp)

其中, w i ≥ 0 ( i = 1 , 2 … … n ) w_i≥0(i=1,2……n) wi0(i=1,2n)表示不同属性的重要性,通常 ∑ i = 1 n w i = 1 \displaystyle\sum_{i=1}^{n}w_i=1 i=1nwi=1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值