此笔记参考了数据挖掘导论、周志华的机器学习以及机器学习实战三本书
簇是对象的稠密区域,被低密度环绕,此类算法假设聚类结构能通过样本分布的紧凑程度确定。当簇不规则或互相盘绕,并且有噪声和离群点时,常常使用基于密度的簇定义。通常情况下,密度聚类算法从样本密度来考察样本之间的可连接性,再基于样本之间的可连接性不断扩展簇最后得到聚类结果。
(1) ε 邻域:给定对象半径 ε 内的区域称为该对象的 ε 邻域。
(2)核心对象:如果给定对象 ε 邻域内的样本点数大于等于MinPts,则称该对象为核心对象。
(3)直接密度可达:给定一个对象集合D,如果p在q的 ε 邻域内,且q是一个核心对象,则我们说对象p从对象q出发是直接密度可达的(directly density-reachable)。
(4)密度可达:对于样本集合D,如果存在一个对象链P1,P2….,Pn,其中P1=q,Pn=p,对于Pi,Pi+1是从Pi关于 ε 和MinPts直接密度可达,则对象p是从对象q关于 ε 和MinPts密度可达的(density-reachable)。
(5)密度相连:如果存在对象O,使对象p和q都是从O关于 ε 和MinPts密度可达的,那么对象p到q是关于 ε 和MinPts密度相连的(density-connected)。
可以发现,密度可达是直接密度可达的传递闭包,并且这种关系是非对称的。只有核心对象之间相互密度可达。
input: 领域参数: ε ,MinPts( ε :半径;MinPts:给定点在E邻域内成为核心对象的最小邻域点数);样本集合: D={x1,x2,…,xm}
方法:
Repeat
1.判断输入点是否为核心对象。
2.找出核心对象的 ε 邻域中的所有直接密度可达点。
Until 所有样本都判断完毕
Repeat
针对所有核心对象的 ε 邻域内所有直接密度可达点找到最大密度相连对象集合,中间涉及到一些密度可达对象的合并。
Until 所有核心对象的 ε 领域都遍历完毕
output: 簇划分C={C1,C2,…,Ck}
层次聚类试图在不同层次上对数据集进行划分,从而形成树形的聚类结构。数据集的划分可采用“自底向上”的聚合策略,也可采用“自顶向下”的分拆策略。本文现在只关注最常见的“自底向上”的聚合策略。下图显示了簇-子簇联系和簇合并或分裂的次序。
聚合策略描述起来比较简单,但是计算复杂度比较高,算法基本流程如下:
计算邻近度矩阵,得到簇之间的邻近性
repeat
1.合并最接近的两个簇
2.重新计算邻近度矩阵,以反应新的簇和未合并原来的簇之间的邻近性
until 只剩下最后一个簇
在AGNES算法中,有3种距离,分别为最小距离,最大距离和平均距离。两个簇的最小距离由两个簇的最近样本的距离决定,最大距离由两个簇的最远样本的距离决定,平均距离由两个簇的所有样本的距离决定。当簇间距离d由最小距离,最大距离和平均距离计算时,AGNES算法被相应称为“单链接”,“全链接”和“均链接”算法。 AGNES算法流程和上述流程差不多,算法先对仅含一个样本的初始聚类簇和相应的距离矩阵进行初始化,然后不断地合并距离最近的聚类簇,并对得到的聚类簇的距离矩阵进行更新,对合并和更新过程不断重复,直至达到预设的聚类簇数。
算法过程描述: input:样本集合: D={x1,x2,…,xm}; 聚类簇的数目:k
1.将每个对象当成一个初始簇 2.Repeat 3.根据两个簇中最近的数据点找到最近的两个簇 4.合并两个簇,生成新的簇的集合 5.Until达到定义的簇的数目
output: 簇划分C={C1,C2,…,Ck}