《机器学习》西瓜书第九章聚类(二)原型聚类、密度聚类、层次聚类

下面几个小节分别介绍了几种聚类算法

9.4 原型聚类

原型聚类亦称“基于原型的聚类”,此类算法假设聚类结构能够通过一组原型刻画,在现实聚类任务中极为常见。通常情况下,算法先对原型进行初始化,然后对原型进行迭代更新求解。

9.4.1 k均值算法

在这个算法中,我们把所有项分为k个簇,使得相同簇中所有项彼此尽量相似,而不同簇之间彼此尽量不相似。

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

其中是簇Ci的均值向量,直观来看,在一定程度上刻画了簇内样本围绕簇均值向量的紧密程度,E值越小则簇内样本相似度越高。

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

算法步骤:1.在数据域随机生成k个初试“均值”,对均值向量尽心初始化;2.通过关联每个观测值到最近的均值,创建k个簇;3.计算新的均值向量,每个簇的形心变为新的均值;4.重复步骤2 3直至收敛,即当前均值向量均未更新。

9.4.2 学习向量量化

“学习向量量化”(简称LVQ)也是试图找到一组原型向量来刻画聚类结构,但与一般聚类算法不同的是,LVQ假设数据样本带有类别标记,学习过程利用样本这些监督信息来辅助聚类。

给定样本集,每个样本xj是由n个属性描述的特征向量,yi是样本xj的类别标记,LVQ的目标是学得一组n维原型向量{p1,p2,…,pq},,每个原型向量代表一个聚类簇。

算法步骤:1.对原型向量进行初始化,对第q个簇可以从类别标记为tq的样本中随机选取一个作为原型向量。2.对原型向量进行迭代优化,在每一轮迭代中,算法随机选取一个有标记的训练样本,找出与其距离最近的原型向量,并根据两者类别是否一致来对原型向量进行相应的更新:若最近的原型向量pi与xj的类别标记相同,则令pi向xj的方向靠拢,此时新原型向量为

p与xj之间的距离为,令学习率属于(0,1)在更新p之后将更接近xj;类似的,若pi*与xj的类别标记不相同,则更新后的原型向量与xj之间的距离将增大为从而更远离xj。3.若算法的停止条件已满足(例如已达到最大迭代轮数,或原型向量更新很小甚至不再更新),则当前原型向量作为最终结果返回。

9.4.3 高斯混合聚类

高斯混合聚类理解起来较为困难,可参阅https://blog.csdn.net/lotusng/article/details/79990724此博客。

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

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

(此部分内容待续)

9.5 密度聚类

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

DBSCAN是一种著名的密度聚类算发,他基于一组“邻域”参数来刻画样本分布的紧密程度。DBSCAN先发现密度较高的点,然后把相近的高密度点逐步连成一片,进而生成各种簇。

ε-邻域:对xj属于D,其ε-邻域包含样本集D中与xj距离不大于ε的样本,

核心对象:若xj的ε-邻域至少包含MinPts个样本,即,则xj是一个核心对象;(MinPts为密度阈值)

密度直达:若xj位于xi的ε-邻域中,且xi是核心对象,则称xj由xi密度直达。

密度可达:对xi与xj,若存在样本序列p1,p2,…,pn,其中p1=xi,pn=xj且pi+1由pi密度直达,则称xj由xi密度可达;

密度相连:对xi与xj,若存在xk使得xi与xj均由xk密度可达,则称xi与xj密度相连。

DBSCAN将“簇”定义为:由密度可达关系导出的最大的密度相连样本集合。

D中不属于任何簇的样本被认为是噪声或异常样本。

DBSCAN是靠不断连接邻域内高密度点来发现簇的,只需要定义邻域大小和密度阈值,因此可以发现不用形状不同大小的簇。

算法实现:对每个数据点为圆心,以邻域为半径画圈,然后数有多少个点,在这个圈内,这个数就是点密度值,然后选取一个点密度阈值MinPts,圈内点数小于MinPts为低密度点,大于或等于MinPtsede的为高密度点(称为核心点或核心对象)如果有一个高密度的点在另一个高密度点的圈内,我们就把这两个点连接起来,这样就可以把好多点不断串联起来。如果有低密度的点也在高密度点的圈内,把它也连到最近的高密度点上,称之为边界点。

9.6 层次聚类

层次聚类试图在不同层次对数据集进行划分,从而形成树形的聚类结构,数据集的划分可采用“自底向上”的聚合策略,也可采用“自顶向下”的分拆策略。即凝聚式层次聚类:在初始阶段将每个店都视为一个簇,之后合并两个最接近的簇,直到最后只剩一个簇;分裂式层次聚类:在初始阶段将所有点视为一个点,之后每分裂出一个簇,直到最后剩下单个点的簇。

AGNES是一种采用自底向上聚合策略的层次聚类算法,他先将数据集中的每个样本看做一个初始聚类簇,然后在算法运行的每一步找出距离最近的两个聚类簇进行合并,该过程不断重读,直到达到预设的聚类簇个数。这里关键是素和计算聚类簇之间得距离,实际上,每个簇是一个样本集合,因此,只需要采用关于集合的某种距离即可。

显然,最小距离由簇的最近样本决定,最大距离由两个簇的最远样本决定,而平均距离则有两个簇的所有样本共同决定。

算法步骤:1.初始化,将每个样本都视为一个簇;(2)计算各簇之间的距离;(3)寻找最近的两个簇,并将他们并为一类;(4)重复步骤2,3,直到所有样本归为一类。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值