数据挖掘中聚类算法概述

来源:互联网 发布:js怎么访问局部变量 编辑:程序博客网 时间:2024/05/17 08:52

1 聚类方法概述

聚类方法是将物理或抽象对象的集合组成为由类似的对象组成的多个类的过程被成为聚类。由聚类所组成的簇是一组数据对象的集合,这些对象与同一簇中的对象彼此类似,与其他簇中的对象相异。在许多应用中,可以将一些簇中的数据对象作为一个整体来对待。

聚类是研究数据间逻辑上或物理上的相互关系的技术,其分析结果不仅可以揭示数据间的内在联系与区别,还可以为进一步的数据分析与知识发现提供重要依据。它是数据挖掘技术中的重要组成部分。作为统计学的重要研究内容之一,聚类分析具有坚实的理论基础,并形成了系统的方法学体系。

数据挖掘中聚类算法的应用很广泛。在商务上,聚类能帮助市场分析人员从客户基本库中发现不同的客户群,并且用不同的购买模式来刻画不同的消费群体的特征。在生物学上,聚类能用于帮助推导植物和动物的种类,基因和蛋白质的分类,获得对种群中固定结构的认识。聚类在地球观测数据中相似地区的确定,根据房屋的类型、价值和位置对一个城市中房屋的分类发挥作用。聚类也能用来对web上的文档进行分类,以发现有用的信息。聚类分析能作为一种独立的工具来获得数据分布的情况,观察每个簇的特点,并对某些特定的节点进一步分析。此外,聚类还可以作为其他方法的预处理步骤。

数据聚类正在蓬勃的发展,有贡献的领域包括数据挖掘,统计学,机器学习,空间数据库技术,生物学以及市场营销。现在数据聚类分析已经成为一个非常活跃的研究课题。

作为统计学的一个分支,聚类分析已经被广泛地研究若干年,主要集中在基于距离的聚类分析。基于k-means(k-平均值)、k-medoids(k-中心点)和其他一些的聚类分析工具已经被加入到许多统计分析的软件中,例如S-Plus、SPSS和SAS。

在机器学习领域,聚类分析是无指导学习的例子。与分类不同,聚类不需要依赖事先定义的类和带符号的训练实践。所以聚类分析是观察式学习,而不是示例式学习。

在数据挖掘领域,研究工作已经集中在为大型数据库的有效和实际的聚类分析寻找适当的方法。活跃的研究课题集中在聚类方法的可伸缩性,方法对聚类复杂形状和类型的数据的有效性,高维聚类分析技术,以及针对大型数据库中混合数值和分类数据的聚类方法。

由于研究的需要,现在将重点放在数据挖掘中聚类方法的应用上。数据挖掘中对聚类的典型要求如下:

(1)可伸缩性。一般的聚类算法使用鱼规模小于200的数据集合上,而现在很多大型数据库的数据量达到百万个,这就要求聚类有好的可伸缩性。

(2)处理不同类型属性的能力。应用的多元化,可能要求一个聚类能处理多种数据类型,像二元类型、分类/标称类型、序数型数据,或者这些类型的混合。

(3)发现任意形状的聚类。基于距离的聚类算法趋向于发现相近尺度和密度的球状簇。但一个簇的形状是任意的,所以就要求聚类能发现这些被忽略的聚类。

(4)用于决定输入参数的领域知识的最小化。由于聚类结果对输入参数的要求很敏感,但参数通常很难确定,特别是对于高维对象的数据来说。所以输入参数的质量直接影聚类的结果,这就加重了用户的负担。

(5)处理噪声数据的能力。绝大多数数据集中存在很多孤立点、空缺、未知数据或错误数据。一些聚类算法对于这样的数据敏感,导致低质量聚类结果。

(6)对输入数据的顺序不敏感。

(7)高维性。一个数据库或是数据仓库可能只包含若干维,很多聚类算法只涉及两到三维。人类对于三维以内的数据有判断性,高于三维的数据聚类的挑战性很高,数据可能很稀疏,也可能高度偏斜。

(8)基于约束的聚类。现实世界可能要在约束条件下进行聚类,这就要求既要满足客户特定的约束,又具有良好聚类特性的数据分组。

(9)可理解行和可用性。用户希望聚类结果是可解释的,可理解的,并且是可用的。也就是,聚类与最后的应用相联系。应用目标对聚类方法的影响也是一个重要的课题。

2 聚类方法基础

2.1 聚类过程简述

聚类是一个将数据集划分为若干组或簇的过程,使得同一类的数据对象之间的相似度较高,而不同类的数据对象之间的相似度较低。聚类问题的关键是把相似的事物聚集在一起。如图2-1给出了一个聚类任务遵循的一般步骤:

图 2-1 聚类的一般步骤(图传不上去)

聚类的一般步骤的细节如下:

(1)特征选择。必须适当地选择特征,尽可能多的包含任务关心的信息。在特征中,信息多余减少和最小化是主要目的。

(2)相似性度量。用于定量度量两个特征向量之间如何“相似”或“不相似”。一个简单的度量如欧氏距离经常被用来反应两个特征向量之间的非相似性。

(3)聚类算法。已经选择了合适的相似性度量,这步涉及到选择特定的聚类算法,用于揭示数据集中的聚类结构。

(4)结果验证。一旦用聚类算法得到结果,就需要验证其正确性。

(  5)结果判定。在许多情况下,应用领域的专家必须用其他实验数据和分析判定聚类结果,最后做出正确的结论。

聚类分析有很多种算法,每种算法都是优化了某一方面或某几方面的特征。聚类算法的优劣标准本身就是一个值得研究的问题,对于聚类的评价有不同的标准。现在通用的聚类算法都是从几个方面来衡量的,而没有完全使用量化的客观标准。下面给出六条关于聚类的主要标准:

(1)处理大的数据集的能力。

(2)处理任意形状,包括有间隙的嵌套的数据的能力。

(3)算法处理的结果与数据输入的顺序是否相关,也就是说算法是否独立于数据输入顺序。

(4)处理数据噪声的能力。

(5)是否需要预先知道聚类个数,是否需要用户给出领域知识。

(6)算法处理有很多属性数据的能力,也就是对数据维数是否敏感。

对于一个聚类算法可以从以上几个方面综合考虑。

2.2 聚类方法的数据结构

基于内存的聚类算法有以下两种代表性的数据结构:

数据矩阵(对象与变量结构):

(1)       它用p个变量表现n个对象,这种数据结构是关系表的形式,或看成n×p的矩阵。

x11 … x 1f … x1p

   :

xi1 … xif  …xip

   :

xn1 … xnf … xnp

(2)       相异度矩阵(对象-对象结构):存储n个对象两两之间的近似性,表现形式是一个n×n维的矩阵。

0

d(2,1)0

d(3,1)d(3,2)0

              :

d(n,1)d(n,2)… … 0

这里d(i,j)是对象i和对象j之间相异性的量化表示,通常为非负值,当两个对象i,j越相似,其值越接近0;反之,则值越大。

2.2.1 区间标度变量

   区间标度变量是一个粗略线性标度的连续变量。用来计算相异度d(i,j),其距离度量包括欧几里德距离,曼哈坦距离和明考斯基距离。

   首先实现数据的标准化,给定一个变量f的度量值,可以进行一下转化:

(1)计算平均的绝对偏差Sf

S =(|x1f-mf|+|x2f-mf|+……+|xnf-mf|)/n

这里x1f,……,xnf是f的n个度量值,mf是f的平均值。

(2)计算标准化的度量值:

Zif = (xif-mf)/sf

   我们知道对象之间的相异度是基于对象间的距离来计算的。最常用的度量方法是欧几里德距离,其形式如下:

d(i,j) =(|xi1-xj1|2+|xi2-xj2|2+……+|xip-xjp|2)1/2

这里i=(xi1,xi2,……,xip)和j=(xj1,xj2,……,xjp)是两个p维的数据对象。

曼哈坦距离的公式如下:

d(i,j)=|xi1-xj1|+|xi2-xj2|+……|xip-xjp|

上面的两个公式必须满足下面的条件:

 

d(i,j)≧0:距离非负。

d(i,i)=0:对象与自身的距离为0。

d(i,j)=d(j,i):距离函数具有对称性。

d(i,j)≦d(i,h)+d(h,j):对象i到对象j的距离小于等于途经其他任何对象h的距离之和。

 

   明考斯基距离是以上两中距离计算公式的概括,其具体的公式如下:

d(i,j) =(|xi1-xj1|q+|xi2-xj2|q+……+|xip-xjp|q)1/q

当q=1时该公式就是欧几里得距离公式;当q=2时,是曼哈坦距离公式。

2.2.2二元变量

二元变量只有0、1两个状态,0表示变量为空,1表示该变量存在。

 

 

对象j

 

 

1

0

Sum

对象i

1

q

r

q+r

0

s

t

s+t

Sum

q+s

r+t

p

p=q+r+s+t

二元变量中基于对称的二元变量的相似度称为恒定相似度,这里有最著名的简单匹配系数来评价两个对象之间的相似度,其定义如下:

d(i,j)=(r+s)/(q+r+s+t)

基于不对称的二元变量的相似度称为非恒定相似度,最著名的评价系数是Jaccard系数,形式如下:

d(i,j)=(r+s)/(q+r+s)

这里负匹配的数目t被认为是不重要的,所以省略

2.2.3 标称型、序数型和比例标度型变量

(1)标称变量

标称变量是二元变量的推广,具有多于两个的状态值。如,draw_color是一的标称变量,状态有很多:红色、黄色、绿色、棕色、黑色、白色……。

标称变量之间的相异度可以用简单匹配方法来计算:

d(i,j)=(p-m)/p

这里m是匹配的数目,即对i和j取值相同的变量数目,而p是全部变量的数目。p是全部变量的数目。

(2)序数型变量

序数型变量分离散的序数型变量和连续的序数型变量。其相似度的计算可以用2.1中提到的任何一个距离公式计算。

(3)比例标度型变量

比例标度型变量在非线性的标度取正的度量值,如

AeBt或Ae-Bt

这里A、B是正常数。

(4)混合型变量

现实中在一个系统数据库中可能有标度变量、二元变量、标称变量、序数型变量或比例标度变量。

可取的方法是将所有的变量一起处理,只进行一个聚类分析。一种技术将不同类型的变量组合在单个相异度矩阵中,把所有意义的变量转换到共同的至于区间[0.0,1.0]上。

3 主要聚类方法的分类

目前聚类算法有很多种。算法的选择取决于数据的类型、聚类的目的和应用。由于各种聚类算法之间存在很多交集,它们之间并不是完全独立的,所以很难对聚类算法进行严格意义上的划分,现就聚类算法的发展进程分为两类:传统的聚类算法和新发展的聚类算法。具体分类如图3-1.

聚类算法综述(5)

 

3.1 传统聚类算法

3.1.1 层次方法

层次法对给定的数据对象集合进行层次似的分解。按层次分解的形成方式,层次法可分为凝聚和分裂两大类。凝聚的方法,也称为自底向上的方法,一开始将每个对象作为单独的一个类,然后相继地合并相近的类,直到所有的类合并为一个(层次的最上层),或者达到一个终止条件为止。分裂的方法,也称为自顶向下的方法,一开始将所有的对象置于一个类中。在迭代的每一步中,类被分裂为更小的类,直到每个类只包含一个对象,或者达到一个终止条件为止。在凝聚或者分裂层次聚类方法中,通常以用户定义的希望得到的类的数目作为结束条件。在类的合并或分裂过程中,需要考察类间的距离。类间距离的度量广泛采用如下四种方法:

最小距离:dmin(Ci,Cj)=minp∈Ci,p'∈Cj|p- p' |

最大距离:dmax(Ci,Cj)=maxp∈Ci,p'∈Cj|p- p' |

平均值距离:dmcan(Ci,Cj)=|mi- mj|

平均距离:

层次方法(Hierarchical Method)中代表算法有BIRCH、CURE、ROCK、CHAMELEON算法等。

3.1.2 划分方法

给定一个包含n个数据对象的数据集,划分法构建数据的k个划分,每个划分表示一个类,并且k≤n。同时满足如下的要求:①每个组至少包含一个对象;②每个对象属于且仅属于一个组。给定要构建的划分的数目k,创建一个初始划分。然后采用一种迭代的重定位技术,尝试通过对象在划分间移动来改进划分。判定一个好的划分的一般准则是:在同一个类中的对象之间尽可能“接近”或相关,在不同类中的对象之间尽可能“远离”或不同,即使下列准则函数最小:

 

式中的E是数据集中所有对象的平方误差的总和;mi是类Ci的平均值(或中心点),p是数据空间中的数据对象(p和mi都是多维的)。为了达到全局最优,基于划分的聚类要求穷举所有可能的划分。基于划分的方法(Partitioning Method),其代表算法有K-MEANS、K-MEDOIDS、大型数据库划分方法(CLARANS)等。

3.1.3 基于密度的方法

绝大多数划分方法基于对象之间的距离进行聚类,这样的方法只能发现球状的类,而在发现任意形状的类上有困难。因此,出现了基于密度的聚类方法,其主要思想是:只要邻近区域的密度(对象或数据点的数目)超过某个阈值,就继续聚类。也就是说,对给定类中的每个数据点,在一个给定范围的区域内必须至少包含某个数目的点。这样的方法可以过滤“噪声”数据,发现任意形状的类。但算法计算复杂度高,一般为O(n2),对于密度分布不均的数据集,往往得不到满意的聚类结果。其代表算法有DBSCAN、OPTICS和DENCLUE等。

3.1.4 基于网格的方法

基于网格的方法把对象空间量化为有限数目的单元,形成一个网格结构。所有的聚类操作都在这个网格结构(即量化空间)上进行。这种方法的主要优点是它的处理速度很快,其处理速度独立于数据对象的数目,只与量化空间中每一维的单元数目有关。但这种算法效率的提高是以聚类结果的精确性为代价的。它的代表算法有STING、CLIQUE、WAVE- CLUSTER等。

3.1.5 基于模型的方法

基于模型的聚类算法为每簇假定了一个模型,寻找数据对给定模型的最佳拟合。一个基于模型的算法可能通过构建反应数据点空间分布的密度函数来定位聚类。它也基于标准的统计数字自动决定聚类的数目,老吕噪声数据或孤立点,从而产生健壮的聚类方法。基于模型的聚类试图优化给定的数据和某些数据模型之间的适应性。这样的方法经常是基于这样的假设:数据是根据潜在的概率分布生成的。基于模型的方法主要有两类:统计学方法和网络神经方法。其中,统计学方法有COBWEB算法,网络神经方法有SOM算法。

3.1.6 基于约束的方法

真实世界中的聚类问题往往是具备多种约束条件的,然而由于在处理过程中不能准确表达相应的约束条件、不能很好地利用约束知识进行推理以及不能有效利用动态的约束条件,使得这一方法无法得到广泛的推广和应用。这里的约束可以是对个体对象的约束,也可以是对聚类参数的约束,它们均来自相关领域的经验知识。该方法的一个重要应用在于对存在障碍数据的二维空间数据进行聚类。COD(Clustering with Ob2structed Distance)就是处理这类问题的典型算法,其主要思想是用两点之间的障碍距离取代了一般的欧氏距离来计算其间的最小距离。

3.2 新发展的聚类算法

3.2.1 基于模糊的聚类方法

传统的聚类分析是一种“硬”聚类(CrispClustering)方法,隶属关系采用经典集合论中的要么属于要么不属于来表示,事物之间的界限有着截然不同的区别。然而,现实生活中很多事物特征无法给出一个精确的描述,例如把人按身高分为“高个子的人”,“矮个子的人”,“不高不矮的人”。然而,多高算高?多矮算矮?这样的分类判别是经典分类解决不了的问题。模糊聚类分析方法为解决此类问题提供了有力的分析工具。该方法把隶属关系的取值从笼{0,1}二值逻辑扩展到[0,1]区间,从而更合理地表示事物之间存在的中介性。

目前国内外对模糊聚类分析的研究非常重视,参与这个学科研究的国度遍布全球,研究人员与日俱增,模糊新产品不断问世,模糊技术不断被应用到高精尖领域,基础理论研究与实际应用研究也取得了丰硕的成果。模糊数学目前正沿着理论研究和应用研究两个方向迅速发展。理论研究主要是经典数学概念的模糊化。由于模糊集自身的层次结构,使得这种理论研究更加复杂,当然也因而更具吸引力。目前已形成了模糊拓扑、模糊代数、模糊分析、模糊测度及模糊计算机等模糊数学分支。应用研究主要是对模糊性之内在规律的探讨,对模糊逻辑及模糊信息处理技术的研究。模糊数学的应用范围已遍及自然科学与社会科学的几乎所有的领域。特别是在模糊控制、模式识别、聚类分析、系统评价、数据库、系统决策、人工智能及信息处理等方面取得了显著的成就。

伴随着模糊聚类理论的形成、发展和深化,针对不同的应用,人们提出了很多模糊聚类算法,比较典型的有基于目标函数的模糊聚类方法、基于相似性关系和模糊关系的方法、基于模糊等价关系的传递闭包方法、基于模糊图论的最小支撑树方法,以及基于数据集的凸分解、动态规划和难以辨别关系等方法。其中最受欢迎的是基于目标函数的模糊聚类方法,该方法把聚类归结成一个带约束的非线性规划问题,通过优化求解获得数据集的模糊划分和聚类。该方法设计简单,解决问题的范围广,还可以转化为优化问题而借助经典数学的非线性规划理论求解,并易于在计算机上实现。因此,随着计算机的应用和发展,基于目标函数的模糊聚类算法成为新的研究热点。在基于目标函数的聚类算法中,FCM类型算法的理论最为完善、应用最为广泛。FCM类型的算法最早是从“硬”聚类目标函数的优化中导出的。为了借助目标函数法求解聚类问题,人们利用均方逼近理论构造了带约束的非线性规划函数,从此类内平方误差和(within—   GrouPssumofSquaredError,WGSS)J1,成为聚类目标函数的普遍形式。为极小化该目标函数而采取Pikard迭代优化方案就是著名的硬。一均值(Hard c-means,HCM)算法。后来Dunn把WGSS函数Jl扩展到J2,即类内加权平均误差和函数。Bezdek又引入了一个参数m,把J2推广到一个目标函数的无限簇,即形成了人们所熟知的FCM算法。从此,奠定了FCM算法在模糊聚类中的地位。

3.2.2基于粒度的聚类方法

从表面上看,聚类和分类有很大差异———聚类是无导师的学习,而分类是有导师的学习。具体说来,聚类的目的是发现样本点之间最本质的抱团性质的一种客观反映;分类需要一个训练样本集,由领域专家指明,而分类的这种先验知识却常常是主观的。如果从信息粒度的角度来看,就会发现聚类和分类的相通之处: 聚类操作实际上是在一个统一粒度下进行计算的;分类操作是在不同粒度下进行计算的。在粒度原理下,聚类和分类的相通使得很多分类的方法也可以用在聚类方法中。作为一个新的研究方向,虽然目前粒度计算还不成熟,尤其是对粒度计算语义的研究还相当少,但是相信随着粒度计算理论本身的不断完善和发展,在今后几年,它将在数据挖掘中的聚类算法及其相关领域得到广泛应用。

3.2.3 量子聚类

在现有的聚类算法中,聚类数目一般需要事先指定,如Kohenon自组织算法、K-means算法和模糊K-means聚类算法。然而,在很多情况下类别数是不可知的,而且绝大多数聚类算法的结果都依赖于初值,即使类别数目保持不变,聚类的结果也可能相差很大。受物理学中量子机理和特性启发,可以用量子理论解决此类问题。一个很好的例子就是基于相关点的Pott自旋和统计机理提出的量子聚类模型。它把聚类问题看做一个物理系统。并且许多算例表明,对于传统聚类算法无能为力的几种聚类问题,该算法都得到了比较满意的结果。

量子力学研究的是粒子在量子空间中的分布, 聚类是研究样本在尺度空间中的分布情况。很多文献对量子聚类(Quantum clustering,QC)算法进行了深入的研究, 并应用于生物信息学的研究。QC 算法不需要训练样本, 是一种无监督学习的聚类方法。又因为它是借助势能函数, 从势能能量点的角度来确定聚类中心的, 所以它同样是基于划分的。实践已经证明QC 算法有效。

3.2.4 核聚类

核聚类方法增加了对样本特征的优化过程,利用Mercer核把输入空间的样本映射到高维特征空间,并在特征空间中进行聚类。核聚类方法是普适的,并在性能上优于经典的聚类算法,它通过非线性映射能够较好地分辨、提取并放大有用的特征,从而实现更为准确的聚类;同时,算法的收敛速度也较快。在经典聚类算法失效的情况下,核聚类算法仍能够得到正确的聚类。

近年来核方法被用在聚类分析中,Tax将支持向量方法用于数据域描述(即单一分类)中,提出了基于Gauss核的SVDD(Supprot Vector DomainDeseription)算法,Ben-Hen提出了一种新的无监督非参数型的聚类算法一支持向量聚类(support vector Clustering,SVC)。SVC算法主要分为两个部分:基于支持向量机训练和聚类标识,其中SVM训练部分负责新知识模型的训练,包括Gaussian核宽度系数的优化、Hilbert空间最小包络超球体半径的计算lagrange乘子的计算以及有界支持向量(Bounded Support Vectors,BSVs)与支持向量的选取,再通过DFS(Depth-firstSearch)算法根据关联矩阵进行聚类分配。

Girolaln和焦李成等在结合核方法和聚类算法方面也做了开创性工作。目前已有的聚类算法只能对一些典型分布的样本奏效,比较经典的聚类方法有传统的k-means方法、模糊c均值聚类方法和Kohonen自组织神经网络等,这些方法都没有对样本的特征进行优化,而是直接利用样本的特征进行聚类。

因此上述这些方法的有效性很大程度上取决于样本的分布情况。例如一类样本散布较大,而另一类散布较小的情况,这些方法效果就比较差;如果样本分布更加混乱,则聚类的结果就会面目全非。通过引入核方法把输入空间的数据非线性映射到高维特征空间,增加了数据点的线性可分概率,即扩大数据类之间的差异,在高维特征空间达到线性可聚的目的,从而提高聚类的质量。近年来对核聚类的积极研究,涌现了许多基于核的聚类算法,诸如支持向量聚类,基于核的模糊聚类算法,基于模糊核聚类的SVM多类分类方法,一种硬划分的核聚类算法,而谢维信等人又进一步提出了模糊核聚类算法,并将模糊核聚类算法推广到分类属性的数据中。而核聚类的研究为非线性数据的有效处理带来了突破口,也拓宽了本领域的研究范围。

3.2.5 谱聚类

传统的聚类算法,如k-means算法、EM算法等都是建立在凸球形的样本空间上,但当样本空间不为凸时,算法会陷入局部最优。为了能在任意形状的样本空间上聚类,且收敛于全局最优解,学者们开始研究一类新型的聚类算法,称为谱聚类算法(Spectral Clustering Algorithm)。该算法首先根据给定的样本数据集定义一个描述成对数据点相似度的亲合矩阵,并计算矩阵的特征值和特征向量,然后选择合适的特征向量聚类不同的数据点。谱聚类算法最初用于计算机视觉、VLSI 设计等领域,最近才开始用于机器学习中,并迅速成为国际上机器学习领域的研究热点。

谱聚类算法建立在图论中的谱图理论基础上,其本质是将聚类问题转化为图的最优划分问题,是一种点对聚类算法,对数据聚类具有很好的应用前景。但由于其涉及的理论知识较多,应用也还处于初级阶段,因此国内这方面的研究报道非常少。

4 常用的聚类算法

4.1BIRCH算法

BIRCH算法是一种综合的层次聚类方法。它引入了两个概念:聚类特征和聚类特征树(CF树),用于概括聚类描述。这些结构辅助聚类方法在大型数据库中取得很高的速度和可伸缩性。BIRCH算法对增量或动态聚类也非常有效。一个聚类特征(CF)是一个三元组,给出对象子聚类的信息汇总描述。假设某个子聚类中有N个d维的点或对象{Oi},则该子聚类的CF如下

 

这里N是子类中点的数目,LS是N个点的线性和(即   ),SS是数据点的平方和(即    )。

一个CF树是高度平衡的树,它存储了层次聚类的聚类特征。根据定义,树中非叶子节点有后代或“孩子”,他们存储了其孩子的CF的总和,即汇总了关于其孩子的聚类信息。一个CF树有两个参数:分支因子B和阀值T。分支因子定义了每个非叶子节点孩子的最大数目,而阀值参数给出了存储在树的叶子节点中的子聚类的最大直径。这两个参数影响了结果树的大小。