K-means clustering 介绍论文

来源:互联网 发布:算法英语 编辑:程序博客网 时间:2024/04/30 11:41

论文:基于距离的划分聚簇算法

[http://blog.csdn.net/kingskyleader/article/details/6064838]

叶若芬  李春平
(清华大学软件学院  北京  100084)

摘  要:k-means算法在聚簇大的数据集时是公认比较有效的算法之一,然而它只能应用在具有数值属性描述的数据对象集合上,这种数据对象叫做数值数 据;却无法应用于真实世界中具有其他形形色色属性的数据对象集合上,比如颜色、纹理、形状等特征描述的数据对象集合,这种数据叫做分类数据。为了能对分类 数据进行聚簇,对k-means算法进行了扩展,出现两种新的算法:一种是k-modes算法,另一种是k-prototypes算法。但这两种算法都需 要用户事先确定聚簇数k、阈值t和聚簇中心Q,在不明白数据分布状况的情况下能较准确地确定这3个参数值是很不容易的,改进的k-modes算法有效解决 了这一问题。
关键词:聚簇,k-means,k-modes,k-prototypes,相异度
Distance-based Partition Clustering Algorithm
Ye Ruofen    Li Chunping
(School of Software, Tsinghua University,Beijing 100084,China)

Abstract: The k-means algorithm is well known for its efficiency in clustering large data sets. However, working only on numeric values prohibits it from being used to cluster real world data containing categorical values, such as those data whose attributes is color, texture and shape etc. To cluster categorical values,the k-modes algorithm and k-prototypes algorithm were presented. Yet it is necessary for users to predefine the number of clusters, the center of a cluster and the initial threshold for these algorithms. It is difficult to judge the number of clusters and the initial threshold while not understanding the distribution of the original data. The issue is addressed in this paper for an improved k-modes algorithm.
Key words: Cluster,k-means,k-modes,k-prototypes,Dissimilarity
1  引言
数据挖掘是数据库研究、开发和应用最活跃的分支科学之一,从大量数据中用非平凡的方法发现有用的知识和人们感兴趣的数据模式成了人们的一种自然需求 [1]。随着数据挖掘研究的蓬勃发展,出现很多数据挖掘的方法,其中聚簇是最基本的方法,它既可以独立地应用,也可以作为其他数据挖掘方法的前期工作。在 聚簇方法中,k-means算法是最著名和最常用的划分法之一,根据实际需要相继出现了许多k-means算法的变种。k-means算法能有效地处理规 模较大和高维的数据集合,但却只能聚簇数值数据,因为数值数据能用欧几里德距离测量不同数据对象之间的相异度;不能处理非数值数据,即分类数据。不过现实 生活中碰到的数据类型是各种各样的,要发挥数据挖掘工具应有的作用,设计混合型数据的数据挖掘工具已经成为必然趋势。为了能对分类数据进行聚簇,对k- means算法进行了扩展,出现两种新的算法:一种是k-modes算法,另一种是k-prototypes算法。k-modes算法用了一种简单的相异 度测量处理分类数据,用新的相异度值进行聚簇的过程和k-means算法是一样的;k-prototypes算法结合了k-means算法和k- modes算法的相异度测量方法聚簇数值型和分类型的混合数据[2, 3]。这两种扩展的算法对聚簇大的数据集以及高维的数据集也都是很有效的,不足之处 在于要预先确定把原始数据集分成几个簇,聚簇数k的值对聚簇结果能产生很大影响,关于这一点,本文提出了一种比较有效的解决方法。
2  介绍k-means算法
把数据分成几组,按照定义的测量标准,同组内数据与其他组数据相比具有较强的相似性,这就叫聚簇[4]。聚簇是数据挖掘最基础的操作,但现在存在的一些传统聚簇方法已不能满足处理复杂类型的、高维的、任意分布形状的数据集合的需要。
k-means 算法就是用得最多的一种传统的聚簇方法,是一种划分法,相似度的计算是求数据对象与簇中心的距离,与簇中心距离近的就划为一个簇。其工作 流程如下:首先,随机地选择k个对象,每个对象初始地代表了一个簇的平均值或中心。对剩余的每个对象,根据其与各个簇中心的距离,将其赋给最近的簇。然后 重新计算每个簇的平均值,求出新的簇中心,再重新聚簇。这个过程不断重复,直到准则函数收敛。该算法的时间复杂度是O(nkt),其中n是所有对象数目, k是簇的数目,t是迭代次数。它的效率比较高;缺点是只能处理数值型数据,不能处理分类数据,对例外数据非常敏感,不能处理非凸面形状的聚簇[1]。
3  介绍k-modes算法
k-modes算法改变了k-means算法的相异度测量方法,用一个简单的匹配相异度测量对分类数据进行聚簇处理。
3.1  简单的匹配相异度测量
设X、Y是分类数据集中的两个对象,该对象是m(x1, x2,…,xm) 维的,则这两个对象之间的相异度为:
d (X, Y ) =  
当xj = yj时,(xj,yj) = 0;当xj≠yj时,(xj,yj) = 1。
3.2  k-modes算法的工作流程
(1)预先定义好k个簇,确定出各个簇的簇模式Q即簇重心。
(2)根据簇模式Q将每个对象赋给最邻近的簇,更新簇模式Q,重新分配对象到各        簇中。
(3)不断重复(2),直到不再发生变化为止[2]。
其中,k是指要把数据集分成的簇数,簇模式Q是一代表簇中心的向量,t是阈值。该算法关键是要确定k、Q和t。
3.3  对k-modes 算法的改进之处
对原始数据集合用k-modes算法进行聚簇时,事先让用户指定簇数k、代表簇中心的模式向量Q以及阈值t。对于大量的数据集,用户盲目地确定这3个参数,一般有效性是很差的,下面提出了确定这3个参数的算法思想。
1.确定聚簇数k以及阈值t
为了确定聚簇数k,用一个基于距离计算相异度的聚簇方法聚簇样本数据,下面是具体过程以及解释说明。
(1)从原始数据中随机地取m个点作为样本数据放到集合S中,定义一个初始阈值         t = t0。
(2)给所有的样本数据加上未被聚簇的标记,并定义一个k = 0。
(3)从样本数据集未被聚簇的点中选择一个初始点P。
  { 标记P属于聚簇Ck;
   从P开始递归地按照深度优先方式遍历各点,P' = NEAR(P, t),
   如果P'不是空就属于Ck,否则退回到前一点接着进行搜索,
   更新d,d是聚簇Ck中各对顶点之间的平均距离,
   更新t = t0×d,t是阈值。}
(4)如果还有未聚簇的点,使k = k+1,重复(3)进行聚簇。
其中,函数NEAR(P,t)是:
  { 寻找P的最近邻居P',即dist (P',P)≤t;
   如果没有P'被发现就返回NULL,否则返回P'。}
该算法中采用了古典的基于距离的聚簇方式,距离值就是简单匹配的相异度测量值。随机地从原始数据中取样本读入内存,对样本数据都标记未聚簇,任选一点作为 起始点P,给一个初始阈值t0,一般用一个比较保守的小数据,找与P的距离小于阈值t0的点P',找到后把P'和P划为同一簇,然后求聚簇中数据对象相异 度的平均值以更新阈值t。再找和P'相邻的点,这样按深度搜索算法找遍整个样本集,直到没有点可以进入该簇为止。再找另一未进入簇内的点标记为下一个簇, 还是按深度搜索遍历各点,不断重复,最终可以得到聚簇数k。该算法虽是一古典的基于距离的相异度测量法,但是在对样本聚簇过程中不以一个点为中心进行聚 簇,而以簇内的每个点为中心进行聚簇,这样按深度优先模式继续下去,能得到任意形状的聚簇,不再是只以一点为中心的球形聚簇,此方法的优点是对任意形状的 数据分布聚簇效果都比较好。另外,阈值t初始是预定义的静态值t0,随着聚簇过程中不断加入新点并不断求出聚簇的直径d,阈值t也动态地随着直径d的变化 而变化。
2.用样本数据得到的聚簇结果求聚簇模式Q
用基于频率的方法求模式向量Q的过程如下:
求每一簇中在某一属性上对象数的百分数fr,fr称为相对频率,找出每个簇中相对频率最大的一个的属性作为Q向量的属性值,即让n(k, j)是第k组属 性j上的对象数,fr(Aj =        ck, j/X) = n(k, j)/n最大者就是qj属性。每个属性都这样求,可以得到Q向量。
通过以上过程求得簇数k、阈值t、模式Q三个参数后,下面是完整的k-modes算法流程。
(1)按照簇数k、阈值t、模式Q三个参数,将每个对象赋给最邻近的簇模式Q。
(2)基于相对频率更新簇中的模式。
(3)按新的模式基于相异度重新分配对象,当发现对象应该属于另外一模式时重新分配。
(4)重复(2)、(3)步骤直到没有对象变化为止。
利用k-modes算法让计算机计算聚簇数k、聚簇中心Q和阈值t,将来整个原始数据集的聚簇效果会比较好,但此算法是需要用户主观性地取样本,在对样本 数据聚簇时要人为地先确定一个初始阈值t0。样本的选取采用均匀性或随机的方式;初始阈值一般保守性地取得偏小些,因为考虑有孤立点的干扰。
4  介绍k-prototypes算法
k-modes算法可以处理分类数据、高维数据、大数据集,再加上用图的深度搜索方法求初始簇数、基于频率模式更新簇中心向量值、用相异度平均值求阈值 t,可以说是很有效的聚簇分类数据方法。但在实际应用中非常容易见到的数据类型是这样的:它的数据对象属性是既有数值数据描述的,又有分类数据描述的混合 情况。对于这个问题,k-prototypes算法是结合了k-means算法和k-modes算法来解决的,用数学公式表示其相异度测量方法如下。
两个混合型的对象X和Y,它们的属性描述是A1r,A2r,…,Apr,Ap+1c,…,Amc,前p个属性是数值数据,后m – p个属性是分类数据,这样的两个数据对象X和Y的相异度是:
d (X,Y ) = +  , 
其中,第1部分是欧几里德距离测量数值属性,第2部分是简单匹配相异度测量处理分类属性, 是权值,用来衡量数值属性和分类属性 在聚簇测量中所占权重。每个簇的模式Q的前p个属性是数值型的,就用每个属性i在簇中的平均值作为Q的属性qi的值,后m–p个属性用相对频率最大的一个 作为属性值。对这种混合型数据对象的相异度测量,k-prototypes算法结合了k-means算法和k-modes算法的技术。
5  结论和未来的工作
k-means算法在数据挖掘中最活跃的特性是能有效地聚簇大的数据集,然而它只能应用于数值型数据,k-modes算法和k-prototypes算法 用新的相异度测量法正好弥补了k-means算法不能处理分类数据的缺陷,同时继承了k-means算法的有效性。k-modes算法和k- prototypes算法存在的遗憾是必须预先确定好数据需要分为多少簇,聚簇模式Q是什么,如果这个问题不解决好会直接影响最后的聚簇结果,解决方法是 对样本数据用了一个古典的基于距离的算法来确定聚簇数k和基于频率的方法确定聚簇模式Q,这是一个比较有效的方法。
存在的问题是:对样本的选取是否偏,这在很大程度上取决于用户对数据相关领域知识的熟悉程度,可是人们在实际生活中对许多的领域并不了解,所以应该进一步对k-modes算法和k-prototypes算法进行研究,让用户配置出较准确的参数,取得更好的聚簇效果。
参 考 文 献
[1] Han Jiawei, Michelie Kamber. Data Mining Concepts and Techniques. 北京:机械工业出版社,2001
[2] Huang Zhexue. Extensions to the k- Means Algorithm for Clustering Large Data Sets with Categorical Values. Data Mining and Knowledge Discovery,  1998, 2:283~304
[3] Daniel Barbara. Using Self-Similarity to Cluster Large Data Sets. Data Mining and Knowledge Discovery, 2003, 7:123~152
[4] Dharmendra S. Modha, W. Scott Spangler. Feature Weighting. k-Means Clustering. Machine Learning,             2003, 52:217~237

0 0
原创粉丝点击