聚类 (一)

聚类(Clustering)

定义

  聚类试图将数据中的样本划分为若干个通常是不相交的子集,每个子集称为一个“簇”(cluster)。通过这样的划分,每个簇可能对应于一些潜在的概念(类别),如“浅色瓜”“深色瓜”,“有籽瓜”“无籽瓜”,甚至“本地瓜”“外地瓜”等;需要说明的是,这类概念对聚类算法而言事先是未知的,聚类过程仅能自动形成簇结构,簇所对应的概念语义需由使用者来把握和命名。
  聚类既能作为一个单独过程,用于寻找数据内在的分布结构,也可作为分类等其他学习任务的先驱过程。例如,在一些商业应用中需对新用户的类型进行判别,但定义“用户类型”对商家来说却可能不太容易,此时往往可先对用户数据进行聚类,根据聚类结果将每个簇定义为一个类,然后再基于这些类训练分类模型,用于判别新用户的类型。

性能度量

  聚类性能度量亦称聚类“有效性指标”(validity index)。与监督学习中的性能度量作用相似,对聚类结果,我们需要通过某种性能度量来评估其好坏;另一方面,若明确了最终将要使用的性能度量,则可直接将其作为聚类过程的优化目标,从而更好地得到符合要求的聚类结果。
  聚类性能度量大致有两类,一类是将聚类结果与某个“参考模型”(reference model)进行比较,成为“外部指标”(external index);另一类是直接考察聚类结果而不利用任何参考模型,称为“内部指标”(internal index)。

定义

  a=|SS|()a=|SS|(样本在,结果在)
  b=|SD|()b=|SD|(样本在,结果不在)
  c=|DS|()c=|DS|(样本不在,结果在)
  d=|DD|()d=|DD|(样本不在,结果不在)
  
  下面是一些常用的聚类性能度量外部指标:

  • Jaccard系数(Jaccard Coefficient,简称JC)

    JC=aa+b+cJC=aa+b+c
  • FM指数(Fowlkes and Mallows Index,简称FMI)

    FMI=aa+baa+cFMI=aa+b⋅aa+c
  • Rand指数(Rand Index,简称RI)

    RI=2(a+d)m(m1)RI=2(a+d)m(m−1)

  显然上述性能度量的结果值均在[0, 1]之间,值越大说明结果越好。

距离计算

  给定样本xi=(xi1;xi2;...;xin)xi=(xi1;xi2;...;xin)xj=(xj1;xj2;...;xjn)xj=(xj1;xj2;...;xjn),最常用的是“闵可夫斯基距离”(Minkowski distance)
  

distmk(xi,xj)=(u=1n|xiuxju|p)1pdistmk(xi,xj)=(∑u=1n|xiu−xju|p)1p

   当p=1p=1时,闵可夫斯基距离即曼哈顿距离(Manhattan distance)
  
distman(xi,xj)=||xixj||1=u=1n|xiuxju|distman(xi,xj)=||xi−xj||1=∑u=1n|xiu−xju|

   当p=2p=2时,闵可夫斯基距离即欧式距离(Euclidean distance)
  
disted(xi,xj)=||xixj||2=u=1n|xiuxju|2disted(xi,xj)=||xi−xj||2=∑u=1n|xiu−xju|2

   另外当p>p−>∞时,得到切比雪夫距离。
原型聚类
k均值算法(k-means)

  给定样本集D={x1,x2,...,xm}D={x1,x2,...,xm},“k均值”算法针对聚类所得簇划分C={C1,C2,...,Ck}C={C1,C2,...,Ck}最小化平方误差
  

E=i=1kxCi||xui||22E=∑i=1k∑x∈Ci||x−ui||22

  
  其中ui=1|Ci|xCixui=1|Ci|∑x∈Cix是簇CiCi的均值向量,直观来看,式子在一定程度上刻画了簇内样本围绕簇均值向量的紧密程度,EE值越小则簇内样本相似度越高。
  


  这是包含了30个西瓜的西瓜数据集。
  给出k均值算法的伪代码:
  

  给出k=3时候k-means结果:
  
/

学习向量量化(Learning Vector Quantization)

  与k均值算法类似,“学习向量量化”(LVQ)也是试图找到一组原型向量来刻画聚类结构,但与一般聚类算法不同的是,LVQ假设数据样本带有类别标记,学习过程利用样本的这些监督的信息来辅助聚类。
  给定样本集D={(x1,y1),(x2,y2),...,(xm,ym)}D={(x1,y1),(x2,y2),...,(xm,ym)},每个样本xjxj是由nn个属性描述的特征向量(xj1;xj2;...;xjn),yjY是样本xjxj的类别标记。LVQ的目标是学得一组nn维原型向量{p1,p2,...,pq},每个原型向量代表一个聚类簇,簇标记为tiYti∈Y
  给出学习向量量化的伪代码:
  

/

  显然LVQ关键代码是第6-10行,即如何更新原型向量。直观上看,对样本xjxj,若最近的原型向量pipi∗xjxj的标记相同,则令pipi∗xjxj方向靠拢:
  
p=pi+η(xjpi)p′=pi∗+η⋅(xj−pi∗)

  此时pp′xjxj之间的距离为:
  
||pxj||2=(1η)||pixj||2||p′−xj||2=(1−η)⋅||pi∗−xj||2

  令学习率η(0,1)η∈(0,1),则原型向量pipi∗在更新为pp′之后将更接近xjxj
  给出q=5q=5时候LVQ结果:
  
/

高斯混合聚类

  与k均值、LVQ用原型向量来刻画聚类结构不同,高斯混合(Mixture-of-Gaussian)聚类采用概率模型来表达聚类原型。
  给出高斯混合聚类的伪代码:
  

/

  给出k=3k=3时候高斯混合聚类结果:
  
/

  

密度聚类
定义

  密度聚类亦称为“基于密度的聚类”(density-based clustering),此类算法假设聚类结构能够通过样本分布的紧密程度确定。通常情况下,密度聚类算法从样本密度的角度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果。

DBSCAN聚类算法

  DBSCAN是一种著名的密度聚类算法,全称为”Density-Based Spatial Clustering of Applications with Noise”,它基于一组“邻域”(neighborhood)参数(ϵϵ, MinPtsMinPts)来刻画样本分布的紧密程度。给定数据集D={x1,x2,...,xm}D={x1,x2,...,xm},定义下面几个概念:

  • ϵϵ-邻域:对xjDxj∈D,其ϵϵ-邻域包含样本集DD中与xj的距离不大于ϵϵ的样本,即Nϵ(xj)={xiD|dist(xi,xj)ϵ}Nϵ(xj)={xi∈D|dist(xi,xj)≤ϵ}
  • 核心对象(core object):若xjxjϵϵ-邻域至少包含MinPtsMinPts个样本,即|Nϵ(xj)|MinPts|Nϵ(xj)|≥MinPts,则xjxj是一个核心对象;
  • 密度直达(directly density-reachable):若xjxj位于xixiϵϵ-邻域中,且xixi是核心对象,则称xjxjxixi密度直达;
  • 密度可达(density-connected):对xixixjxj,若存在样本序列p1,p2,...,pnp1,p2,...,pn,其中p1=xi,pn=xjp1=xi,pn=xjpi+1pi+1pipi密度直达,则称xjxjxixi密度可达;
  • 密度相连(density-connected):对xixixjxj,若存在xkxk使得xixixjxj均有xkxk密度可达,则称xixixjxj密度相连。
      
    /

  上图为DBSN定义的基本概念(MinPts=3MinPts=3):虚线显示出ϵϵ-邻域,x1x1是核心对象,x2x2由密度x1x1直达,x3x3x1x1密度可达,x3x3x4x4密度相连。
  基于这些概念,DBSCAN将“簇”定义为:有密度可达关系导出的最大的密度相连样本集合。
  给出DBSCAN算法的伪代码:
  

/

  给出DBSCAN算法聚类结果:
  
/

  上图为(ϵ=0.11,MinPts=5)(ϵ=0.11,MinPts=5)生成聚类簇的先后情况。核心对象,非核心对象,噪声样本分别用实心圆,空心圆,星号表示,红色虚线框显示出簇划分。

层次聚类

  层次聚类(hierarchical clustering)试图在不同层次对数据集进行划分,从而形成树形聚类结构,数据集的划分可采用“自底向上”的聚合策略,也可采用“自顶向下”的分拆策略。

AGNES(Hausdorff distance)

  AGNES是一种采用自底向上聚合策略的层次聚类算法。它先将数据集中的每个样本看作一个初始聚类簇,然后在算法运行的每一步中找出距离最近的两个聚类簇进行合并,该过程不断重复,直至达到预设的聚类簇个数。给定聚类簇CiCiCjCj,可通过下面的式子来计算距离:
  

dmin(Ci,Cj)=minxCi,zCjdist(x,z)最小距离:dmin(Ci,Cj)=minx∈Ci,z∈Cjdist(x,z)
dmax(Ci,Cj)=maxxCi,zCjdist(x,z)最大距离:dmax(Ci,Cj)=maxx∈Ci,z∈Cjdist(x,z)
davg(Ci,Cj)=1|Ci||Cj|xCizCjdist(x,z)平均距离davg(Ci,Cj)=1|Ci||Cj|∑x∈Ci∑z∈Cjdist(x,z)

  当聚类簇距离由dmindmindmaxdmaxdavgdavg计算时AGNES算法被相应称为“单链接”(single-linkage)、“全链接”(complete-linkage)或“均链接”(average-linkage)算法。
  下面是AGNES算法的示意图:
  

/

  给出AGNES算法的伪代码:
  
/

  给出AGNES算法的聚类结果:
  
/

注:博客所有资料都摘自周志华老师的西瓜书
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值