Subspace Clustering详解(附带CLIQUE算法详解)

这篇博客主要介绍了Subspace Clustering,一种用于在数据的低维子空间中发现簇的算法,以及其中的CLIQUE算法。CLIQUE利用基于网格的方法在高维数据中寻找子空间簇,具有可伸缩性和解释性。文章详细阐述了CLIQUE的三个步骤:识别包含簇的子空间、识别这些簇以及产生簇的最小描述。
摘要由CSDN通过智能技术生成

Subspace Clustering详解

第二十四次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习。这一篇作为密度聚类算法族的第三篇,主要是介绍一种用来发现子空间中的簇的算法——Subspace Clustering,并对该类算法中最具代表性的CLIQUE(Clustering in quest)算法进行介绍,其他密度聚类算法的链接可以在《DBSCAN详解(密度聚类算法开篇)》这篇文章的最后找到。

子空间聚类(Subspace Clustering)

  在聚类任务中,有时考虑数据集的所有属性会降低聚类效率和簇的有效性,因为样本在某些属性上存在真正的簇划分,而在其他属性上则是随机分布的,这时在数据集高维空间中的低维子空间中进行聚类就十分重要了,而且不同的子空间会产生不同的簇划分。以不同温度、风速和太阳辐射下的臭氧含量为例,如下图所示不同颜色表示臭氧含量的不同

图1 不同温度、风速和太阳辐射下的臭氧含量

下面在三个不同的子空间观察这些数据,可以看出在这些空间中数据分布各有特点,有些空间中的数据甚至看不出明确的簇

图2 不同特征子空间中的数据

  上述例子展示了不同特征子空间中的数据所呈现的不同特点,下面用一个更加明确的例子来展示子空间聚类的效果,如下图所示,在三维空间中存在三个簇分别标记为菱形、正方形和三角形,还有一些看似随机分布的被标记为圆形的样本,下面采用等宽法将每个特征划分为20个区间,每个区间的宽度为0.1,由于每个网格单元是等体积(面积)的,因此单元中的样本点数即单元密度,下面将邻接的稠密单元合并为一个簇,以一维空间下的属性 x x x为例,如图(4)所示可以识别出三个簇

图3 子空间聚类
图4 关于属性x的分布直方图

  上述例子阐释了两个道理,第一,一个点集(如上圆形点)在整个属性空间上可能不能形成簇,但是在子空间中却可能形成簇,第二,存在于整个属性空间(甚至子空间)中的簇会作为低维空间中的簇出现。因此,往往需要在子空间中发现簇,而这些簇可能是高维空间中的簇的投影,但是发现低维空间中的簇正是这种聚类算法的目的。

CLIQUE(Clustering in quest)聚类

  CLIQUE聚类是在1998年由Rakesh Agrawal、Johannes Gehrke等人提出的(原始文献见《Automatic Subspace Clustering of High Dimensional Data for Data Mining Applications》),一种子空间聚类方式,并且应用了基于网格的聚类方法,该算法主要具有以下优点:(1)可伸缩性(2)可以发现在数据集高维空间中子空间的簇(3)聚类模型具有很好的解释性(4)没有对输入数据的次序依赖性(5)不需要事先假定数据集满足某种概率分布。与DBSCAN等基于密度的聚类算法不同的是,CLIQUE算法并不关注整个高维空间,因此它可以更有效的得到原始数据空间的子空间的簇。CLIQUE算法步骤分为一下三部分:
  1) 识别包含簇的子空间;
  2) 识别这些簇;
  3) 产生这些簇的 “最小描述”。
其中,最小描述(minimal description)是指这些簇不重复包含任意稠密网格单元,下面分别对上述部分进行介绍。
(1) 识别包含簇的子空间
  识别包含簇的子空间的困难在于如何寻找子空间中的稠密网格单元,最简单的方法是基于子空间中每个网格单元所含有的样本点数,来绘制所有子空间的样本点分布直方图,然后根据这些直方图进行判断。显而易见的是,这种方法并不适用于高维数据集,因为子空间的数量随维度的增加呈指数级增长。Rakesh Agrawal在本文中介绍了另一种“由下至上”(bottom-up)的识别方法,这种方法的理论依据是簇评判的单调性原则。
  簇评判的单调性原则:如果一个样本点集(簇) S S S k k k维空间的一个簇,那么 S S S是该空间的任意 k − 1 k-1 k1维子空间中某个簇的一部分。证明如下,假设 S S S k k k维空间的一个簇,由基于网格聚类的原理可知,这个簇是由多个稠密且邻接的网格单元组成的,在任意子空间的某个对应网格中必定存在所有的这些点,因此这个子空间的网格也是稠密的,而 S S S中这些稠密网格的临近性在子空间中也会得到保持。
  这种算法是“逐级执行”的,他首先遍历一次原始数据集,得到 1 1 1维稠密网格单元,当得到 k − 1 k-1 k1维稠密网格单元后,就可以通过下图(图5)所示的步骤产生候选的 k k k维稠密网格单元,得到候选的 k k k维稠密网格单元后,再遍历一次数据集来确定真正的 k k k维稠密网格单元,重复上述操作直到不再产生候选的稠密单元为止。

图5 候选产生步骤的伪代码

  上图所示的步骤将所有 k − 1 k-1 k1维稠密网格单元的集合 D k − 1 D_{k-1} Dk1作为参数,最终得到一个包含所有 k k k维稠密网格单元集合的超集 C k C_k Ck,其中, u i u_i u

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值