划分聚类算法
⑴ 数据挖掘干货总结(四)--聚类算法
本文共计2680字,预计阅读时长七分钟
聚类算法
一 、 本质
将数据划分到不同的类里,使相似的数据在同一类里,不相似的数据在不同类里
二 、 分类算法用来解决什么问题
文本聚类、图像聚类和商品聚类,便于发现规律,以解决数据稀疏问题
三 、 聚类算法基础知识
1. 层次聚类 vs 非层次聚类
– 不同类之间有无包含关系
2. 硬聚类 vs 软聚类
– 硬聚类:每个对象只属于一个类
– 软聚类:每个对象以某个概率属于每个类
3. 用向量表示对象
– 每个对象用一个向量表示,可以视为高维空间的一个点
– 所有对象形成数据空间(矩阵)
– 相似度计算:Cosine、点积、质心距离
4. 用矩阵列出对象之间的距离、相似度
5. 用字典保存上述矩阵(节省空间)
D={(1,1):0,(1,2):2,(1,3):6...(5,5):0}
6. 评价方法
– 内部评价法(Internal Evalution):
• 没有外部标准,非监督式
• 同类是否相似,跨类是否相异
DB值越小聚类效果越好,反之,越不好
– 外部评价法(External Evalution):
• 准确度(accuracy): (C11+C22) / (C11 + C12 + C21 + C22)
• 精度(Precision): C11 / (C11 + C21 )
• 召回(Recall): C11 / (C11 + C12 )
• F值(F-measure):
β表示对精度P的重视程度,越大越重视,默认设置为1,即变成了F值,F较高时则能说明聚类效果较好。
四 、 有哪些聚类算法
主要分为 层次化聚类算法 , 划分式聚类算法 , 基于密度的聚类算法 , 基于网格的聚类算法 , 基于模型的聚类算法等 。
4.1 层次化聚类算法
又称树聚类算法,透过一种层次架构方式,反复将数据进行分裂或聚合。典型的有BIRCH算法,CURE算法,CHAMELEON算法,Sequence data rough clustering算法,Between groups average算法,Furthest neighbor算法,Neares neighbor算法等。
凝聚型层次聚类 :
先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有对象都在一个簇中,或者某个终结条件被满足。
算法流程:
1. 将每个对象看作一类,计算两两之间的最小距离;
2. 将距离最小的两个类合并成一个新类;
3. 重新计算新类与所有类之间的距离;
4. 重复2、3,直到所有类最后合并成一类。
特点:
1. 算法简单
2. 层次用于概念聚类(生成概念、文档层次树)
3. 聚类对象的两种表示法都适用
4. 处理大小不同的簇
5. 簇选取步骤在树状图生成之后
4.2 划分式聚类算法
预先指定聚类数目或聚类中心,反复迭代逐步降低目标函数误差值直至收敛,得到最终结果。K-means,K-modes-Huang,K-means-CP,MDS_CLUSTER, Feature weighted fuzzy clustering,CLARANS等
经典K-means:
算法流程:
1. 随机地选择k个对象,每个对象初始地代表了一个簇的中心;
2. 对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;
3. 重新计算每个簇的平均值,更新为新的簇中心;
4. 不断重复2、3,直到准则函数收敛。
特点:
1.K的选择
2.中心点的选择
– 随机
– 多轮随机:选择最小的WCSS
3.优点
– 算法简单、有效
– 时间复杂度:O(nkt)
4.缺点
– 不适于处理球面数据
– 密度、大小不同的聚类,受K的限制,难于发现自然的聚类
4.3 基于模型的聚类算法
为每簇假定了一个模型,寻找数据对给定模型的最佳拟合,同一”类“的数据属于同一种概率分布,即假设数据是根据潜在的概率分布生成的。主要有基于统计学模型的方法和基于神经网络模型的方法,尤其以基于概率模型的方法居多。一个基于模型的算法可能通过构建反应数据点空间分布的密度函数来定位聚类。基于模型的聚类试图优化给定的数据和某些数据模型之间的适应性。
SOM 神经网络算法 :
该算法假设在输入对象中存在一些拓扑结构或顺序,可以实现从输入空间(n维)到输出平面(2维)的降维映射,其映射具有拓扑特征保持性质,与实际的大脑处理有很强的理论联系。
SOM网络包含输入层和输出层。输入层对应一个高维的输入向量,输出层由一系列组织在2维网格上的有序节点构成,输入节点与输出节点通过权重向量连接。学习过程中,找到与之距离最短的输出层单元,即获胜单元,对其更新。同时,将邻近区域的权值更新,使输出节点保持输入向量的拓扑特征。
算法流程:
1. 网络初始化,对输出层每个节点权重赋初值;
2. 将输入样本中随机选取输入向量,找到与输入向量距离最小的权重向量;
3. 定义获胜单元,在获胜单元的邻近区域调整权重使其向输入向量靠拢;
4. 提供新样本、进行训练;
5. 收缩邻域半径、减小学习率、重复,直到小于允许值,输出聚类结果。
4.4 基于密度聚类算法
只要邻近区域的密度(对象或数据点的数目)超过某个阈值,就继续聚类,擅于解决不规则形状的聚类问题,广泛应用于空间信息处理,SGC,GCHL,DBSCAN算法、OPTICS算法、DENCLUE算法。
DBSCAN:
对于集中区域效果较好,为了发现任意形状的簇,这类方法将簇看做是数据空间中被低密度区域分割开的稠密对象区域;一种基于高密度连通区域的基于密度的聚类方法,该算法将具有足够高密度的区域划分为簇,并在具有噪声的空间数据中发现任意形状的簇。
4.5 基于网格的聚类算法
基于网格的方法把对象空间量化为有限数目的单元,形成一个网格结构。所有的聚类操作都在这个网格结构(即量化空间)上进行。这种方法的主要优点是它的处理 速度很快,其处理速度独立于数据对象的数目,只与量化空间中每一维的单元数目有关。但这种算法效率的提高是以聚类结果的精确性为代价的。经常与基于密度的算法结合使用。代表算法有STING算法、CLIQUE算法、WAVE-CLUSTER算法等。
⑵ 聚类算法有哪几种
聚类分析计算方法主要有: 层次的方法(hierarchical method)、划分方法(partitioning method)、基于密度的方法(density-based method)、基于网格的方法(grid-based method)、基于模型的方法(model-based method)等。其中,前两种算法是利用统计学定义的距离进行度量。
k-means 算法的工作过程说明如下:首先从n个数据对象任意选择 k 个对象作为初始聚类中心;而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;然 后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程直到标准测度函数开始收敛为止。一般都采用均方差作为标准测度函数. k个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。
其流程如下:
(1)从 n个数据对象任意选择 k 个对象作为初始聚类中心;
(2)根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;并根据最小距离重新对相应对象进行划分;
(3)重新计算每个(有变化)聚类的均值(中心对象);
(4)循环(2)、(3)直到每个聚类不再发生变化为止(标准测量函数收敛)。
优点: 本算法确定的K个划分到达平方误差最小。当聚类是密集的,且类与类之间区别明显时,效果较好。对于处理大数据集,这个算法是相对可伸缩和高效的,计算的复杂度为 O(NKt),其中N是数据对象的数目,t是迭代的次数。
缺点:
1. K 是事先给定的,但非常难以选定;
2. 初始聚类中心的选择对聚类结果有较大的影响。
⑶ 聚类算法有哪些
聚类算法有:划分法、层次法、密度算法、图论聚类法、网格算法、模型算法。
1、划分法
划分法(partitioning methods),给定一个有N个元组或者纪录的数据集,分裂法将构造K个分组,每一个分组就代表一个聚类,K<N。使用这个基本思想的算法有:K-MEANS算法、K-MEDOIDS算法、CLARANS算法。
2、层次法
层次法(hierarchical methods),这种方法对给定的数据集进行层次似的分解,直到某种条件满足为止。具体又可分为“自底向上”和“自顶向下”两种方案。代表算法有:BIRCH算法、CURE算法、CHAMELEON算法等。
3、密度算法
基于密度的方法(density-based methods),基于密度的方法与其它方法的一个根本区别是:它不是基于各种各样的距离的,而是基于密度的。这样就能克服基于距离的算法只能发现“类圆形”的聚类的缺点。代表算法有:DBSCAN算法、OPTICS算法、DENCLUE算法等。
4、图论聚类法
图论聚类方法解决的第一步是建立与问题相适应的图,图的节点对应于被分析数据的最小单元,图的边(或弧)对应于最小处理单元数据之间的相似性度量。因此,每一个最小处理单元数据之间都会有一个度量表达,这就确保了数据的局部特性比较易于处理。图论聚类法是以样本数据的局域连接特征作为聚类的主要信息源,因而其主要优点是易于处理局部数据的特性。
5、网格算法
基于网格的方法(grid-based methods),这种方法首先将数据空间划分成为有限个单元(cell)的网格结构,所有的处理都是以单个的单元为对象的。代表算法有:STING算法、CLIQUE算法、WAVE-CLUSTER算法。
6、模型算法
基于模型的方法(model-based methods),基于模型的方法给每一个聚类假定一个模型,然后去寻找能够很好的满足这个模型的数据集。通常有两种尝试方向:统计的方案和神经网络的方案。
(3)划分聚类算法扩展阅读:
聚类分析起源于分类学,在古老的分类学中,人们主要依靠经验和专业知识来实现分类,很少利用数学工具进行定量的分类。随着人类科学技术的发展,对分类的要求越来越高,以致有时仅凭经验和专业知识难以确切地进行分类,于是人们逐渐地把数学工具引用到了分类学中,形成了数值分类学,之后又将多元分析的技术引入到数值分类学形成了聚类分析。聚类分析内容非常丰富,有系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。
在商业上,聚类可以帮助市场分析人员从消费者数据库中区分出不同的消费群体来,并且概括出每一类消费者的消费模式或者说习惯。它作为数据挖掘中的一个模块,可以作为一个单独的工具以发现数据库中分布的一些深层的信息,并且概括出每一类的特点,或者把注意力放在某一个特定的类上以作进一步的分析;并且,聚类分析也可以作为数据挖掘算法中其他分析算法的一个预处理步骤。
⑷ kmeans聚类算法是什么
K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一。K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。
聚类属于无监督学习,以往的回归、朴素贝叶斯、SVM等都是有类别标签y的,也就是说样例中已经给出了样例的分类。而聚类的样本中却没有给定y,只有特征x,比如假设宇宙中的星星可以表示成三维空间中的点集。
(4)划分聚类算法扩展阅读:
k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。
(1)适当选择c个类的初始中心;
(2)在第k次迭代中,对任意一个样本,求其到c个中心的距离,将该样本归到距离最短的中心所在的类;
(3)利用均值等方法更新该类的中心值;
(4)对于所有的c个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代。
⑸ K-Means聚类算法
所谓聚类算法是指将一堆没有标签的数据自动划分成几类的方法,属于无监督学习方法,这个方法要保证同一类的数据有相似的特征,如下图所示:
根据样本之间的距离或者说是相似性(亲疏性),把越相似、差异越小的样本聚成一类(簇),最后形成多个簇,使同一个簇内部的样本相似度高,不同簇之间差异性高。
相关概念:
K值 :要得到的簇的个数
质心 :每个簇的均值向量,即向量各维取平均即可
距离量度 :常用欧几里得距离和余弦相似度(先标准化)
算法流程:
1、首先确定一个k值,即我们希望将数据集经过聚类得到k个集合。
2、从数据集中随机选择k个数据点作为质心。
3、对数据集中每一个点,计算其与每一个质心的距离(如欧式距离),离哪个质心近,就划分到那个质心所属的集合。
4、把所有数据归好集合后,一共有k个集合。然后重新计算每个集合的质心。
5、如果新计算出来的质心和原来的质心之间的距离小于某一个设置的阈值(表示重新计算的质心的位置变化不大,趋于稳定,或者说收敛),我们可以认为聚类已经达到期望的结果,算法终止。
6、如果新质心和原质心距离变化很大,需要迭代3~5步骤。
K-Means采用的启发式方式很简单,用下面一组图就可以形象的描述:
上图a表达了初始的数据集,假设k=2。在图b中,我们随机选择了两个k类所对应的类别质心,即图中的红色质心和蓝色质心,然后分别求样本中所有点到这两个质心的距离,并标记每个样本的类别为和该样本距离最小的质心的类别,如图c所示,经过计算样本和红色质心和蓝色质心的距离,我们得到了所有样本点的第一轮迭代后的类别。此时我们对我们当前标记为红色和蓝色的点分别求其新的质心,如图d所示,新的红色质心和蓝色质心的位置已经发生了变动。图e和图f重复了我们在图c和图d的过程,即将所有点的类别标记为距离最近的质心的类别并求新的质心。最终我们得到的两个类别如图f。
坐标系中有六个点:
1、我们分两组,令K等于2,我们随机选择两个点:P1和P2
2、通过勾股定理计算剩余点分别到这两个点的距离:
3、第一次分组后结果:
组A:P1
组B:P2、P3、P4、P5、P6
4、分别计算A组和B组的质心:
A组质心还是P1=(0,0)
B组新的质心坐标为:P哥=((1+3+8+9+10)/5,(2+1+8+10+7)/5)=(6.2,5.6)
5、再次计算每个点到质心的距离:
6、第二次分组结果:
组A:P1、P2、P3
组B:P4、P5、P6
7、再次计算质心:
P哥1=(1.33,1)
P哥2=(9,8.33)
8、再次计算每个点到质心的距离:
9、第三次分组结果:
组A:P1、P2、P3
组B:P4、P5、P6
可以发现,第三次分组结果和第二次分组结果一致,说明已经收敛,聚类结束。
优点:
1、原理比较简单,实现也是很容易,收敛速度快。
2、当结果簇是密集的,而簇与簇之间区别明显时, 它的效果较好。
3、主要需要调参的参数仅仅是簇数k。
缺点:
1、K值需要预先给定,很多情况下K值的估计是非常困难的。
2、K-Means算法对初始选取的质心点是敏感的,不同的随机种子点得到的聚类结果完全不同 ,对结果影响很大。
3、对噪音和异常点比较的敏感。用来检测异常值。
4、采用迭代方法, 可能只能得到局部的最优解,而无法得到全局的最优解 。
1、K值怎么定?
答:分几类主要取决于个人的经验与感觉,通常的做法是多尝试几个K值,看分成几类的结果更好解释,更符合分析目的等。或者可以把各种K值算出的 E 做比较,取最小的 E 的K值。
2、初始的K个质心怎么选?
答:最常用的方法是随机选,初始质心的选取对最终聚类结果有影响,因此算法一定要多执行几次,哪个结果更reasonable,就用哪个结果。 当然也有一些优化的方法,第一种是选择彼此距离最远的点,具体来说就是先选第一个点,然后选离第一个点最远的当第二个点,然后选第三个点,第三个点到第一、第二两点的距离之和最小,以此类推。第二种是先根据其他聚类算法(如层次聚类)得到聚类结果,从结果中每个分类选一个点。
3、关于离群值?
答:离群值就是远离整体的,非常异常、非常特殊的数据点,在聚类之前应该将这些“极大”“极小”之类的离群数据都去掉,否则会对于聚类的结果有影响。但是,离群值往往自身就很有分析的价值,可以把离群值单独作为一类来分析。
4、单位要一致!
答:比如X的单位是米,Y也是米,那么距离算出来的单位还是米,是有意义的。但是如果X是米,Y是吨,用距离公式计算就会出现“米的平方”加上“吨的平方”再开平方,最后算出的东西没有数学意义,这就有问题了。
5、标准化
答:如果数据中X整体都比较小,比如都是1到10之间的数,Y很大,比如都是1000以上的数,那么,在计算距离的时候Y起到的作用就比X大很多,X对于距离的影响几乎可以忽略,这也有问题。因此,如果K-Means聚类中选择欧几里德距离计算距离,数据集又出现了上面所述的情况,就一定要进行数据的标准化(normalization),即将数据按比例缩放,使之落入一个小的特定区间。
参考文章: 聚类、K-Means、例子、细节
⑹ 空间聚类算法简述
空间数据聚类算法主要包括四大类:(1)给予划分的聚类;(2)基于层次的聚类;(3)基于密度的聚类;(4)基于网格的聚类。时空数据聚类算法是空间数据聚类算法的验身,它将时许维度纳入聚类计算中。
1.1基于划分的空间聚类算法
k-means算法 :用户定义k个簇的质心位置——将每个数据点聚合到与之最近的质心所在的簇——重新为每个簇计算质心所在位置——重复步骤二和三直到质心收敛。其计算复杂度为 ,T为步骤四中迭代次数,他对于用户给定的簇中心点的初始位置和噪声点非常敏感。同时,在处理海量数据的时候运行时间较长。
1.2基于层次的空间聚类算法
层次聚的目的是将数据对象分配到一个层次结构中,它遵循两种剧本策略:向上凝聚和向下分裂。向上凝聚方法将每一个对象看做独立的簇,然后从整个层次结构的底层开始对具有相似特征的簇聚合,逐层递归至顶层。相反,向下分裂方法把所有的数据对象看做同一个簇,然后从整个层次结构的顶层开始,对具有不同特征的簇进行分裂,逐层递归至底层。其计算的事件复杂度是
1.3基于密度的空间聚类算法
基于茄竖密度的聚类算法在发现任意形状和数据造成方面具有独特的优势,且不要求对簇的数量进行初始设置。其算法包括:DBSCAN算法,OPTICS算法,DENCLUE算法,CURD算法,Incremental DBSCAN算法,SDBDC算法,ST-DBSCAN算法等。DBSCAN是第一个被提出的基于密度的聚类算法。而密度主要通过两个基本参数进行定义:空间半径 和密度阈值MinPts.
DBSCAN基本概念:
算法的主要缺点是它的运算时间复 ,因此对海量空间数据的聚类过程需要经过一个无法忍受的耗时。它的另一个缺陷是无法支持多密度聚类埋枝、增量聚类和并行计算。许多工作针对这些问题进行了研究他们可以被概括为两大类工弯纳敏作:⑴算法改进;(2)算法并行化。传统的改进方法采用空间索引技术来快速锁定数据对象。GirDBSCAN被称为最先进的DBSCAN算法它基于网格划分策略极大的减低了算法的时间复杂度,且没有计算精度损失。得益于网格的超规则空间结构,任意两个格子之间的最短空间距离可以很容易被获取。对于任意点 ,其关于 的近邻点只存在于一个固定的格子集合范围内;换言之,那些格子集合范围外的点一定不是其的近邻点,因此这些点与点 之间的距离计算可以被省略,从而提高DBSCAN算法的计算效率。基于这个想法,Gunawan将整个网格划分为以 为边长的正方形格子,用于2维空间数据的基于密度聚类计算,使得每个正方格子内的最大空间距离为因此一旦格子内的点的数量达到或超过MinPts,则该格子里的所有点都是核心点,且属于同一个簇。因此一个簇可以通过密度相连格子和密度可达格子的最大集合进行计算,从而省略了许多点与点之间的距离计算。同时采用了Voronoi图技术,进一步改进了DBSCAN算法的运算效率。但是,构建一个Voronoi图本身需要消耗大量的时间。基于这个想法,Gan和Tao提出了一种关于p近似DBSCAN算法来获得近似精度的计算结果,但只需要关于N的线性计算时间,用于取代传统的DBSCAN算法。
1.4基于网格的聚类
基于网格聚类算法将数据空间划分为规则的互不相交的格子,再将所有的数据对象映射带网格中基于格子进行聚类。总结一下就是:将对象空间量化为有限数目的单元,形成一个网状结构,所有聚类都在这个网状结构上进行。
我们将学习一下STING算法以及CLIQUE算法。
⑺ 层次聚类方法的典型算法分别是
层次聚类方法的典型算法分别是:
1、凝聚的层次聚类:
AGNES算法(AGglomerative NESting):采用自底向上烂前闭的策略。最初将每个对象作为一个簇,然后这些簇根据某些准则被一步一步合并, 两个簇间的距离可以由这两个不同簇中距离最近的数据点饥裂的相似度来确定;聚类的合并过程反复进行直到所有的对象满足簇数目。凝聚类的用的比较多一些。
层次聚类
层次聚类试图在不同悔汪层次对数据集进行划分,从而形成树形的聚类结构。数据集划分可采用“自底向上”的聚合策略,也可采用“自顶向下”的分拆策略。层次聚类是另一种主要的聚类方法,它具有一些十分必要的特性使得它成为广泛应用的聚类方法。
它生成一系列嵌套的聚类树来完成聚类。单点聚类处在树的最底层,在树的顶层有一个根节点聚类。根节点聚类覆盖了全部的所有数据点。
⑻ 常用的聚类方法有哪几种
聚类分析的算法可以分为划分法、层次法、基于密度的方法、基于网格的方法、基于模型的方法。
1、划分法,给定一个有N个元组或者纪录的数据集,分裂法将构造K个分组,每一个分组就代表一个聚类,K<N。
2、层次法,这种方法对给定的数据集进行层次似的分解,直到某种条件满足为止。
3、基于密度的方法,基于密度的方法与其它方法的一个根本区别是:它不是基于各种各样的距离的,而是基于密度的。这样就能克服基于距离的算法只能发现“类圆形”的聚类的缺点。
4、图论聚类方法解决的第一步是建立与问题相适应的图,图的节点对应于被分析数据的最小单元,图的边(或弧)对应于最小处理单元数据之间的相似性度量。
5、基于网格的方法,这种方法首先将数据空间划分成为有限个单元的网格结构,所有的处理都是以单个的单元为对象的。
6、基于模型的方法,基于模型的方法给每一个聚类假定一个模型,然后去寻找能够很好的满足这个模型的数据集。
(8)划分聚类算法扩展阅读:
在商业上,聚类可以帮助市场分析人员从消费者数据库中区分出不同的消费群体来,并且概括出每一类消费者的消费模式或者说习惯。
它作为数据挖掘中的一个模块,可以作为一个单独的工具以发现数据库中分布的一些深层的信息,并且概括出每一类的特点,或者把注意力放在某一个特定的类上以作进一步的分析;并且,聚类分析也可以作为数据挖掘算法中其他分析算法的一个预处理步骤。
许多聚类算法在小于 200 个数据对象的小数据集合上工作得很好;但是,一个大规模数据库可能包含几百万个对象,在这样的大数据集合样本上进行聚类可能会导致有偏的结果。
许多聚类算法在聚类分析中要求用户输入一定的参数,例如希望产生的簇的数目。聚类结果对于输入参数十分敏感。参数通常很难确定,特别是对于包含高维对象的数据集来说。这样不仅加重了用户的负担,也使得聚类的质量难以控制。