机器学习之聚类算法(层次聚类)

来源:互联网 发布:万能搞笑证件制作软件 编辑:程序博客网 时间:2024/06/06 20:00

层次聚类也叫连通聚类方法,有两个基本方法:自顶而下和自底而上。自顶而将所有样本看做是同一簇,然后进行分裂。自底而上将初所有样本看做不同的簇,然后进行凝聚。这种聚类的中心思想是:离观测点较近的点相比离观测点较远的点更可能是一类。
这种方法首先会生成下面的树
这里写图片描述

分成几类需要通过对上面的树状图进行剪枝来决定。例如需要分成两类,则选择一条水平直线刚好和树相交两次,从而化为左右两棵子树。
不过上面的方法过于简单,只能做分裂或者只能做凝聚,因此结果是不可逆。例如,前期将簇A中样本a,分裂到簇B中后,a再也不能回到簇A中。改进算法时,可以先将邻近的样本点划分到微簇(micoclusters)中,然后对微簇实现K-means算法。
层次聚类算法如下(参考):

名字 特点 CURE 采用抽样技术先对数据集D随机抽取样本,再采用分区技术对样本进行分区,然后对每个分区局部聚类,最后对局部聚类进行全局聚类 ROCK 也采用了随机抽样技术,该算法在计算两个对象的相似度时,同时考虑了周围对象的影响 CHEMALOEN(变色龙算法) 首先由数据集构造成一个K-最近邻图Gk ,再通过一个图的划分算法将图Gk 划分成大量的子图,每个子图代表一个初始子簇,最后用一个凝聚的层次聚类算法反复合并子簇,找到真正的结果簇 SBAC SBAC算法则在计算对象间相似度时,考虑了属性特征对于体现对象本质的重要程度,对于更能体现对象本质的属性赋予较高的权值 BIRCH BIRCH算法利用树结构对数据集进行处理,叶结点存储一个聚类,用中心和半径表示,顺序处理每一个对象,并把它划分到距离最近的结点,该算法也可以作为其他聚类算法的预处理过程 BUBBLE BUBBLE算法则把BIRCH算法的中心和半径概念推广到普通的距离空间 BUBBLE-FM BUBBLE-FM算法通过减少距离的计算次数,提高了BUBBLE算法的效率

BIRCH

  1. BIRCH算法考虑I/O开销。
  2. 一次扫描能够产生一个基本聚类,多次扫描能够改善聚类结果。
  3. 它是一个增量的聚类方法,对于数据的聚类决策是基于已经处理过的数据点,而不是全部样本空间,因此能够提高计算速度。
  4. 需要使用半径或者直接控制聚类的边界。

CF和CF树

BIRCH引入了CF(cluster feature)和CF树概念。
CF
CF树中每个节点由CF组成,一个CF是一个三元组(N,LS,SS),代表了簇的所有信息(N类中结点数目,LS结点线性和,SS结点线性平方和)。
CF具有迭加特性:CF1+CF2=(N1+N2,LS1+LS2,SS1+SS2)
一个簇使用一个CF表示,一个样本点加入到此簇中后,关于此样本的信息就被丢弃掉,从而达到对数据的压缩目的。
在对簇进行分析时需要以下信息:
簇中心:Xc=Ni=1xiN
簇半径:R=Ni=1||xiXc||N
簇直径:D=ji||xixj||N(N1)
簇间距离:D(A,B)=xiϵAxjϵB||xixj||NANB
上面看到就知道计算两比较大,不过有了CF后可以省略了。
簇直径:D=2NSS2LS2N(N1)
簇间距离:D(A,B)=SS1N1+SS2N22LS1LS2N1N2
CF树
CF树类似B-树,里面包括三种数据结构:内部结点、叶结点、簇。并由参数L、B、T控制(L控制叶结点数目,B内部结点数目,T控制簇半径),同时一个内部结点下面一层是叶结点的话,这些叶结点使用一个双向链表管理。
树的建立实际上是一个递归过程。
首先考虑扫描的第一个样本x时,新建一个内部结点、一个叶结点。建立一个簇将此样本x放入其中。此时,我们可以认为有了一棵CF树了。
然后考虑为这棵CF树添加新样本x时,不失一般性,我们可以认为此时的树很大或者很小。

  1. 首先将这个x封装成一个CF,记为CFn
  2. 比较CFn和根结点的所有孩子的CF,选择一个离它最近的孩子,利用上面D(A,B)
  3. 依次往下搜索孩子结点,直到到达叶结点。检查叶结点代表的簇是否能够吸收此新样本,判定条件是变化后的簇的半径是否超过T。
  4. 若能够吸收,则需要更新叶结点的CF(同时递归更新结点的父结点)
  5. 若不能够吸收,则需要将此叶结点代表的簇进行分裂。分裂办法是:选择此簇距离最远的两个样本作为种子,然后将根据离这两个种子最近来分割其他样本。 分裂可能会导致叶结点的数目刚好超过L,因此需要递归分裂结点的父结点。若根结点发生了分裂,则树的高度需要增加1.

从上面可以看出,一次扫描就能建立一个CF树,且计算量小,占用存储空间也小。能够识别噪声数据(包含样本少的簇)。同时这样的B-树的查找速度也很快。
不过,树的结构依赖于扫描顺序。同样的样本数据,不同的扫描顺序得到的树的结构不一样。同时样本的分布必须是球状的,且对高纬度数据处理不好。

ROCK (RObust Clustering using linKs)

这是一种凝聚方法的代表。引入了四个概念:
邻居
两个对象之间的相似度超过阈值θ,则这两个对象是邻居。
链接
两个对象共同邻居数据
目标函数
为了达到最小簇之间的链接,最大簇内的链接
相似性度量

TBD

0 0
原创粉丝点击