Skip to content

9 聚类

  • 聚类是一种经典的无监督学习方法,无监督学习的目标是通过对无标记训练样本的学习,发掘和揭示数据集本身潜在的结构与规律,即不依赖于训练数据集的类标记信息。聚类则是试图将数据集的样本划分为若干个互不相交的类簇,从而每个簇对应一个潜在的类别。

  • 形式化的说,假定样本集D={x1,x2,,xn}包含m个无标记样本, 每个样本都是一个n维特征向量,则聚类算法会将样本集D划分为k个不相交的簇{Cll[1,k]}。我们用λj{1,2,,k}来表示样本的簇标记(Cluster Label),即xjCl。于是,聚类的结果可用包含m 个元素的簇标记向量λ=(λ1;λ2,,λn)

  • 聚类直观上来说是将相似的样本聚在一起,从而形成一个类簇(Cluster)。那首先的问题是如何来度量相似性(Similarity Measure)呢?这便是距离度量,在生活中我们说差别小则相似,对应到多维样本,每个样本可以对应于高维空间中的一个数据点,若它们的距离相近,我们便可以称它们相似。那接着如何来评价聚类结果的好坏呢?这便是性能度量,性能度量为评价聚类结果的好坏提供了一系列有效性指标。

9.1 无监督学习和聚类

无监督学习

无监督学习也称为无监督机器学习,它使用机器学习算法来分析未标记的数据集并进行聚类。这些算法无需人工干预,即可发现隐藏的模式或数据分组。

无监督学习的应用

机器学习技术已成为改善产品用户体验和测试系统以保证质量的常用方法。 与手动观察相比,无监督学习提供了查看数据的探索性路径,使企业能够更快地识别大量数据中的模式。 在现实世界中,无监督学习的一些最常见应用如下:

  • **新闻栏目:**Google 新闻使用无监督学习,对各种在线新闻媒体关于同一故事的文章进行分类。 例如,可以将总统选举的结果归类到“美国”新闻的标签下。
  • **计算机视觉:**无监督学习算法用于视觉感知任务,例如物体识别。
  • **医学成像:**无监督机器学习为医学成像设备提供基本功能,例如图像检测、分类和分割,用于放射学和病理学,可以快速准确地诊断患者病情。
  • **异常检测:**无监督学习模型可以梳理大量数据,发现数据集中的非典型数据点。 这些异常现象可以提高人们对故障设备、人为错误或安全违规的认知。
  • **客户角色:**通过定义客户角色,可以更轻松地了解共同特征和商业客户的购买习惯。 无监督学习使企业能够建立更完善的买家角色档案,让组织能够更恰当地调整自己的产品讯息传达方式。
  • **推荐引擎:**无监督学习可使用过去的购买行为数据,帮助发现相关数据趋势,根据这些趋势可制定出更有效的交叉销售策略。 这用于在线上零售商的结账流程中向客户提供相关的附加建议。

无监督、 有监督与半监督学习的对比

人们经常会将无监督学习和有监督学习一起讨论。 与无监督学习算法不同的是,有监督学习算法使用标记数据。 有监督学习可以通过这些数据来预测未来的结果,或是根据试图解决的回归或分类问题,将数据分配到特定类别。 虽然有监督学习算法往往比无监督学习模型更准确,但有监督学习事先需要人工干预才能恰当地标记数据。 而这些标记数据集能够让有监督学习算法避免计算复杂性,因为不需要大型训练集就能产生预期结果。 常见的回归和分类技术包括线性和逻辑回归、朴素贝叶斯、KNN 算法和随机森林。

如果给定输入数据中只有一部分被标记,就会进行半监督学习。 无监督学习和半监督学习可能是更具吸引力的替代方案,因为依赖领域专业知识为有监督学习恰当标记数据可能既耗时又成本高昂。

可以参见Supervised vs. unsupervised learning: What's the difference? | IBM

无监督学习面临的难题

虽然无监督学习有很多好处,但在允许机器学习模型无任何人为干预的情况下执行时,可能会遇到一些难题。 其中的一些难题包括:

  • 大量训练数据导致的计算复杂性
  • 训练时间更长
  • 结果不准确的风险较高
  • 需要人工干预来验证输出变量
  • 数据聚类的基础缺乏透明度

9.2 距离度量

距离度量的基本性质

对于给定的两个样本点xixj,假设它们的特征分别为xi1,xi2,,xipxj1,xj2,,xjp,则这两个样本点之间的距禽度量可以通过距离函数d(xi,xj)来度量。距离度量是定义在特征空间中的两个样本点之间的距离,是一个实数,满足下面的性质:

  • 非负性:d(xi,xj)0

  • 同一性:d(xi,xj)=0当且仅当xi=xj

  • 对称性:d(xi,xj)=d(xj,xi)

  • 直递性(三角不等式):d(xi,xj)d(xi,xk)+d(xk,xj)

闵可夫斯基距离

给定样本空间X中的两个样本点xixj,它们的特征分别为xi1,xi2,,xipxj1,xj2,,xjp,则这两个样本点之间的闵可夫斯基距离定义为

dmk(xi,xj)=(u=1p|xiuxju|p)1p

对于p1时,闵可夫斯基距离满足距离度量的基本性质。

上式即为xixjLp范数xixjp

  • p=1时,称为曼哈顿距离(Manhattan distance);
dman(xi,xj)=u=1p|xiuxju|
  • p=2时,称为欧氏距离(Euclidean distance);
ded(xi,xj)=u=1p(xiuxju)2
  • p=时,称为切比雪夫距离(Chebyshev distance)。
dch(xi,xj)=maxu|xiuxju|

计算limna1n+a2n++aknn,其中ai>0(i=1,2,,k)

本题考夹逼定理的运用

A=max1ik{ai},则有

Ann<a1n+a2n++aknn<kAnnAnn=A,limnkn=1

由三明治法则可得

limna1n+a2n++aknn=max1ik{ai}=A

数据属性和距离

  • 我们常常将属性划分为两种类型:连续属性(数值属性,numerical attribute)和离散属性(列名属性,nominal attribute)。

  • 对于连续值的属性,一般都可以被学习器所用,有时会根据具体的情形作相应的预处理,例如:归一化等;而对于离散值的属性,需要作下面进一步的处理:

    (有序属性,ordinal attribute)若属性值之间存在序关系,则可以将其转化为连续值,例如:身高属性“高”“中等”“矮”,可转化为{1,0。5,0}。 (无序属性,non-ordinal attribute)若属性值之间不存在序关系,则通常将其转化为向量的形式,例如:性别属性“男”“女”,可转化为{(1,0),(0,1)}。

  • 在进行距离度量时,易知连续属性和存在序关系的离散属性都可以直接参与计算,因为它们都可以反映一种程度,我们称其为“有序属性”。这时,可以使用闵可夫斯基距离直接计算。

  • 而对于无序属性,我们一般采用VDM(Value Difference Metric)进行距离的计算。

  • mu,a表示在属性u上取值为a的样本数,mu,a,i表示在第i个样本簇中在属性u上取值为a的样本数,k为样本簇数,则属性u 上两个离散值ab之间的VDM距离为

    VDMp(a,b)=i=1k|mu,a,imu,amu,b,imu,b|p

    样本类别已知时k通常设置为类别数。

  • 将闵可夫斯基聚类和VDM结合即可处理混合属性。

  • 假定有nc个有序属性、nnc个无序属性,不失一般性,令有序属性排列在无序属性之前,则

    MinkovDMp(xxi,xxj)=(u=1nc|xiuxju|p+u=nc+1nVDMp(xiu,xju))1p
  • 当样本空间中不同属性的重要性不同时,可使用加权距离(weighted distance)。 以加权闵可夫斯基距离为例:

    distwmk(xxi,xxj)=(w1|xiuxju|p++wn|xnuxnu|p)1p

    其中权重wi0(i=1,2,n)表征不同属性的重要性,通常i=1nwi=1

  • 通常我们是基于某种形式的距离来定义相似度度量(similarity measure),距离越大,相似度越小。

  • 相似度度量的距离未必一定要满足距离度量的所有基本性质,尤其是直递性。

  • 不满足直递性的距离称为非度量距离(non-metric distance)。

  • 在现实任务中,也可基于数据样本来确定合适的距离计算式,这可通过距离度量学习(distance metric learning)来实现。

9.3 性能度量

  • 聚类性能度量亦称聚类有效性指标(validity index);与监督学习中的性能度量作用类似。

  • 对聚类结果,我们需通过某种性能度量来评估其好坏。

  • 明确最终将要使用的性能度量,则可直接将其作为聚类过程的优化目标。

  • 同一簇的样本尽可能彼此相似,不同簇的样本尽可能不同。 聚类结果的簇内相似度(intra-cluster similarity)高且簇间相似度(inter-cluster similarity)低。

  • 聚类性能度量大致有两类。

    1. 将聚类结果与某个参考模型(reference model)进行比较,称为外部指标(external index)。
      • 可以将领域专家给出的划分结果作为参考模型。
    2. 直接考察聚类结果而不用任何参考模型,称为内部指标(internal index)。
  • 对数据集D={xx1,xx2,,xxm},假定通过聚类给出的簇划分为C={C1,C2,,Ck},参考模型给出的簇划分为C={C1,C2,,Cs}

    • 通常ks

    • λλλλ分别表示与CC对应的簇标记向量。

    • 将样本两两配对考虑,定义

    a=|SS|,SS={(xxi,xxj)|λi=λj,λi=λj,i<j},b=|SD|,SD={(xxi,xxj)|λi=λj,λiλj,i<j},c=|DS|,DS={(xxi,xxj)|λiλj,λi=λj,i<j},d=|DD|,DD={(xxi,xxj)|λiλj,λiλj,i<j},

其中集合SS包含了在C中隶属于相同簇且在C中也隶属于相同簇的样本对,集合SD包含了在C中隶属于相同簇但在C中隶属于不同簇的样本对,由于每个样本对(xxixxj)(i<j)仅能出现在一个集合中,因此有a+b+c+d=m(m1)/2成立。

  • 基于上式可以导出常用的聚类性能度量外部指标:

    • Jaccard系数(Jaccard Coefficient,简称JC)
    JC=aa+b+c
    • FM指数(Folkeds and Mallows Index,简称FMI)
    FMI=aa+b·aa+c
    • Rand指数(Rand Index,简称RI)
    RI=2(a+d)m(m1)

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

  • 考虑聚类结果的簇划分为C={C1,C2,,Ck},定义
avg(C)=2|C|(|C|1)1i<j|C|dist(xxi,xxj),diam(C)=max1i<j|C|dist(xxi,xxj),dmin(Ci,Cj)=minxxiCi,xxjCjdist(xxi,xxj),dcen(Ci,Cj)=dist(μμi,μμj),

dist(·,·)用于计算两个样本之间的距离,距离越大则样本的相似度越低; μμ代表簇C的中心点μμ=1|C|1i|C|xxi

  • avg(C)对应于簇C内样本间的平均距离。

  • diam(C)对应于簇C内样本间的最远距离。

  • dmin(Ci,Cj)对应于簇Ci与簇Cj最近样本间的距离。

  • dcen(Ci,Cj)对应于簇Ci与簇Cj中心点间的距离。


  • 基于上式可导出常用的聚类性能度量的内部指标:

    • DB指数(Davies-Bouldin Index,简称DBI)
    DBI=1ki=1kmaxji(avg(Ci)+avg(Cj)dcen(Ci,Cj))
    • Dunn指数(Dunn Index,简称DI)
    DI=min1ik{minji(dmin(Ci,Cj)max1lkdiam(Cl))}

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

9.4 原型聚类

  • 原型聚类亦称基于原型的聚类(prototype-based clustering), 此类算法假设聚类结构能通过一组原型刻画.
  • 原型是指样本空间中具有代表性的点.
  • 通常算法先对原型进行初始化, 然后对原型进行迭代更新求解.
  • 采用不同的原型表示, 不同的求解方式, 将产生不同的算法.

9.4.1.k均值算法

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

    E=i=1kxCi||xxμμi||22

    其中μμi=1|Ci|xxCixx是簇Ci的均值向量.

    • 上式在一定程度上刻画了簇内样本围绕簇均值向量的紧密程度, E值越小则簇内样本相似度越高.
  • 最小化上式要找到它的最优解需考察样本集D所有可能的簇划分, 这是一个NP难问题.

  • k 均值算法采用了贪心策略, 通过迭代优化来近似求解上式.

  • k 均值算法:

  • 为避免运行时间过长, 通常设置一个最大运行轮数或最小调整幅度阈值, 若达到最大轮数或调整幅度小于阈值, 则停止运行.

9.4.2.学习向量量化

  • k均值算法类似, 学习向量量化(Learning Vector Quantization, 简称LVQ)也是试图找到一组原型向量来刻画聚类结构.

  • 与一般聚类算法不同的是, LVQ假设数据样本带有类别标记, 学习过程利用样本的这些监督信息来辅助聚类.

  • LVQ可看作通过聚类来形成类别子类结构, 每个子类对应一个聚类簇.

  • 给定样本集D={(xx1,y1),(xx2,y2),...,(xxm,ym)}, 每个样本xxj是由n个属性描述的特征向量(xj1;xj2;...;xjn), yjY是样本xxj的类别标记.

  • LVQ的目标是学得一组n维原型向量{pp1,pp2,...,ppq}, 每个原型向量代表一个聚类簇, 簇标记tiY.

  • LVQ算法描述:

    • LVQ算法对原型向量进行初始化, 例如对第q个簇可从类别标记为tq的样本中随机选取一个作为原型向量.
  • 在每一轮迭代中, 算法随机选取一个有标记训练样本, 找出与其最近的原型向量, 并根据两者的类别标记是否一致来对原型向量进行相应的更新.

    • 算法的停止条件可设置为最大运行轮数或原型向量更新幅度很小.
  • LVQ的关键是如何更新原型向量.

    • 对样本xxj, 若最近的原型向量ppixxj的类别标记相同, 则令ppixxj的方向靠拢.
    pp=ppi+η·(xxjppi)
    • ppxxj之间的距离为
    ||ppxxj||2=||ppi+η·(xxjppi)xxj||2=(1η)·||ppixxj||2

    令学习率η(0,1), 则原型向量ppi在更新为pp之后将更接近xjxj.

    • ppixxj的类别标记不同, 则更新后的原型向量与xxj之间的距离将增大为(1+η)·||ppixxj||2从而更远离xxj.
  • 在学得一组原型向量{pp1,pp2,...,ppq}后, 即可实现对样本空间X的簇划分.

  • 对任意样本xx, 它将被划入与其距离最近的原型向量所代表的簇中.

  • 每个原型向量ppi定义了与之相关的一个区域Ri, 该区域中每个样本与ppi的距离不大于它与其他原型向量ppi(ii)的距离, 即

    Ri={xxX| ||xxppi||2||xxppi||2,ii}
    • 由此形成了对样本空间X的簇划分{R1,R2,...,Rq}, 该划分通常称为Voronoi剖分(Voronoi tessellation).
    • 若将Ri中样本全用原型向量ppi表示, 则可实现数据的有损压缩(lossy compression). 这称为向量量化(vector quantization).

9.4.3.高斯混合聚类

  • k均值、LVQ用原型向量来刻画聚类结构不同, 高斯混合(Mixture-of-Gaussian)聚类采用概率模型来表达聚类原型.

  • (多元)高斯分布的定义. 对n维样本空间X中的随机向量xx, 若xx若服从高斯分布, 其概率密度函数为

    p(xx)=1(2π)n2||12e12(xxμμ)T1(xxμμ)
    • 其中μμn维均值向量, 是的n×n协方差矩阵.
    • 记为xxN(μμ,).
    • : 对称正定矩阵; ||: 的行列式; 1: 的逆矩阵.
    • 高斯分布完全由均值向量μμ和协方差矩阵这两个参数确定.
  • 为了明确显示高斯分布与相应参数的依赖关系, 将概率密度函数记为p(xx|μμ,).

  • 高斯混合分布的定义

    pM(xx)=i=1kαi·p(xx|μμi,i)
    • pM(·)也是概率密度函数, pM(xx)dxx=1.

    • 该分布是由k个混合分布组成, 每个混合成分对应一个高斯分布.

    • 其中μμii是第i个高斯混合分布的参数, 而αi>0为相应的混合系数(mixture coefficient), i=1kαi=1.

    • 假设样本的生成过程由高斯混合分布给出: 首先, 根据α1,α2,...,αk定义的先验分布选择高斯混合成分, 其中αi为选择第i个混合成分的概率; 然后, 根据被选择的混合成分的概率密度函数进行采样, 从而生成相应的样本.

    • 若训练集D={xx1,xx2,...,xxm}由上述过程生成, 令随机变量zj{1,2,...,k}表示生成样本xxj的高斯混合分布, 其取值未知. zj的先验概率P(zj=i)对应于αi(i=1,2,...,k).

    • 根据贝叶斯定理, zj的后验分布对应于

    pM(zj=i|xxj)=P(zj=i)·pM(xxj|zj=i)pM(xxj)=αi·p(xxj|μμi,i)l=1kαl·p(xxj|μμl,l)

    换言之, pM(zj=i|xxj)给出了样本xxj由第i个高斯混合成分生成的后验概率. 为方便叙述, 将其简记为γji (i=1,2,...,k).

    • 当高斯混合分布已知时, 高斯混合聚类将把样本集D划分为k个簇C={C1,C2,...,Ck}, 每个样本xxj的簇标记λj如下确定:λj=argmaxi{1,2,...,k} γji

    从原型聚类的角度来看, 高斯混合聚类是采用概率模型(高斯分布)对原型进行刻画, 簇划分则由原型对应后验概率确定.

    • 对于高斯混合分布的定义, 模型参数{(αi,μμi,i)|1ik}, 在给定样本集D的求解, 可采用极大似然估计, 即最大化(对数)似然
    LL(D)=ln(j=1mpM(xxj))=j=1mln(i=1kαi·p(xxj|μμi,i))

    采用EM算法进行迭代优化求解.

    • 若参数{(αi,μμi,i)|1ik} 能使上式最大化, 则LL(D)μμi=0
    j=1mαi·p(xxj|μμi,i)l=1kαl·p(xxj|μμl,l)(xxjμμi)=0
    • pM(zj=i|xxj)=αi·p(xxj|μμi,i)l=1kαl·p(xxj|μμl,l)以及, γji=pM(zj=i|xxj), 有
    μμi=j=1mγjixxjj=1mγji

    即各混合成分的均值可通过样本加权平均来估计, 样本权重是每个样本属于该成分的后验概率.

    • 类似的, 由LL(D)i=0可得
    i=j=1mγji(xxjμμi)(xxjμμi)Tj=1mγji
  • 对于混合系数αi, 除了要最大化LL(D), 还需满足αi0, i=1kαi=1.

  • 考虑LL(D)的拉格朗日形式:

LL(D)+λ(i=1k αi1)

其中λ为拉格朗日乘子, 由上式对αi的导数为0, 有

j=1mp(xj|μμi,i)l=1kαl·p(xj|μμl,l)+λ=0

两边同乘以αi, 对所有混合成分求和可知λ=m, 有

αi=1mj=1mγji

即每个高斯成分的混合系数由样本属于该成分的平均后验概率确定.

  • 即上述推导即可获得高斯混合模型的EM算法: 在每步迭代中, 先根据当前参数来计算每个样本属于每个高斯成分的后验概率γji (E步), 再根据μμi=j=1mγjixxjj=1mγji, i=j=1mγji(xxjμμi)(xxjμμi)Tj=1mγjiαi=1mj=1mγji更新模型参数{(αi,μμi,i)|1ik} (M步).

  • 高斯混合聚类算法描述

    19.png

    • 第3-5行EM算法的E步, 第6-11行EM算法的M步.
  • 算法的停止条件可设置为最大迭代轮数或似然函数LL(D)增长很少甚至不再增长, 第14-17行根据高斯混合分布确定簇划分.

9.5.密度聚类

  • 密度聚类亦称基于密度的聚类(density-based clustering), 此类算法假设聚类结构能通过样本分布的紧密程度确定.

  • 密度聚类算法从样本密度的角度来考虑样本之间的可连接性, 并基于可连接样本不断扩展聚类簇以获得最终的聚类结果.

  • DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种著名的密度聚类算法, 它基于一组邻域(neighborhood)参数(ϵ,MinPts)来刻画样本分布的紧密程度.

  • 给定数据集D={xx1,xx2,...,xxm}, 定义下面这几个概念:

    • ϵ-邻域: 对xxjD, 其ϵ-邻域包含样本集D中与xxj的距离不大于ϵ的样本, 即Nϵ(xxj)={xxiD|dist(xxi,xxj)ϵ};
    • 核心对象(core object): 若xxjϵ-领域至少包含MinPts个样本, 即|Nϵ(xxj)|MinPts, 则是一个核心对象xxj;
    • 密度直达(directly density-reachable): 若xxj位于xxiϵ-领域中, 且xxi是核心对象, 则称xxjxxi密度直达;
      • 密度直达关系通常不满足对称性.
    • 密度可达(density-reachable): 对xxixxj, 若存在样本序列pp1,pp2,...,ppn, 其中pp1=xxi, ppn=xxjppi+1ppi密度直达, 则称xxjxxi密度可达.
      • 密度可达关系满足直递性, 但不满足对称性.
    • 密度相连(density-connected): 对xxixxj, 若存在xxk使得xxixxj均由xxk密度可达, 则称xxixxj密度相连.
      • 密度相连关系满足对称性.
  • DBSCAN将簇定义为: 有密度可达关系导出的最大的密度相连样本集合.

    • D中不属于任何簇的样本被认为是噪声(noise)或者异常(anomaly)样本.
    • 给定邻域参数(ϵ,MinPts), 簇CD是满足以下性质的非空样本子集:
      • 连接性(connectivity): xxiC, xxjCxxixxj密度相连
      • 最大性(maximality): xxiC, xxjxxi密度可达 xxjC
  • xx为核心对象, 由xx密度可达的所有样本组成的集合记为X={xxD|xxxx 密度可达}, 则可证明X即为满足连续性和最大性的簇.

  • DBSCAN 算法任选数据集中的一个核心对象为种子(seed), 再由此出发确定相应的聚类簇.

  • DBSCAN 算法描述

    22.png

9.6.层次聚类

  • 层次聚类(hierarchical clustering)试图在不同层次对数据集进行划分, 从而形成树形的聚类结构.

  • 数据集的划分可采用自底向上的聚合策略, 也可采用自顶向下的拆分策略.

  • AGNES(AGglomerative NESting)是一种采用自底向上聚合策略的层次聚类算法.

    • 先将数据集中的每个样本看作一个初始聚类簇, 然后在算法运行的每一步中找出距离最近的两个聚类簇进行合并, 该过程不断重复, 直至达到预设的聚类簇个数.
  • AGNES的关键是如何计算聚类簇之间的距离.

    • 每个簇是一个样本集合, 只需采用关于集合的某种距离即可.
    • 集合间的距离计算常采用豪斯多夫距离(Hausdorff distance).
    • 给定聚类簇CiCj可通过下面的式子来计算距离:
      • 最小距离: dmin(Ci,Cj)=minxxCi,zzCjdist(xx,zz)
      • 最大距离: dmax(Ci,Cj)=maxxxCi,zzCjdist(xx,zz)
      • 平均距离: davg(Ci,Cj)=1|Ci||Cj|xxCizzCjdist(xx,zz)
    • 最小距离由两个簇的最近样本决定, 最大距离由两个簇的最远样本决定, 而平均距离则由两个簇的所有样本共同决定.
    • 当聚类簇距离由dmindmaxdavg计算时, AGNES 算法被相应地称为单链接(single-linkage)、全链接(complete-linkage)或均链接(average-linkage)算法.
  • AGNES 算法描述

    26.png

    • d 通常使用dmin, dmax, davg.
  • i<j.