《机器学习》阅读心得——九、聚类

来源:互联网 发布:知所然又知其所以然 编辑:程序博客网 时间:2024/05/22 10:43

9.1 聚类任务

  在“无监督学习”中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的分析提供基础。这种学习任务中应用最广的是“聚类”。
  聚类试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集称为一个“簇”。通过这样的划分,每个簇可能对应于一些潜在的概念(类别)。聚类算法对这些概念是未知的,聚类仅能自动形成簇结构,簇所对应的概念需要由使用者来把握。聚类既能作为一个单独过程,用于找寻数据内在的分布结构,也可作为分类等其他学习任务的前驱过程。
  下文讨论聚类的两个基本问题:性能度量和距离计算。

9.2 性能度量

  聚类性能指标也称为“有效性指标”。直观上,好的聚类结果应当是同一簇的样本尽可能彼此相似,不同簇的样本尽可能不同。即,聚类结果的“簇内相似度”高且“簇间相似度”低。聚类性能指标有两类,一类是将聚类结果与某个“参考模型”进行比较,称为“外部指标”,一类是直接考察聚类结果而不利用任何参考模型,称为“内部指标”。
  对数据集D={x1,x2,...,xm},假定通过聚类给出的簇划分为C={C1,C2,..,Ck},参考模型给出的簇划分为C={C1,C2,...,Cs}。相应的,令λλ分别表示CC对应的簇标记向量。我们将样本两两配对考虑,定义

a=|SS|,SS={(xi,xj)|λi=λj,λi=λj,i<j}b=|SD|,SD={(xi,xj)|λi=λj,λiλj,i<j}c=|DS|,DS={(xi,xj)|λiλj,λi=λj,i<j}d=|DD|,DD={(xi,xj)|λiλj,λiλj,i<j}(9.1)(9.2)(9.3)(9.4)

  由于每个样本对仅能出现在一个集合中,因此有a+b+c+d=m(m1)/2成立。有以上各式可导出以下几个指标
  1、Jaccard系数(简称JC)
JC=aa+b+c(9.5)

  2、FM指数(简称FMI)
FMI=aa+baa+c(9.6)

  3、Rand指数(简称RI)
RI=2(a+d)m(m1)(9.7)

上述性能度量的结果值均在[0,1]区间,值越大越好。
  考虑聚类结果的簇划分C={C1,C2,...,Ck},定义
avg(C)diam(C)dmin(Ci,Cj)dcen(Ci,Cj)====2|C|(|C|1)1i<j|C|dist(xi,yi)max1i<j|C|dist(xi,xj)minxiCi,xjCjdist(xi,xj)dist(μi,μj)(9.8)(9.9)(9.10)(9.11)

其中,dist(,)用于计算两个样本之间的距离;μ代表簇C的中心点。显然有avg(C)对应于簇C内样本间的平均距离,diam(C)对应于簇C内样本的最远距离,dmin(Ci,Cj)对应于簇Ci与簇Cj最近样本间的距离,dcen(Ci,Cj)对应于簇Ci与簇Cj中心点间的距离。基于式(9.8-9.11)可得到以下性能度量内部指数
  1、DB指数(简称DBI)
DBI=1ki=1kmaxj1(avg(Ci)+avg(Cj)dcen(μi,μj)(9.12)

  2、Dunn指数(简称DI)
DI=min1ik{minji(dmin(Ci,Cj)max1lkdiam(Cl))}(9.13)

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

9.3 距离计算

  对函数dist(,),若它是一个距离度量,则应当满足非负性、对称性、同一性、直递性(三角形,两边之和大于第三边)等性质。给定样本xi=(xi1,xi2,...,xin)与样本xj=(xj1,xj2,..,xjn),最常用的是“闵可夫斯基距离”,即

distmk(xi,xj)=(μ=1n|xiuxju|p)1p(9.14)

  p=2时,闵可夫斯基距离即欧氏距离
disted(xi,xj)=||xixj||2=μ=1n|xiuxju|2(9.15)

  p=1时,闵可夫斯基距离即曼哈顿距离
distman(xi,xj)=||xixj||1=u=1n|xiuxju|(9.16)

  在讨论距离计算时,重要的是属性上是否定义了“序”关系。能够直接计算距离的是有序属性,不能直接计算距离的是无序属性。闵可夫斯基距离可用于计算有序属性。
  对无序属性可采用VDM,令mu,a表示在属性u上取值为a的样本数,mu,a,i表示在第i个样本簇中在属性u上取值为a的样本数,k为样本簇数,则属性u上两个离散值a与b之间的VDM距离为
VDMp(a,b)=i=1k|mu,a,imu,amu,b,imu,b|(9.17)

  将闵可夫斯基距离和VDM距离结合可处理混合属性。假定有nc个有序属性,nnc个无序属性,不失一般性,令有序属性排列在无序属性之前,则
MinkovDMp(xi,xj)=(u=1nc|xiuxju|p+u=nc+1nVDMp(xiu,xju))1p(9.18)

  通常我们是基于某种形式的距离来定义“相似度度量”,距离越大,相似度越小。但相似度度量的距离不一定满足距离度量的所有性质,比如直递性。这样的距离称为“非度量距离”。

9.4 原型聚类

  原型聚类也被称为“基于原型的聚类”,这一类算法假设聚类结构能通过一组原型刻画,在现实聚类任务中很常用。通常,算法先对原型进行初始化,然后对原型进行迭代更新求解。下面是几种比较著名的原型聚类算法

9.4.1 k均值算法

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

E=i=1kxCi||xμi||22(9.19)

其中μi=1|Ci|xCix是簇Ci的均值向量。上式在一定程度上刻画了簇内样本围绕簇均值向量的紧密程度,E值越小则簇内样本相似度越高。找到上式的最优解需要考察样本集D的所有可能的簇划分,这是一个NP难问题。因此,k均值算法采用了贪心策略,通过迭代优化来近似求解。在迭代过程中,若迭代更新后聚类结果保持不变,则返回结果。

9.4.2 学习向量量化

  与k均值算法类似,“学习向量量化”(Learning Vector Quantization)也是试图找到一组原型向量来刻画聚类结构。但与一般聚类算法不同,LVQ假设数据样本带有类别标记,学习过程利用这些监督信息来辅助聚类。
  给定样本集D={(x1,y1),(x2,y2),...,(xn,yn)},每个样本xj是由n个属性描述的特征向量(xj1,xj2,...,xjn).LVQ的目标是学得一组n维原型向量{p1,p2,...,pq},每个原型向量代表一个聚类簇,簇标记tiy
  在学的一组原型向量{p1,p2,..,pq}后,即可实现对样本空间的簇划分。对任意样本x,它将被划入与其距离最近的原型向量多代表的簇中。换言之,每个原型向量pi定义了与之相应的一个区域Ri,该区域中每个样本与pi的距离不大于它与其他原型向量pi的距离。即

Ri={xχ|||xpi||2||xpi||2,ii(9.20)

由此形成了对样本空间χ的簇划分{R1,R2,...,Rq},该划分通常称为“Voronoi”剖分。

9.4.3 高斯混合聚类

  与K均值、LVQ用原型向量来刻画聚类结构不同,高斯混合(Mixture of Gaussian)聚类采用概率模型来表达聚类原型。多元高斯分布的定义是,对n维样本空间χ中的随机向量x,若x服从高斯分布,其概率分布密度函数为

p(x)=1(2π)n2||12e12(xμ)T1(xμ)(9.21)

其中μ是n维均值向量,n×n的协方差矩阵。由上式可以看出,高斯分布完全由均值向量μ和协方差矩阵这两个参数确定。下文中将高斯分布的概率密度函数记为p(x|μ,)
  我们可定义高斯混合分布
pm(x)=i=1kαip(x|μi,i)(9.22)

该分布由k个高斯混合分布组成,每个混合成分对应一个高斯分布。从原型聚类的角度看,高斯混合聚类是采用概率模型(高斯分布)对原型进行刻画,簇划分则由原型对应后验概率确定。

9.5 密度聚类

  密度聚类也被称为“基于密度的聚类”,这类算法假定聚类结构能通过样本分布的紧密程度确定。通常情况下,密度聚类算法从样本密度的角度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果。
  DBSCAN是一种著名的密度聚类算法,它基于一组“领域”参数来刻画样本分布的紧密程度。给定数据集D={x1,x2,..,xn},该算法给出了以下概念:
  1. ε邻域:对xjD,其 ε邻域包含样本集D中与xj的距离不大于ε的样本,即Nε(xj)={xiD|dist(xi,xj)ε};
  2. 核心对象:若xjε邻域至少包含MinPts个样本,即|Nε(xj)|MinPts,则xj是一个核心对象;
  3. 密度直达:若xj位于xiε邻域中,且xi是核心对象,则称xjxi密度直达;
  4. 密度可达:对xixj,若存在样本序列p1,p2,..,pn,其中p1=xi,pn=xjpi+1pi密度直达,则称xjxi密度可达。
  5. 密度相连:对xixj,若存在xk使得xixj均由xk密度可达,则称xixj密度相连。




        图1 DBSCAN定义的基本概念(MinPts=3): 实线是ε邻域,m和o是核心对象,p/q由m密度直达,s由o密度可达,s与r密度相连。
  基于这些概念,DBSCAN将簇定义为:由密度可达关系导出的最大的密度相连样本集合。在计算时,该算法随机选取数据集中的一个核心对象,生成聚类簇后,将簇中包含的核心对象从数据集中去除,再从更新后的数据集中随机选取一个核心对象来生成聚类簇,直到没有可用的核心对象。

9.6 层次聚类

  层次聚类试图在不同层次对数据集进行划分,从而形成树形的聚类结构。数据集的划分可使用“自底向上”的聚合策略,也可以采用“自顶向下”的分拆策略。
  AGNES是一种采用自底向上的聚合策略的层次聚类算法。它先将数据集中的每个样本都看做一个初始聚类簇,然后再算法运行的每一步中找出距离最近的两个聚类簇进行合并,该过程不断重复,直至达到预设的聚类簇个数。当聚类簇距离由最小距离/最大距离/平均距离计算时,AGNES算法被相应的称为“单连接”、“全连接”或“均连接”。