西瓜书学习笔记9-聚类

chapter 9 聚类

9.1聚类任务

在无监督学习中,训练样本的标记未知,目标是通过无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础,此类学习中应用最广,研究最多的是“聚类”。
聚类试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集称为一个,通过这样的划分,每个簇可能对应一些潜在的概念(类别),如“浅色瓜”,“深色瓜”,“有籽瓜”等。这些概念对聚类算法而言事先是未知的,聚类过程仅能自动形成簇结构,簇所对应的概念语义需由使用者来把握和命名。
聚类既能作为一个单独过程,用于找寻数据内在的分布结构,也可作为分类等其他学习任务的前驱过程,例如在商业应用中需对新用户的类型进行判别,但定义“用户类型”对商家来说并不容易,此时往往可先对用户数据进行聚类,根据聚类结果将每个簇定义为一个类,然后再基于这些类训练分类模型,用于判别新用户的类型。
基于不同的学习策略,人们设计出多种类型的聚类算法,先讨论聚类算法涉及的两个基本问题–性能度量和距离计算

9.2 性能度量

聚类性能度量亦称聚类“有效性指标”,与监督学习的性能度量类似,对聚类结果,我们需通过某种性能度量来评估其好坏,另一方面,若明确了最终将要使用的性能度量,则可直接将其作为聚类过程的优化目标,从而更好地得到符合要求的聚类结果。
较好的聚类结果是“簇内相似度”高且“簇间相似度”低。
聚类性能度量有两类:1、将聚类结果与某个“参考模型”进行比较,称为“外部指标”;另一类是直接考察聚类结果而不利用任何参考模型,称为“内部指标”。
对数据集D,假定聚类给出的簇划分为C={C1,C2…Ck},参考模型给出的簇划分为C*={C1*,C2*…Cs*},将样本两两配对考虑,定义:
西瓜书学习笔记9-聚类_第1张图片
a表示xi和xj在C和C中都属于同一个簇的样本对数,b表示在C中属于相同簇,但在C中属于不同簇的样本对数,以此类推。
基于9.1-9.4可导出下面这些常用的聚类性能度量外部指标
1、Jaccard系数:
在这里插入图片描述
2、FM指数:
在这里插入图片描述
3、Rand指数:
在这里插入图片描述
上面这些值越大,聚类结果越好。

聚类性能度量内部指标
考虑聚类结果的簇划分C={C1,C2…Ck},定义:
西瓜书学习笔记9-聚类_第2张图片
dist用于计算两个样本之间的距离,μ代表簇C的中心点。
avg(C)对应于簇C内样本间的平均距离,diam(C)对应簇C内样本间的最远距离,dmin(Ci,Cj)对应于两个簇最近样本间的距离,dcen(Ci,Cj)对应于两个簇中心点间的距离。
基于9.8-9.11可导出下面这些常用的聚类性能度量内部指标。
1、DB指数,简称DBI
在这里插入图片描述
2、Dunn指数,简称DI
在这里插入图片描述
显然DBI值越小越好(簇内样本约集中越好),DI越大越好(簇间距离越大越好)。

9.3 距离计算

对函数dist(),若它是一个“距离度量”,则需满足一些基本性质:
1、非负性;2、同一性:当距离为零时,xi=xj; 3、对称性:dist(xi,xj)=dist(xj,xi); 4、直递性:dist(xi,xj)≤dist(xi,xk)+dist(xk,xj)(三角不等式)
给定样本xi与xj,最常用的是“闵科夫斯基距离”:
在这里插入图片描述
p=2时,得到欧氏距离:
在这里插入图片描述
p=1时,得到曼哈顿距离
在这里插入图片描述
常将属性划分为“连续属性”和“离散属性”,前者在定义域上有无穷多个可能的取值,后者在定义域上是有限个取值。
在距离计算时,属性是否有“序”更为重要,例如{1,2,3}能直接在属性值上计算距离,这样的属性称为“有序属性”,而{飞机,火车,轮船}这样的离散属性则不能在属性值上计算距离,称为无序属性。闵科夫斯基距离可用于有序属性。
对无序属性可采用VDM(Value Difference metric,值差异指标),mu,a,i表示在第i个样本簇中在属性u上取值为a的样本数,k为样本簇数,则属性u上两个离散值a,b之间的VDM距离为:
在这里插入图片描述
于是,将闵科夫斯基距离和VDM距离结合即可处理混合属性,假定有nc个有序属性,n-nc个无序属性,令有序属性排列在无序属性之前,有:
西瓜书学习笔记9-聚类_第3张图片
当样本空间中不同属性的重要性不同时,可使用“加权距离”,以加权闵科夫斯基距离为例:
在这里插入图片描述
其中权重w≥0,表征不同属性的重要性,通常权重之和等于1。
需注意的是,通常我们是基于某种形式的距离来定义“相似度度量”,距离越大,相似度越小,然而,用于相似度度量的距离未必一定要满足距离度量的所有基本性质。尤其是直递性(三角不等式):
西瓜书学习笔记9-聚类_第4张图片
有必要基于数据样本来确定合适的距离计算式,这可通过“距离度量学习”来实现。

9.4 原型聚类

亦称“基于原型的聚类”,(原型是指在样本空间中具有代表性的点,最终的原型向量就是每个聚类的中心点)此类算法假设聚类结构能通过一组原型刻画,在现实聚类任务中极为常用,通常情况下,算法先对原型进行初始化,然后对原型进行更新迭代求解,采用不同的原型表示,不同的求解方式,将产生不同的算法,下面介绍几种著名的原型聚类算法。

9.4.1 k均值

k均值算法针对聚类所得簇划分C最小化平方误差:
西瓜书学习笔记9-聚类_第5张图片
其中μi是簇Ci的均值向量,直观来看,式9.24在一定程度上反映了簇内样本围绕簇均值向量的紧密程度。E值越小,则簇内样本相似度越高。
找到9.24的最优解需考察样本集D所有可能的簇划分,是NP难问题NP难问题,因此,k均值算法采用了贪心策略,通过迭代优化来近似求解式9.24,算法流程如图9.2所示,第一行对均值向量进行初始化,4-8行与9-16行依次对当前簇划分及均值向量迭代更新,若迭代更新后聚类结果保持不变,则在18行将当前簇划分结果返回。
以西瓜4.0为例:
西瓜书学习笔记9-聚类_第6张图片
西瓜书学习笔记9-聚类_第7张图片
假定聚类簇数 k=3,算法开始时,随机选取三个样本x6,x12,x27作为初始均值向量,即:在这里插入图片描述
考察其它样本与这三个初始均值向量的距离,将每个样本划分到距离最小的簇中:
西瓜书学习笔记9-聚类_第8张图片
从C1,C2,C3中分别求出新的均值向量:
在这里插入图片描述
重新划分C1,C2,C3。不停迭代直到C1,C2,C3不再变化

9.4.2 学习向量量化

与k均值类似,“学习向量量化”(LVQ)也是视图找到一组原型向量来刻画聚类结构,但与一般的聚类算法不同,LVQ假设数据样本带有类别标记,学习过程利用样本的这些监督信息来辅助分类。
给定样本集D={(x1,y1),(x2,y2),…,(xm,ym)},LVQ的目标是学得一组n维原型向量{p1,p2,…pq},每个原型向量代表一个聚类簇,簇标记是属于样本本身的类别标记y的。
LVQ算法步骤:
1、先对原型向量进行初始化,例如对第q个簇,可从类别标记为tq的样本中随机选取一个作为原型向量,算法第2-12行对原型向量进行迭代优化,在每一轮迭代中,算法随机选取一个有标记的训练样本,找出与其距离最近的原型向量,并根据两者的类别标记是否一致来对原型向量进行相应的调整(一致不变,不一致则更新原型向量)。若算法的停止条件已满足(例如已达到最大迭代轮数,或原型向量更新很小甚至不再更新),则将当前原型向量作为最终结果返回
西瓜书学习笔记9-聚类_第9张图片
关键的步骤是6-10行,即如何更新原型向量,直观上看,对样本xj,若最近的原型向量pi与xj的类别标记相同,则令pi向xj的方向靠拢,如第七行所示,此时新原型向量为:
在这里插入图片描述
p’与xj的距离为:在这里插入图片描述
令学习率在0到1之间,则原型向量在更新后将更接近xj。
若标记不同,则将更远离xj。对任意样本x,它被划入与其距离最近的原型向量所代表的簇中,换言之,每个原型向量pi定义了与之相关的一个区域Ri,该区域中每个样本与pi的距离不大于它们与其它原型向量pj的距离。
由此形成了对样本空间X的簇划分{R1,R2,…Rq}。

以西瓜数据集4.0为例演示LVQ的学习过程:
西瓜书学习笔记9-聚类_第10张图片
令9-21号样本的类别标记为c2,其余样本的类别标记为c1,假定q=5,即学习目标是找到5个原型向量p1-p5,并假定对应的类别标记分别为c1,c2,c2,c1,c1。(即希望好瓜=是找到三个簇,好瓜=否找到两个簇)。
算法开始时,根据样本的类别标记和簇的预设类别标记对原型向量进行随机初始化,假定初始化为样本x5,x12,x18,x23,x29(初始化的样本遵循c1,c2,c2,c1,c1的排列),在第一轮迭代中,假定随机选取的样本为x1,它与p1-p5的距离中,与p5的距离最短,且他们都有相同的标记(c2),假定学习率为0.1,则LVQ更新p5得到新原型向量。
将p5更新为p’后,不断重复上述过程,不同轮数之后的聚类结果如图9.5所示。
西瓜书学习笔记9-聚类_第11张图片
白点和黑点分别是好瓜与坏瓜,+号是更新后的原型向量,红色虚线是聚类形成的voronoi剖分。

9.4.3 高斯混合聚类

与k均值,LVQ用原型向量刻画聚类结构不同,高斯混合聚类采用概率模型来表达聚类原型。
添加链接描述

9.5 密度聚类

此类算法假设聚类结构能够通过样本分布的紧密程度确定。
密度聚类算法从样本密度的角度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果。
著名算法:DBSCAN
它基于一组“邻域”参数来刻画样本分布的紧密程度。
关键概念:
1、e邻域:样本集中与xj距离不大于e的范围
2、核心对象:若xj的e邻域中至少包含Minpts个样本,则xj是一个核心对象。
3、密度直达:若xj位于xi的e邻域中,且xi是一个核心对象,则称xj由xi密度直达。
4、密度可达:若xi+1由xi密度直达,则称xj由x1密度可达。
5、密度相连:若存在xk,使得xi和xj均由xk密度可达,则称xi和xj密度相连
西瓜书学习笔记9-聚类_第12张图片以西瓜数据集4.0为例,先找出个样本的e领域并确定核心对象集合,然后,从核心对象集合中随机选取一个核心对象作为种子,找出由它密度可达的所有样本,构成了第一个聚类簇,然后从核心对象集合中再选取一个核心对象作为种子来生成下一个聚类簇,上述过程不断重复,直至核心对象为空。
西瓜书学习笔记9-聚类_第13张图片

9.6 层次聚类

层次聚类试图在不同的层次对数据集进行划分,从而形成树形的聚类结构,数据集的划分可采用“自底向上”的聚合策略,也可采用“自顶向下”的分拆策略。
AGNES是一种采用自底向上聚合策略的层次聚类算法,它先将数据集中的每个样本看作一个初始聚类簇,然后在算法运行的每一步中找出距离最近的两个聚类簇进行合并,该过程不断重复,直至达到预设的聚类簇个数。这里的关键是如何计算聚类簇之间的距离。实际上,每个簇都是一个样本集合,因此,只需要采用关于集合的某种距离即可,例如给定聚类簇Ci和Cj,可通过下面式子计算距离:
西瓜书学习笔记9-聚类_第14张图片
最小距离由两个簇的最近样本决定,最大距离由两个簇的最远样本决定,而平均距离由两个簇的所有样本决定,当距离由这三种方式定义时,AGNES算法被相应地称为“单链接”,“全链接”或“均链接”算法。
以西瓜4.0为例,令AGNES算法一直执行到所有样本出现在同一个簇中,即k=1,则可得到如图所示的树状图,其中每层链接一组聚类簇。
西瓜书学习笔记9-聚类_第15张图片
在树状图特定层次分割,可得到相应的簇划分结果,按虚线下进行划分,可得到:
西瓜书学习笔记9-聚类_第16张图片
按照不同层次的划分结果如图:
西瓜书学习笔记9-聚类_第17张图片
所以该方法称为层次聚类

你可能感兴趣的:(西瓜书)