聚类算法:聚类就是按照某个特定标准(如距离准则)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。即聚类后同一类的数据尽可能聚集到一起,不同数据尽量分离。也就是说,可以利用聚类算法将全部的离散数据整合并分化成几个相互明显不同的几个数据团。相关的研究和应用领域包括数据挖掘、统计学、机器学习、空间数据库技术、生物学以及市场营销等。
根据目前学习到的知识,将聚类算法可以划分成如下几个方向:
1 基于划分的聚类算法
k-means: | 是一种典型的划分聚类算法,它用一个聚类的中心来代表一个簇,即在迭代过程中选择的聚点不一定是聚类中的一个点,该算法只能处理数值型数据 |
k-modes: | K-Means算法的扩展,采用简单匹配方法来度量分类型数据的相似度 |
k-prototypes: | 结合了K-Means和K-Modes两种算法,能够处理混合型数据 |
k-medoids: | 在迭代过程中选择簇中的某点作为聚点,PAM是典型的k-medoids算法 |
CLARA: | CLARA算法在PAM的基础上采用了抽样技术,能够处理大规模数据 |
CLARANS: | CLARANS算法融合了PAM和CLARA两者的优点,是第一个用于空间数据库的聚类算法 |
Focused CLARAN: | 采用了空间索引技术提高了CLARANS算法的效率 |
PCM: | 模糊集合理论引入聚类分析中并提出了PCM模糊聚类算法 |
2 基于层次的聚类算法
CURE: | 采用抽样技术先对数据集D随机抽取样本,再采用分区技术对样本进行分区,然后对每个分区局部聚类,最后对局部聚类进行全局聚类 |
ROCK: | 也采用了随机抽样技术,该算法在计算两个对象的相似度时,同时考虑了周围对象的影响 |
CHEMALOEN(变色龙算法): | 首先由数据集构造成一个K-最近邻图Gk ,再通过一个图的划分算法将图Gk 划分成大量的子图,每个子图代表一个初始子簇,最后用一个凝聚的层次聚类算法反复合并子簇,找到真正的结果簇 |
SBAC: | SBAC算法则在计算对象间相似度时,考虑了属性特征对于体现对象本质的重要程度,对于更能体现对象本质的属性赋予较高的权值 |
BIRCH: | BIRCH算法利用树结构对数据集进行处理,叶结点存储一个聚类,用中心和半径表示,顺序处理每一个对象,并把它划分到距离最近的结点,该算法也可以作为其他聚类算法的预处理过程 |
BUBBLE: | BUBBLE算法则把BIRCH算法的中心和半径概念推广到普通的距离空间 |
BUBBLE-FM: | BUBBLE-FM算法通过减少距离的计算次数,提高了BUBBLE算法的效率 |
3 基于密度的聚类算法
DBSCAN: | DBSCAN算法是一种典型的基于密度的聚类算法,该算法采用空间索引技术来搜索对象的邻域,引入了“核心对象”和“密度可达”等概念,从核心对象出发,把所有密度可达的对象组成一个簇 |
GDBSCAN: | 算法通过泛化DBSCAN算法中邻域的概念,以适应空间对象的特点 |
DBLASD: | |
OPTICS: | OPTICS算法结合了聚类的自动性和交互性,先生成聚类的次序,可以对不同的聚类设置不同的参数,来得到用户满意的结果 |
FDC: | FDC算法通过构造k-d tree把整个数据空间划分成若干个矩形空间,当空间维数较少时可以大大提高DBSCAN的效率 |
4 基于网络的聚类算法
STING: | 利用网格单元保存数据统计信息,从而实现多分辨率的聚类 |
WaveCluster: | 在聚类分析中引入了小波变换的原理,主要应用于信号处理领域。(备注:小波算法在信号处理,图形图像,加密解密等领域有重要应用,是一种比较高深和牛逼的东西) |
CLIQUE: | 是一种结合了网格和密度的聚类算法 |
OPTIGRID: |
5 基于神经网络的聚类算法
自组织神经网络SOM: | 该方法的基本思想是--由外界输入不同的样本到人工的自组织映射网络中,一开始时,输入样本引起输出兴奋细胞的位置各不相同,但自组织后会形成一些细胞群,它们分别代表了输入样本,反映了输入样本的特征 |
6 基于统计学的聚类算法
COBWeb: | COBWeb是一个通用的概念聚类方法,它用分类树的形式表现层次聚类 |
CLASSIT: | |
AutoClass: | 是以概率混合模型为基础,利用属性的概率分布来描述聚类,该方法能够处理混合型的数据,但要求各属性相互独立 |
7 模糊聚类——FCM聚类算法
这个和之前的6种聚类算法相比较比较特殊。
1965年美国加州大学柏克莱分校的扎德教授第一次提出了‘集合’的概念。经过十多年的发展,模糊集合理论渐渐被应用到各个实际应用方面。为克服非此即彼的分类缺点,出现了以模糊集合论为数学基础的聚类分析。用模糊数学的方法进行聚类分析,就是模糊聚类分析[12]。
FCM算法是一种以隶属度来确定每个数据点属于某个聚类程度的算法。该聚类算法是传统硬聚类算法的一种改进。
算法流程:
(1) 标准化数据矩阵;
(2) 建立模糊相似矩阵,初始化隶属矩阵;
(3) 算法开始迭代,直到目标函数收敛到极小值;
(4) 根据迭代结果,由最后的隶属矩阵确定数据所属的类,显示最后的聚类结果。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面对几种常用的聚类算法从可伸缩性、适合的数据类型、高维性(处理高维数据的能力)、异常数据的抗干扰度、聚类形状和算法效率这六个方面进行了综合性能评价,评价的结果如下表格所示:(来源于网络相关资源)
算法名称 | 可伸缩性 | 适合的数据类型 | 高维性 | 异常数据的抗干扰性 | 聚类形状 | 算法效率 |
WaveCluster | 很高 | 数值型 | 很高 | 较高 | 任意形状 | 很高 |
ROCK | 很高 | 混合型 | 很高 | 很高 | 任意形状 | 一般 |
BIRCH | 较高 | 数值型 | 较低 | 较低 | 球形 | 很高 |
CURE | 较高 | 数值型 | 一般 | 很高 | 任意形状 | 较高 |
K-Prototypes | 一般 | 混合型 | 较低 | 较低 | 任意形状 | 一般 |
DENCLUE | 较低 | 数值型 | 较高 | 一般 | 任意形状 | 较高 |
OptiGrid | 一般 | 数值型 | 较高 | 一般 | 任意形状 | 一般 |
CLIQUE | 较高 | 数值型 | 较高 | 较高 | 任意形状 | 较低 |
DBSCAN | 一般 | 数值型 | 较低 | 较高 | 任意形状 | 一般 |
CLARANS | 较低 | 数值型 | 较低 | 较高 | 球形 | 较低 |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
通过本文的学习和总结我们看到,聚类算法有几种主要的算法方式,一些已经有了实践性和使用价值,而另外一些正在处于理论阶段,包括出现的模糊聚类算法,都是我们今后研究和改进的方向。
在这里先列下这样的学习目录,后面将根据目录对目录中提到的相关算法进行系统的学习、研究、总结。
尊重版权!本文参考的文献有:
1、《四中聚类方法之比较》http://www.cnblogs.com/William_Fire/archive/2013/02/09/2909499.html
2、《聚类算法总结》 http://blog.chinaunix.net/uid-10289334-id-3758310.html