【聚类】简述高维数据聚类

  Concept:

  聚类其实就是讲一个对象的集合分为由相似对象组成的多个类的过程。聚类与分类的区别在于,聚类划分的类是不确定的,需要自身进行相似性比较,并且确定划分的类。

  一般而言,对于聚类算法的要求还是比较高的。

  具体的可以参看百度百科:http://baike.baidu.com/view/31801.htm

  而对于高维数据聚类的聚类算法主要有两种:子空间聚类(Subspace clustering)基于相似性度量的聚类(Similarity-Based Clustering

  高维数据聚类的难点在于:

  1、适用于普通集合的聚类算法,在高维数据集合中效率极低

  2、由于高维空间的稀疏性以及最近邻特性,高维的空间中基本不存在数据簇。

  Subspace clustering:

  选取与给定簇密切相关的维,然后在对应的子空间进行聚类。传统的特征选择算法可以用来确定相关维。

  特征选择算法综述:http://www.cnblogs.com/heaad/archive/2011/01/02/1924088.html

  不同的簇对应不同的子空间,并且每个子空间维数不同,因此也不可能一个子空间就可以发现所有的簇。为了解决这个问题,对全空间聚类进行了推广,称为子空间聚类(投影聚类)。

  定义:考虑在某个多维空间中的一个数据集,一个投影聚类就是一个数据点的子集C以及一个维的子集D,使得C中的点在D中很紧密地聚集在一起

  算法:重叠划分子空间聚类算法、非重叠划分子空间聚类、最优投影聚类算法等等

  未完待续!

-------------------------------------------------------

续(1):

  早期算法分析:

  CLIQUE聚类算法是基于密度和网格聚类算法的结合体。算法对数据输入顺序不敏感,可伸展性好,但是算法过程较为复杂。

  算法步骤:

  1、对n维空间进行划分,对每一个维度等量划分,将全空间划分为互不相交的矩形单元,并且识别其中的密集单元。(需要两个参数)

  因为这样会有n^n个单元,遍历每个单元,获取该单元的数据点的个数,这样的做法很不合实际。我们简单分析一下,假设n=10,那么10^10就是100亿了。如果n是几十或者上百的话,这个就更大了。  O(N^N)

  CLIQUE采用自下而上的识别方法:首先确定低维空间的数据密集单元,当确定了k-1维中所有的密集单元,k维空间上的可能密集单元就可以确定(算法1.1)。因为,当某一单元的数据在k维空间中是密集的,那么在任一k-1维空间中都是密集的。如果数据在某一k-1维空间中不密集,那么数据在k维空间中也是不密集。

  算法1.1  

  

  其中,Sk是K维候选密集单元集,Dk-1是K-1维密集单元集,u1.ak表示u1单元的第k维,u1.[lk,hk]表示u1在第k维上的区间。

  这种算法的缺点在于可能产生大量候选集,并且会频繁使用数据点(实际中会频繁扫描数据库)。虽然这种算法减少了需要验证的密集单元个数,但随着维数的增加,这个数量级依然很大。

  CLIQUE采用了基于“覆盖”的修剪原则来对子空间进行修剪。利用MDL(minimum description length)原理,对候选集进行剪枝

  基本原理是:如果k维空间存在一个聚类,那么k维空间的所有子空间都应该包含聚类的所有点。所以对k维空间的所有子空间从大到小进行排序,然后剪枝。

  即:k维空间的所有密集子空间为S1,S2,……,Sn

  ,表示一个子空间Sj中所有稠密单元内数据点的个数。

  

  

  求出CL(i)最小是的 i 值,就是剪枝点,留下剪枝点左边的,去掉剪枝点右边的。

  2、识别聚类

  利用DFS(Deep First Search)来发现空间中的聚类。即从D中一个密集单元u开始,按照深度优先遍历的原则,查找连通的集合。

  3、为每个簇生成最小化描述

  即利用贪心算法找到覆盖每个子聚类的最大区域覆盖,然后再确定最小覆盖

  区域是指每一边都与坐标轴平行的类矩形。最大区域是指,区域R包含于一个聚类C,当且仅当R∩C=R,并且不存在R的超集R也包含于C。

  首先选择一个密集单元,找到包含该密集单元的最大区域,然后再选择该聚类中没有包含在已有最大区域中的密集单元,找到包含密集单元的最大区域,知道所有密集单元都包含在最大区域集中。因为最大区域集中存在重叠的子空间,所以根据最大区域集,来确定最小覆盖。

posted @ 2013-10-17 21:31  ssdut-deng  阅读(17337)  评论(0编辑  收藏  举报