一. 什么是聚类
二. 聚类步骤
三. 聚类算法有哪些
1 层次聚类算法
2 划分聚类算法
3 基于密度的聚类算法
4 基于网格的聚类算法
5 基于模型的聚类算法
一. 什么是聚类?
物以类聚,人以群分,聚类分析是一种重要的多变量统计方法。 聚类分析最早起源于分类学,最初,人们依靠经验将一类 事件的集合分为若干子集。随着科技的发展,人们将数学工具引入分类学,聚类算法便被细化归入数值分类学领域。后来,信息技术快速发展,新数据的出现呈井喷趋势,其结构的复杂性和内容的多元化又为聚类提出了新的要求,于是多元分析技术被引入数值分析学,形成了聚类分析学。聚类与分类不同,在分类模型中,存在样本数据,这些数据的类标号是已知的,分类的目的是从训练样本集中提取出分类的规则,用于对其他标号未知的对象进行类标识。在聚类中,预先不知道目标数据的有关类的信息,需要以某种度量为标准将所有的数据对象划分到各个簇中。因此,聚类分析又称为无监督的学习。
聚类(clustering)就是将具体或抽象对象的集合分组成由相似对象组成的为多个类或簇的过程。由聚类生成的簇是一组数据对象的集合,簇必须同时满足以下两个条件:每个簇至少包含一个数据对象;每个数据对象必须属于且唯一地属于一个簇。
在许多应用中,一簇中 的数据对象可以作为一个整体来对待。
由于聚类在对数据对象进行划分过程中,倾向于数据的自然划分,因此,聚类分析是指用数学的方法来研究与处理给定对象的分类,主要是从数据集中寻找数据间的相似性,并以此对数据进行分类,使得同一个簇中的数据对象尽可能相似,不同簇中的数据对象尽可能相异,从而发现数据中隐含的、有用的信息。其中聚类算法常见的有基于层次方法、基于划分方法,基于密度及网格等方法。
二. 聚类步骤
聚类主要包括以下几个过程。(1)数据准备:包括特征标准化和降维。
(2)特征选择、提出:从最初的特征中选择出有效的特征,并将其存储于向量中。
(3)特征提取,通过对所选择的特征进行转换,形成新的突出特征。
(4)聚类(或分组):首先选择合适特征类型的某种距离函数(或构造新的距离函数)进行接近程度的度量,然后执行聚类或分组。 一. 回到文首
三. 聚类算法的要求
聚类算法的要求如下:(1)可扩展性。许多聚类算法在小数据集(少于200个数据对象)时可以工作得很好;但一个大数据库可能会包含数以百万的对象。利用采样方法进行聚类分析可能得到一个有偏差的结果,这时就需要可扩展的聚类分析算法。(2)处理不同类型属性的能力。
许多算法是针对基于区间的数值属性而设计的。但是有些应用需要对实类型数据。如二值类型、符号类型、顺序类型,或这些数据类型的组合。(3)发现任意形状的聚类。
许多聚类算法是根据欧氏距离或曼哈顿距离来进行聚类的。基于这类距离的聚类方法一般只能发现具有类似大小和密度的圆形或球状聚类。而实际一个聚类是可以具有任意形状的,因此,设计能够发现任意开关类集的聚类算法是非常重要的。(4)需要(由用户)决定的输入参数最少。
许多聚类算法需要用户输入聚类分析中所需要的一些参数( 如期望所获得聚类的个数)。而聚类结果通常都与输入参数密切相关;而这些参数常常也很难决定,特别是包含高维对象的数据集。这不仅构成了用户的负担,也使得聚类质量难以控制。(5)处理噪声数据的能力。
大多数现实世界的数据库均包含异常数据、不明数据、数据丢失和噪声数据,有些聚类算法对这样的数据非常敏感并会导致获得质量较差的数据。(6)对输入记录顺序不敏感。
一 .些聚类算法对输入数据的顺序敏感,也就是不同的数据输入顺序会导致狄得罪常不同的结果。因此,设计对输入数据顺序不敏感的聚类算法也是非常重要的。(7)高维问题。
一个数据库或一个数据仓库或许包含若干维属性。许多聚类算法在处理低维数据(仅包含二到三个维)时表现很好,然而设计对高维空间中的数据对象,特别是对高维空间稀疏和怪异分布的数据对象,能进行较好聚类分析的聚类算法已成为聚类研究中的一项挑战。(8)基于约束的聚类。
现实世界中的应用可能需要在各种约束之下进行聚类分析。假设需要在-一个城市中确定一些新加油站的位置,就需要考虑诸如城市中的河流、调整路,以及每个区域的客户需求等约束情况下居民住地的聚类分析。设计能够发现满足特定约束条件且具有较好聚类质量的聚类算法也是一个重要聚类研究任务。(9)可解释性和可用性。
用户往往希望聚类结果是可理解的、可解释的、可用的,这就需要聚类分析要与特定的解释和应用联系在一起。 因此,研究一 个应用的目标是如何影响聚类方法选择也是非常重要的。 一. 回到文首
四. 聚类算法有哪些?
1. 层次聚类算法
层次聚类算法的指导思想是对给定待聚类数据集合进行层次化分解。此算法又称为数据类算法,此算法根据一定 的链接规则将数据以层次架构分裂或聚合,最终形成聚类结果。
从算法的选择上看,层次聚类分为自顶而下的分裂聚类和自下而上的聚合聚类。
分裂聚类初始将所有待聚类项看成同一类,然后找出其中与该类中其他项最不相似的类分裂出去形成两类。如此反复执行,直到所有项自成类。
聚合聚类初始将所有待聚类项都视为独立的一类, 通过连接规则,包括单连接、全连接,类间平均连接,以及采用欧氏距离作为相似度计算的算法,将相似度最高的两个类合并成一个类。如此反复执行,直到所有项并入同一个类。
层次聚类算法中的典型代表算法,BIRCH( Balanced Iterative Reducing andClustering Using Hierarchies,利用层次方法的平衡迭代规约和聚类)算法的核心是采用了个三元组的聚类特征树汇总了 一个簇的有关信息,从而使一个簇的表示可以用对应的聚类特征,而不必用具体的组点表示,通过构造分支因子B和簇直径阀值T来进行增量和动态聚类。
BIRCH算法引入了两个重要概念:聚类特征(Clustering Featurer CF)和聚类特征树(Clustering Feature Tree CF树),它们用于概括聚类描述,可辅助聚类算法在大型数据库中取得更快的速度和可伸缩性。
一. 回到文首
2. 划分聚类算法
划分法属于硬聚类, 指导思想是将给定的数据集初始分裂为K个簇,每个簇至小包含二条数据记录,然后通过反复迭代至每个簇不再改变即得出聚类结果划分聚类在初始的一步中即将数据分成给定个数个簇。在算法过程中还需使用准则函数对划分结果进行判断,易产生最优聚类结果。
K-Medoids算法先为每个簇随意选择一个代表对象,并将剩余的对象根据其与代表对象的距离分配给最近的一个簇。然后反复用非代表对象来替代代表对象,以改进聚类的质量。K-means 算法对噪声点和孤立点很敏感,K-Medoids 很好地解决了这一问题,该算法不采用簇中对象的平均值作为参照点,而是选用簇中位置最靠近中心的对象,即中心点。这样,划分方法仍然是基于最小化所有对象与其对应的参照点之间的相异度之和的原则来执行。
K-means 算法也称作K-平均值算法或者K均值算法,是一种得到广泛使用的聚类分析算法。该算法于1967年由MacQueen 首次提出,得到了广泛应用。这种算法通过迭代不断移动个聚簇中心和簇类成员,直到得到理想的结果。通过K均值算法得到的聚簇结果,簇内项相似度很高,簇间项相似度很低,具有较好的局部最优特性,但并非是全局最优解。此外,K均值只能定义在数值类属性值上,无法处理其他类型的数据。针对于无法产生全局最优解问题,算法的研究者们一部分倾向于通过优化初始簇的选择算法和均值计算改善算法性能,另部分则允许簇分裂与合并, 来调整簇间关系。
K-means算法是解决聚类问题的一种经典算法,简单快速,对于处理大数据集,该算法是相对可伸缩的和高效的,当结果簇是密集的,而簇之间区别明显时,它的效果较好:算法复杂度是0(n×k×t),其中,n是数据对象的个数,k是簇的个数,t是迭代的次数,通常,k《n,且1《n;K-means 算法的主要缺点在于算法通常终止于局部最优解,只有当簇均值有定义的情况下才能使用,这可能不适用于某些应用,例如,涉及有分类属性的数据:必须事先给定要生成的簇的数目;对噪声和孤立点数据敏感,少量的该类数据能够对平均值产生极大的影响;不适合发现非凸面形状的簇,或者大小差别很大的簇。
一. 回到文首
3. 基于密度的聚类算法
上文中提到的两类算法,其聚类的划分都以距离为基础,容易产生类圆形的凸聚类。而密度算法很好地克服了这缺点。 基于密度的聚类算法的主要思想是:只要邻近区域的密度(对象或数据点的数目)超过某个阈值,就把它加到与之相近的聚类中。也就是说,对给定类中的每个数据点,在- 个给定范围的区域中必须至少包含某个数目的点。基于密度聚类的经典算法DBSCAN (Density- Based Spatial Clustering of Applicationwith Noise,具有噪声的基于密度的空间聚类应用)是一种基于高密度连接区域的密度聚类算法。该算法将簇定义为密度相连的点的最大集合,将足够高密度的区域划分为簇。这样的算法对噪声具有健壮性,并可以在带有“噪声”的空间数据库中发现任意形状的聚类。DBSCAN的基本算法流程如下:从任意对象P开始根据阈值和参数通过广度优先搜索提取从P密度可达的所有对象,得到一一个聚类。若P是核心对象,则可以一次标记相应对象为当前类并以此为基础进行扩展。得到一个完整的聚类后,再选择一个新的对象重复上述过程。若P是边界对象,则将其标记为噪声并舍弃。尽管DBSCAN 算法改进完善了上述两种算法的一些缺陷,但此算法也存在不足。如聚类的结果与参数关系较大,阈值过大容易将同聚类分割, 阅值过小容易将不同聚类合并。此外,固定的阈值参数对于稀疏程度不同的数据不具适应性,密度小的区域同一聚类易被分割,密度大的区域不同聚类易被合并。 一. 回到文首4. 基于网格的聚类算法
基于网格的聚类算法是采用一个多分辨率的网格数据结构,即将空间量化为有限数目的单元,这些单元形成了网格结构,所有的聚类操作都在网格上进行。基于网格的聚类从对数据空间划分的角度出发,利用属性空间的多维网格数据结构,将空间划分为有限数目的单元,以构成一个可以进行聚类分析的网格结构。这样的处理使得算法处理速度很快,处理工作量与数据项个数无关,而与划分的网格个数有关。
STING (STatistical INformation Grid,统计信息网格)算法将空间区域划分为矩形单元。针对不同级别的分辨率,通常存在多个级别的矩形单元,这些单元形成了一个层次结构一高层的每个单元被划分为多个低一层的单元。
WaveCluster (Clustering using wavelet transformation,采用小波变换聚类)是一种多分辨率的聚类算法,它先通过在数据空间上加一个多维网格结构来汇总数据,然后采用一种小波变换来变换原特征空间,在变换后的空间中找到密集区域。
一. 回到文首
5. 基于模型的聚类算法
基于模型的聚类算法是为每一个聚类假定了一个模型,寻找数据对给定模型的最佳拟合。它可能通过构建反映数据点空间分布的密度函数来定位聚类,也可能基于标准的统计数字决定聚类数目,考虑“噪声”数据或孤立点,从而产生健壮的聚类方法。该方法试图优化给定的数据和某些数学模型之间的适应性。这样的方法常基于这样的假设:数据是根据潜在的概率分布生成的。
基于模型的聚类方法主要有两类:统计学方法(EM和COBWEB算法)和神经网络方法(SOM算法)。
(1)统计学方法
概念聚类是机器学习中的一种聚类方法, 给出一组未标记的数据对象, 它产生一个分类模式。与传统聚类不同,概念聚类除了确定相似对象的分组外,还为每组对象发现了特征描述,即每组对象代表了一个概念或类。
概念聚类过程主要有两个步骤:首先,完成聚类:其次,进行特征描述。在这里,聚类质量不再只是单个对象的函数,而且还包含了其他因素,如所获特征描述的普遍性和简单性。
(2)神经网络方法
神经网络方法将每个簇描述成一个模型。模型作为聚类的一个"原型”,不一定对应一个特定的数据实例或对象。根据某些距离函数,新的对象可以被分配给模型与其最相似的簇。被分配给一个簇的对象的属性可以根据该簇的模型的属性来预测。
神经网络聚类的两种方法:竞争学习方法与自组织特征图映射方法,它们主要是通过若干单元对当前对象的竞争来完成。神经网络聚类方法存在较长处理时间和复杂数据中复杂关系问题,还不适合处理大数据库。
实际应用中的聚类算法,往往是上述聚类算法中多种算法的整合。
一. 回到文首