聚类算法1

Posted 智能算法研究学习1688

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聚类算法1相关的知识,希望对你有一定的参考价值。

     

聚类算法和分类算法总结

原文:http://blog.chinaunix.net/uid-10289334-id-3758310.html
 
聚类算法的种类:
 
基于划分聚类算法(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 目前的许多算法都只是理论上的,经常处于某种假设之下,比如聚类能很好的被分离,没有突出的孤立点等,但是现实数据通常是很复杂的,噪声很大,因此如何有效的消除噪声的影响,提高处理现实数据的能力还有待进一步的提高。

 

分类算法总结

 

原文:http://blog.csdn.net/chl033/article/details/5204220

 

目前看到的比较全面的分类算法,总结的还不错
 2.4.1
主要分类方法介绍解决分类问题的方法很多[40-42] ,单一的分类方法主要包括:决策树、贝叶斯、人工神经网络、K-近邻、支持向量机和基于关联规则的分类等;另外还有用于组合单一分类方法的集成学习算法,如BaggingBoosting等。 
 
1)决策树 
 
决策树是用于分类和预测的主要技术之一,决策树学习是以实例为基础的归纳学习算法,它着眼于从一组无次序、无规则的实例中推理出以决策树表示的分类规则。构造决策树的目的是找出属性和类别间的关系,用它来预测将来未知类别的记录的类别。它采用自顶向下的递归方式,在决策树的内部节点进行属性的比较,并根据不同属性值判断从该节点向下的分支,在决策树的叶节点得到结论。 
 
主要的决策树算法有ID3C4.5C5.0)、CARTPUBLICSLIQSPRINT算法等。它们在选择测试属性采用的技术、生成的决策树的结构、剪枝的方法以及时刻,能否处理大数据集等方面都有各自的不同之处。 
 
2)贝叶斯 
 
贝叶斯(Bayes)分类算法是一类利用概率统计知识进行分类的算法,如朴素贝叶斯(Naive Bayes)算法。这些算法主要利用Bayes定理来预测一个未知类别的样本属于各个类别的可能性,选择其中可能性最大的一个类别作为该样本的最终类别。由于贝叶斯定理的成立本身需要一个很强的条件独立性假设前提,而此假设在实际情况中经常是不成立的,因而其分类准确性就会下降。为此就出现了许多降低独立性假设的贝叶斯分类算法,如TANTree Augmented Na?ve Bayes)算法,它是在贝叶斯网络结构的基础上增加属性对之间的关联来实现的。 
 
3)人工神经网络 
 
人工神经网络(Artificial Neural NetworksANN)是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。在这种模型中,大量的节点(或称神经元,或单元)之间相互联接构成网络,即神经网络,以达到处理信息的目的。神经网络通常需要进行训练,训练的过程就是网络进行学习的过程。训练改变了网络节点的连接权的值使其具有分类的功能,经过训练的网络就可用于对象的识别。 
 
目前,神经网络已有上百种不同的模型,常见的有BP网络、径向基RBF网络、Hopfield网络、随机神经网络(Boltzmann机)、竞争神经网络(Hamming网络,自组织映射网络)等。但是当前的神经网络仍普遍存在收敛速度慢、计算量大、训练时间长和不可解释等缺点。 
 
4k-近邻 
 k-
近邻(kNNk-Nearest Neighbors)算法是一种基于实例的分类方法。该方法就是找出与未知样本x距离最近的k个训练样本,看这k个样本中多数属于哪一类,就把x归为那一类。k-近邻方法是一种懒惰学习方法,它存放样本,直到需要分类时才进行分类,如果样本集比较复杂,可能会导致很大的计算开销,因此无法应用到实时性很强的场合。 
 
5)支持向量机 
 
支持向量机(SVMSupport Vector Machine)是Vapnik根据统计学习理论提出的一种新的学习方法[43] ,它的最大特点是根据结构风险最小化准则,以最大化分类间隔构造最优分类超平面来提高学习机的泛化能力,较好地解决了非线性、高维数、局部极小点等问题。对于分类问题,支持向量机算法根据区域中的样本计算该区域的决策曲面,由此确定该区域中未知样本的类别。 
 
6)基于关联规则的分类 
 
关联规则挖掘是数据挖掘中一个重要的研究领域。近年来,对于如何将关联规则挖掘用于分类问题,学者们进行了广泛的研究。关联分类方法挖掘形如condset→C的规则,其中condset是项(或属性-值对)的集合,而C是类标号,这种形式的规则称为类关联规则(class association rulesCARS)。关联分类方法一般由两步组成:第一步用关联规则挖掘算法从训练数据集中挖掘出所有满足指定支持度和置信度的类关联规则;第二步使用启发式方法从挖掘出的类关联规则中挑选出一组高质量的规则用于分类。属于关联分类的算法主要包括CBA[44] ADT[45] CMAR[46] 等。 
 
7)集成学习(Ensemble Learning 
 
实际应用的复杂性和数据的多样性往往使得单一的分类方法不够有效。因此,学者们对多种分类方法的融合即集成学习进行了广泛的研究。集成学习已成为国际机器学习界的研究热点,并被称为当前机器学习四个主要研究方向之一。 
 
集成学习是一种机器学习范式,它试图通过连续调用单个的学习算法,获得不同的基学习器,然后根据规则组合这些学习器来解决同一个问题,可以显著的提高学习系统的泛化能力。组合多个基学习器主要采用(加权)投票的方法,常见的算法有装袋[47] Bagging),提升/推进[48, 49] Boosting)等。 
 
有关分类器的集成学习见图2-5。集成学习由于采用了投票平均的方法组合多个分类器,所以有可能减少单个分类器的误差,获得对问题空间模型更加准确的表示,从而提高分类器的分类准确度。 
 
2-5:分类器的集成学习 
 
以上简单介绍了各种主要的分类方法,应该说其都有各自不同的特点及优缺点。对于数据库负载的自动识别,应该选择哪种方法呢?用来比较和评估分类方法的标准[50] 主要有:(1)预测的准确率。模型正确地预测新样本的类标号的能力;

2)计算速度。包括构造模型以及使用模型进行分类的时间;

3)强壮性。模型对噪声数据或空缺值数据正确预测的能力;

4)可伸缩性。对于数据量很大的数据集,有效构造模型的能力;

5)模型描述的简洁性和可解释性。模型描述愈简洁、愈容易理解,则愈受欢迎。 

                                                         

聚类算法的目的是将数据对象自动的归入到相应的有意义的聚类中。追求较高的类内相似度和较低的类间相似度是聚类算法的指导原则。一个聚类算法的优劣可以从以下几个方面来衡量:

(1)可伸缩性:好的聚类算法可以处理包含大到几百万个对象的数据集;

(2)处理不同类型属性的能力:许多算法是针对基于区间的数值属性而设计的,但是有些应用需要针对其它数据类型(如符号类型、二值类型等)进行处理;

(3)发现任意形状的聚类:一个聚类可能是任意形状的,聚类算法不能局限于规则形状的聚类;

(4)输入参数的最小化:要求用户输入重要的参数不仅加重了用户的负担,也使聚类的质量难以控制;

(5)对输入顺序的不敏感:不能因为有不同的数据提交顺序而使聚类的结果不同;

(6)高维性:一个数据集可能包含若干维或属性,一个好的聚类算法不能仅局限于处理二维或三维数据,而需要在高维空间中发现有意义的聚类;

(7)基于约束的聚类:在实际应用中要考虑很多约束条件,设计能够满足特定约束条件且具有较好聚类质量的算法也是一项重要的任务;

(8)可解释性:聚类的结果应该是可理解的、可解释的,以及可用的。

1.聚合聚类的策略是先将每个对象各自作为一个原子聚类,然后对这些原子聚类逐层进行聚合,直至满足一定的终止条件;后者则与前者相反,它先将所有的对象都看成一个聚类,然后将其不断分解直至满足终止条件

2.分割聚类算法是另外一种重要的聚类方法。它先将数据点集分为 ! 个划分,然后从这 ! 个初始划分开始,通过重复的控制策略使某个准则最优化以达到最终的结果。

3.基于网格的聚类可以处理任意类型的数据,但以降低聚类的质量和准确性为代价,。CLIOUE也是一个基于网格的聚类算法,它结合了网格聚类与密度聚类的思想,对于处理大规模高维数据具有较好的效果。

4.基于图论的聚类一个优点在于它不需要进行一些相似度的计算,就能把聚类问题映射为图论中的一个组合优化问题。

5.概率聚类算法具有另外几个重要的特性:能处理具有复杂结构的记录;能够连续处理成批的数据;具有在线处理能力;产生的聚类结果易于解释。

6.最近邻距离的计算,通过只保留数据点的 " 个最近邻居从而简化了相似矩阵,并且也保留了与每个数据点相连的最近邻居的个数,但是其时间复杂度也提高到了 o$2)($ 为数据点个数)。

7.K-medoids 方法具有两个优点:它能处理任意类型的属性;它对异常数据不敏感。

原始K-means 算法:聚类结果的好坏依赖于对初始聚类中心的选择;容易陷入局部最优解; " 值的选择没有准则可依循;对异常数据较为敏感;只能处理数值属性的数据,不能用于类别属性的数据;聚类结果可能不平衡。

8.自组织映射具有两个主要特点:!它是一种递增的方法,即所有的数据点是逐一进行处理的;"它能将聚类中心点映射到一个二维的平面上,从而实现可视化。

9.在基于进化理论的聚类方法中,模拟退火的应用经常使用到微扰因子,其作用等同于把一个点从当前的聚类重新分配到一个随机选择的新类别中。

10.遗传算法也可以用于聚类处理,它主要通过选择、交叉和变异这三种遗传算子的运算以不断优化可选方案从而得到最终的聚类结果。

11.对高维数据聚类的困难主要来源于以下两个因素:!高维属性空间中那些无关属性的出现使得数据失去了聚类趋
势;"高维使数据之间的区分界限变得模糊。除了降维这一最直接的方法之外,对高维数据的聚类处理还包括子空间聚类以及联合聚类技术等。

12.子空间聚类的思想,它基于对原始空间在二维平面上的一个投影处理。

13.联合聚类对数据点和它们的属性同时进行聚类。






以上是关于聚类算法1的主要内容,如果未能解决你的问题,请参考以下文章

机器学习聚类算法

机器学习之聚类算法(k-meansCanopy层次聚类谱聚类)

机器学习聚类算法总结

转载各种聚类算法的比较

史诗级干货长文聚类算法

聚类算法1