下面是小编为大家整理的聚类方法,供大家参考。
1. 聚类定义 聚类是将数据集中具有相似特性的数据分类组织的过程,聚类技术是一种无监督学习。聚类又称群分析,他是研究样本或指标分类问题的一种统计分析方法。聚类与分类的区别是其要划分的类是未知的。常用的聚类分析法有系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。
2. 聚类要求 (1)可伸缩性:常规的聚类算法对于小数量(<200)的数据集聚类效果较好,但对于包含几百万对象的大数据集效果较差。如 CLARANS 算法,该算法改进了 CLA RA 的聚类质量,拓展了数据处理量的伸缩范围,具有较好的聚类效果。但它的计算效率较低,且对数据输入顺序敏感,只能聚类凸状或球型边界。
(2)处理不同类型属性的能力:许多算法被设计用来聚类数值类型的数据。但是,应用可能要求聚类其他类型的数据,如二元类型(binary),分类/标称类型(categorical/nominal),序数型(ordinal)数据,或者这些数据类型的混合。
(3)发现任意形状的聚类:许多聚类算法基于欧几里得或者曼哈顿距离度量来决定聚类。基于这样的距离度量的算法趋向于发现具有相近尺度和密度的球状簇。但是,一个簇可能是任意形状的。提出能发现任意形状簇的算法是很重要的。
(4)用于决定输入参数的领域知识最小化:许多聚类算法在聚类分析中要求用户输入一定的参数,例如希望产生的簇的数目。聚类结果对于输入参数十分敏感。参数通常很难确定,特别是对于包含高维对象的数据集来说。这样不仅加重了用户的负担,也使得聚类的质量难以控制。
(5)处理“噪声”数据的能力:绝大多数现实中的数据库都包含了孤立点,缺失,或者错误的数据。一些聚类算法对于这样的数据敏感,可能导致低质量的聚类结果。
(6)对于输入记录的顺序不敏感:一些聚类算法对于输入数据的顺序是敏感的。例如,同一个数据集合,当以不同的顺序交给同一个算法时,可能生成差别很大的聚类结果。开发对数据输入顺序不敏感的算法具有重要的意义。
(7)高维度(high dimensionality):一个数据库或者数据仓库可能包含若干维或者属性。许多聚类算法擅长处理低维的数据,可能只涉及两到三维。人类的眼睛在最多三维的情况下能够很好地判断聚类的质量。在高维空间中聚类数据对象是非常有挑战性的,特别是考虑到这样的数据可能分布非常稀疏,而且高度偏斜。
(8)基于约束的聚类:现实世界的应用可能需要在各种约束条件下进行聚类。假设你的工作是在一个城市中为给定数目的自动提款机选择安放位置,为了作出决定,你可以对住宅区进行聚类,同时考虑如城市的河流和公路网,每个地区的客户要求等情况。要找到既满足特定的约束,又具有良好聚类特性的数据分组是一项具有挑战性的任务。
(9)可解释性和可用性:用户希望聚类结果是可解释的,可理解的,和可用的。也就
是说,聚类可能需要和特定的语义解释和应用相联系。应用目标如何影响聚类方法的选择也是一个重要的研究课题。
3. 聚类算法 传统的聚类分析计算方法主要有如下几种:
1、划分方法(partitioning methods)
给定一个有 N 个元组或者纪录的数据集,分裂法将构造 K 个分组,每一个分组就代表一个聚类,K<N。而且这 K 个分组满足下列条件:(1)
每一个分组至少包含一个数据纪录;(2)每一个数据纪录属于且仅属于一个分组(注意:这个要求在某些模糊聚类算法中可以放宽);对于给定的 K,算法首先给出一个初始的分组方法,以后通过反复迭代的方法改变分组,使得每一次改进之后的分组方案都较前一次好,而所谓好的标准就是:同一分组中的记录越近越好,而不同分组中的纪录越远越好。使用这个基本思想的算法有:K-MEANS 算法、K-MEDOIDS 算法、CLARANS 算法;
2、层次方法(hierarchical methods)
这种方法对给定的数据集进行层次似的分解,直到某种条件满足为止。具体又可分为“自底向上”和“自顶向下”两种方案。例如在“自底向上”方案中,初始时每一个数据纪录都组成一个单独的组,在接下来的迭代中,它把那些相互邻近的组合并成一个组,直到所有的记录组成一个分组或者某个条件满足为止。代表算法有:BIRCH 算法、CURE 算法、CHAMELEON 算法等;
3、基于密度的方法(density-based methods)
基于密度的方法与其它方法的一个根本区别是:它不是基于各种各样的距离的,而是基于密度的。这样就能克服基于距离的算法只能发现“类圆形”的聚类的缺点。这个方法的指导思想就是,只要一个区域中的点的密度大过某个阀值,就把它加到与之相近的聚类中去。代表算法有:DBSCAN 算法、OPTICS 算法、DENCLUE 算法等;
4、基于网格的方法(grid-based methods)
这种方法首先将数据空间划分成为有限个单元(cell)的网格结构,所有的处理都是以单个的单元为对象的。这么处理的一个突出的优点就是处理速度很快,通常这是与目标数据库中记录的个数无关的,它只与把数据空间分为多少个单元有关。代表算法有:STING 算法、CLIQUE 算法、WAVE-CLUSTER 算法;
5、基于模型的方法(model-based methods)
基于模型的方法给每一个聚类假定一个模型,然后去寻找能够很好的满足这个模型的数据集。这样一个模型可能是数据点在空间中的密度分布函数或者其它。它的一个潜在的假定就是:目标数据集是由一系列的概率分布所决定的。通常有两种尝试方向:统计的方案和神经
网络的方案。
当然聚类方法还有:传递闭包法,布尔矩阵法,直接聚类法,相关性分析聚类,基于统计的聚类方法等。
4. 研究情况 传统的聚类已经比较成功的解决了低维数据的聚类问题。但是由于实际应用中数据的复杂性,在处理许多问题时,现有的算法经常失效,特别是对于高维数据和大型数据的情况。因为传统聚类方法在高维数据集中进行聚类时,主要遇到两个问题。①高维数据集中存在大量无关的属性使得在所有维中存在簇的可能性几乎为零;②高维空间中数据较低维空间中数据分布要稀疏,其中数据间距离几乎相等是普遍现象,而传统聚类方法是基于距离进行聚类的,因此在高维空间中无法基于距离来构建簇。
高维聚类分析已成为聚类分析的一个重要研究方向。同时高维数据聚类也是聚类技术的难点。随着技术的进步使得数据收集变得越来越容易,导致数据库规模越来越大、复杂性越来越高,如各种类型的贸易交易数据、Web 文档、基因表达数据等,它们的维度(属性)通常可以达到成百上千维,甚至更高。但是,受“维度效应”的影响,许多在低维数据空间表现良好的聚类方法运用在高维空间上往往无法获得好的聚类效果。高维数据聚类分析是聚类分析中一个非常活跃的领域,同时它也是一个具有挑战性的工作。目前,高维数据聚类分析在市场分析、信息安全、金融、娱乐、反恐等方面都有很广泛的应用。
附录:聚类方法 基于划分聚类算法(partition clustering) 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 模糊聚类算法
基于层次聚类算法:
CURE:
采用抽样技术先对数据集 D 随机抽取样本,再采用分区技术
对样本进行分区,然后对每个分区局部聚类,最后对局部聚类进行全局聚类 ROCK:
也采用了随机抽样技术,该算法在计算两个对象的相似度时,同时考虑了周围对象的影响 CHEMALOEN ( 变色龙算法):
首先由数据集构造成一个 K-最近邻图 Gk ,再通过一个图的划分算法将图 Gk 划分成大量的子图,每个子图代表一个初始子簇,最后用一个凝聚的层次聚类算法反复合并子簇,找到真正的结果簇 SBAC:
SBAC 算法则在计算对象间相似度时,考虑了属性特征对于体现对象本质的重要程度,对于更能体现对象本质的属性赋予较高的权值 BIRCH:
BIRCH 算法利用树结构对数据集进行处理,叶结点存储一个聚类,用中心和半径表示,顺序处理每一个对象,并把它划分到距离最近的结点,该算法也可以作为其他聚类算法的预处理过程 BUBBLE:
BUBBLE 算法则把 BIRCH 算法的中心和半径概念推广到普通的距离空间 BUBBLE-FM:
BUBBLE-FM 算法通过减少距离的计算次数,提高了 BUBBLE算法的效率
基于密度聚类算法:
DBSCAN:
DBSCAN 算法是一种典型的基于密度的聚类算法,该算法采用空间索引技术来搜索对象的邻域,引入了“核心对象”和“密度可达”等概念,从核心对象出发,把所有密度可达的对象组成一个簇 GDBSCAN:
算法通过泛化 DBSCAN 算法中邻域的概念,以适应空间对象的特点 DBLASD:
OPTICS:
OPTICS 算法结合了聚类的自动性和交互性,先生成聚类的次序,可以对不同的聚类设置不同的参数,来得到用户满意的结果 FDC:
FDC 算法通过构造 k-d tree 把整个数据空间划分成若干个矩形空间,当空间维数较少时可以大大提高 DBSCAN 的效率
基于网格的聚类算法:
STING:
利用网格单元保存数据统计信息,从而实现多分辨率的聚类 WaveCluster:
在聚类分析中引入了小波变换的原理,主要应用于信号处理领域。(备注:小波算法在信号处理,图形图像,加密解密等领域有重要应用,是一种比较高深和牛逼的东西)
CLIQUE:
是一种结合了网格和密度的聚类算法 OPTIGRID:
基于神经网络的聚类算法:
自组织神 该方法的基本思想是--由外界输入不同的样本到人工的自组织映射网络
经网络 SOM:
中,一开始时,输入样本引起输出兴奋细胞的位置各不相同,但自组织后会形成一些细胞群,它们分别代表了输入样本,反映了输入样本的特征
基于统计学的聚类算法:
COBWeb:
COBWeb 是一个通用的概念聚类方法,它用分类树的形式表现层次聚类 CLASSIT:
AutoClass:
是以概率混合模型为基础,利用属性的概率分布来描述聚类,该方法能够处理混合型的数据,但要求各属性相互独立
--------------------------------------------------------- 几种常用的聚类算法从可伸缩性、适合的数据类型、高维性(处理高维数据的能力)、异常数据的抗干扰度、聚类形状和算法效率 6 个方面进行了综合性能评价,评价结果如表 1 所示:
算法名称 可 伸缩性 适 合 的数据类型 高维性 异 常 数 据的抗干扰性 聚 类形状 算 法效率 WaveCluster 很高 数值型 很高 较高 任 意形状 很高 ROCK
很高
混合型
很高 很高
任 意形状 一般 BIRCH 较高
数值型
较低 较低
球形
很高 CURE
较高
数值型
一般 很高
任 意形状
较高 K-Prototypes
一般
混合型
较低 较低 任 意形状
一般 DENCLUE
较低
数值型
较高 一般
任 意形状
较高 OptiGrid
一般
数值型
较高 一般
任 意形状
一般 CLIQUE
较高
数值型
较高 较高
任 意形状
较低 DBSCAN
一般
数值型
较低 较高
任 意形状
一般 CLARANS
较低
数值型
较低 较高
球形
较低
--------------------------------------------------------- 目前聚类分析研究的主要内容:
对聚类进行研究是数据挖掘中的一个热门方向,由于以上所介绍的聚类方法都存在着某些缺
点,因此近些年对于聚类分析的研究很多都专注于改进现有的聚类方法或者是提出一种新的聚类方法。以下将对传统聚类方法中存在的问题以及人们在这些问题上所做的努力做一个简单的总结:
1 从以上对传统的聚类分析方法所做的总结来看,不管是 k-means 方法,还是 CURE 方法,在进行聚类之前都需要用户事先确定要得到的聚类的数目。然而在现实数据中,聚类的数目是未知的,通常要经过不断的实验来获得合适的聚类数目,得到较好的聚类结果。
2 传统的聚类方法一般都是适合于某种情况的聚类,没有一种方法能够满足各种情况下的聚类,比如 BIRCH 方法对于球状簇有很好的聚类性能,但是对于不规则的聚类,则不能很好的工作;K-medoids 方法不太受孤立点的影响,但是其计算代价又很大。因此如何解决这个问题成为当前的一个研究热点,有学者提出将不同的聚类思想进行融合以形成新的聚类算法,从而综合利用不同聚类算法的优点,在一次聚类过程中综合利用多种聚类方法,能够有效的缓解这个问题。
3 随着信息时代的到来,对大量的数据进行分析处理是一个很庞大的工作,这就关系到一个计算效率的问题。有文献提出了一种基于最小生成树的聚类算法,该算法通过逐渐丢弃最长的边来实现聚类结果,当某条边的长度超过了某个阈值,那么更长边就不需要计算而直接丢弃,这样就极大地提高了计算效率,降低了计算成本。
4 处理大规模数据和高维数据的能力有待于提高。目前许多聚类方法处理小规模数据和低维数据时性能比较好,但是当数据规模增大,维度升高时,性能就会急剧下降,比如 k-medoids方法处理小规模数据时性能很好,但是随着数据量增多,效率就逐渐下降,而现实生活中的数据大部分又都属于规模比较大、维度比较高的数据集。有文献提出了一种在高维空间挖掘映射聚类的方法 PCKA(Projected Clustering based on the K-Means Algorithm),它从多个维度中选择属性相关的维度,去除不相关的维度,沿着相关维度进行聚类,以此对高维数据进行聚类。
5 目前的许多算法都只是理论上的,经常处于某种假设之下,比如聚类能很好的被分离,没有突出的孤立点等,但是现实数据通常是很复杂的,噪声很大,因此如何有效的消除噪声的影响,提高处理现实数据的能力还有待进一步的提高。