首页> 中国专利> 一种MapReduce平台上的海量高维数据聚类方法

一种MapReduce平台上的海量高维数据聚类方法

摘要

本发明属于云计算与数据挖掘技术领域,具体为一种MapReduce平台上的海量高维数据聚类方法。该方法首先对原始数据的每一维进行分割,用切分好的非空小格代替原数据中的点集进行聚类,减小数据规模。利用MapReduce的开源实现,使得聚类过程可以在分布式集群上并行完成,克服了单机算法在存储和计算上的限制。聚类过程采用K-mediods算法的思想,并提出高效的欧式距离计算方法。本发明适用于处理海量高维数据,用户可以根据集群的计算能力、算法的时间期望以及对聚类精确性的要求对算法进行手动调整,满足了不同用户的需要。

著录项

  • 公开/公告号CN102222092A

    专利类型发明专利

  • 公开/公告日2011-10-19

    原文格式PDF

  • 申请/专利权人 复旦大学;

    申请/专利号CN201110148982.5

  • 发明设计人 廖松博;何震瀛;汪卫;

    申请日2011-06-03

  • 分类号G06F17/30(20060101);

  • 代理机构31200 上海正旦专利代理有限公司;

  • 代理人陆飞;盛志范

  • 地址 200433 上海市杨浦区邯郸路220号

  • 入库时间 2023-12-18 03:34:35

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-07-21

    未缴年费专利权终止 IPC(主分类):G06F17/30 授权公告日:20130227 终止日期:20160603 申请日:20110603

    专利权的终止

  • 2013-02-27

    授权

    授权

  • 2012-05-30

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20110603

    实质审查的生效

  • 2011-10-19

    公开

    公开

说明书

技术领域

本发明属于云计算与数据挖掘技术领域,具体涉及一种利用MapReduce分布式计算框架对海量高维数据的进行聚类的方法。

背景技术

高维数据的分析一直是数据挖据中的难题,当维度达到一定高度时,很多对低维数据很有效的聚类方法便不再适用。对于海量高维数据来说,分析和挖掘更涉及到内存和硬盘的限制。

近年来,MapReduce及其开源版本Hadoop的研究非常活跃。许多单机算法都在Hadoop上予以重新实现,为各种算法处理海量数据提供了高可用性和可扩展性。

Mahout是 Apache 旗下基于Hadoop的一个开源项目,提供一些可扩展的机器学习领域经典算法在Hadoop上的实现,包括聚类、分类、推荐过滤、频繁子项挖掘。Mahout将很多数据挖掘的经典算法,例如K-means,贝叶斯分类,SVM等在Hadoop-MapReduce平台上重新实现,使得这些传统算法具有并行处理海量数据的能力。通过使用 Hadoop,Mahout 中的各种数据挖据算法可以有效地扩展到分布式集群中。

但是,在Mahout中针对坐标的聚类方法例如K-means,往往是面向低维数据,在对海量高维数据进行聚类时往往会出现内存不足,性能不佳等问题。

发明内容

本发明的目的是针对海量高维数据的聚类问题,提出一种利用MapReduce分布式计算框架对海量高维数据的进行高效聚类的方法,为用户提供可定制性和可扩展性,并优化算法效率。

本发明提出的高维数据聚类方法,利用Hadoop分布式计算框架,结合切格处理和高效距离计算,对海量高维数据进行分布式并行聚类,实现了高可扩展性和可定制性,提高了聚类的效率和实际应用价值。

首先对一些基本概念进行介绍和定义:

定义1. MapReduce:MapReduce是谷歌提出的分布式并行计算框架,它让程序员只需关注数据的处理,而数据的分布式存储和容错都交给计算框架来解决。在MapReduce平台上的计算过程中,数据首先被切分到集群的不同节点上,以Key→Value的形式存储在分布式文件系统中;计算过程主要分为两个阶段:Map阶段和Reduce阶段。集群中的每台机器都有一些几个Map和Reduce任务,Map过程是生成一些<key,value>,共享同一个key的<key,value>由同一个Reduce来处理。而我们所使用的Hadoop是MapReduce的开源实现,由Apache基金会开发。

定义2. K-mediods算法:K-mediods算法是一种基于坐标的聚类算法,算法基本过程是首先选择一些中心点代表每个类,之后按每个点与中心点的距离将所有点分配到类中,再将每个类中的所有点坐标求中位数得到新的类中心点,反复迭代,直到中心点不再变化。K-mediods算法类似于K-Means算法,但克服了K-Means算法对孤立点的敏感性。

定义3. 切格:设初始数据中的每个点都有D维,本方法将每一维切成N等份(N由用户指定),切分完毕后,,每个点都落入唯一的格子中,所有格子在每一维的坐标都是[0,N )的一个整数。本发明在聚类过程中使用所有非空格子代替初始点集进行聚类。

定义4. 记录:在处理过程中,本发明用每一行记录代表一个点或一个非空格子的所有维坐标。例如“0 7 6 3 5”,代表一个5维格子的坐标。

定义5. 用ASCII码计算欧氏距离:在计算欧式的距离过程中,由于每一维的切格数N往往小于128,一般情况下常常小于10,可以用每一行记录的各有效位的ASCII码直接相减,再求平方和得到欧式距离。例如N=10,两个格子坐标行分别为“7 5 6 2”和“4 6 8 0”,可以用两行的单数位ASCII码直接相减,不用将每个坐标字符转换为数字再相减,大大提高了计算效率;

根据以上定义,给定海量高维数据集合,每一行为一个点的D维坐标,本发明提出的聚类方法是基于以下性质的:

(1)在将每一维切成N格后,每个点都落入唯一的D维格子中,N越大,每个D维格子中的点越少,用D维格子进行聚类与用原始点集进行聚类的结果越接近。

(2)由于非空的D维格子数量小于原始点集的数量,而且D维格子的所有坐标均为整数,而原始点集的坐标往往为浮点数,所以数据规模必然下降。

(3)在K-mediods迭代聚类过程中,当所有中心点坐标不再变化,每个D维格子已经分配给固定的类,聚类过程完毕。

(4)在计算欧式距离时,当坐标值小于128,用两个ASCII码直接相减和两个数字相减求距离结果是一样的。

基于以上性质,本发明方法利用切格和高效距离计算方法,在MapReduce平台上实现海量高维数据聚类,整个聚类过程具体步骤为:

(1)对于输入的海量高维数据(假设为D维)进行预处理,首先是对原数据各维进行标准化,之后将每一维切成N格,生成非空D维格子的集合;

(2)以步骤(1)输出的结果作为输入,实现MapReduce平台上的K-mediods并行算法,通过迭代计算对所有非空的D维格子进行聚类;

(3)将步骤(2)得出的D维格子聚类的结果还原成原始的D维数据聚类结果,并按照用户的需求进行最终整理输出。

整个聚类过程步骤(1)中,所述预处理的操作如下:

(1)由用户指定每一维切成几格,假设切成N格。N越大,聚类效果越精确,但聚类时间会更长。N越小,聚类的时间越短,但聚类效果会较差; N由用户根据需求自己设定;

(2)利用MapReduce计算每一维的最大值和最小值:Map过程读入所有数据,将每行记录中每一维分别输出,而每个Reduce处理所有记录在某一维上的坐标,并计算出所有点在此维的最大值和最小值;

(3)利用操作(2)的结果,将原始数据每个坐标标准化即映射为[0,N)之间的某个整数。假设输入坐标为doublenum,此维度的最大值最小值分别为Max和Min,则标准化后的此维度的坐标值为(doublenum-Min)*10/(Max-Min),省略小数部分,输出整数结果。即所有切格后非空的D维格子的坐标;

(4)去除坐标重复的D维格子,通过排序后一边扫描进行去重;

(5)将去重后的数据上传到HDFS(Hadoop的分布式文件系统上)。

整个聚类过程步骤(2)中,所述K-mediods并行算法的操作如下:

(1)首先在所有的D维格子中选出一些类中心点:假设要求将所有点聚成C个类,在上述说明2中所生成的非空格子集合中随机选择C个格子作为中心点,作为最初的中心点集合;

(2)将中心点集合分发到集群中所有机器的本地硬盘上;

(3)分类过程:Map过程将所有格子均匀分布到每台机器上,每台机器的Reduce过程收集分配给它的所有D维格子,并从本地读取此时的中心点集合,计算每个D维格子离哪个中心点最近,将格子分配给与其距离最近的中心点所管辖的类中。在计算距离过程中,由于每一维的切格数N往往小于128,可以用两个格子的坐标记录中各有效位的ASCII码直接相减再求平方和得到欧式距离。可以极大提高计算效率;

(4)更新中心点集合:Map过程将离每个中心点所管辖的类中的所有D维格子分配给同一个Reduce来处理。而每个Reduce计算本类中所有格子坐标在每一维上的中位数,作为新的中心点坐标,并输出;

(5)按照操作(4)的输出生成新的中心点集合,并分发到集群中所有机器的本地硬盘上,取代之前的集合;

(6)重复操作步骤(3)、(4)和(5),直到中心点集合中的所有坐标都不再改变;

(7)输出聚类结果。

整个聚类过程步骤(3)中所述还原输出过程的操作如下:

(1)匹配过程:Map输入数据为两部分:一是所有的D维格子及其所属的类编号,二是原始数据,即所有的初始点坐标。Map根据这两部分数据计算每个点坐标在哪个格子内,并根据每个格子所属的类,将其匹配关系及每个点的类号输出给Reduce;

(2)每个Reduce收集属于一个类的所有点,并将其输出;

(3)将输出结果按用户需求进行相关格式调整,输出最终结果。

根据以上步骤进行的聚类方法,在预处理阶段减小了数据规模,在聚类阶段使用了高效的距离计算方法,从而改善了系统运行的时间。附图2为采用切格方法与不采用切格方法的聚类时间对比,附图3为用ASCII码计算欧氏距离与将坐标记录转换为数字再计算距离的时间对比。从图中可以看出,本发明方法的显著的改善了聚类的执行时间。

综上所述,本发明首先对原始数据的每一维进行分割,用切分好的非空小格代替原数据中的点集进行聚类,减小数据规模。分割规则可以由用户指定,实现了良好的可定制性。利用MapReduce的开源实现——Hadoop,使得聚类过程可以在分布式集群上并行完成,克服了单机算法在存储和计算上的限制。聚类过程采用K-mediods算法的思想,并提出高效的欧式距离计算方法。本发明适用于处理海量高维数据,用户可以根据集群的计算能力、算法的时间期望以及对聚类精确性的要求对算法进行手动调整,满足了不同用户的需要。

附图说明

图1显示了MapReduce分布式框架的计算处理过程。

图2显示了采用切格方法与不采用切格方法的聚类时间对比。二者均不采用ASCII码计算欧氏距离。取的时间为K-mediods每轮迭代的时间。

图3显示了在同是切成6格和10格的情况下,使用ASCII码计算欧氏距离与将坐标记录转换为数字再计算距离的时间对比。取的时间为K-mediods每轮迭代的时间。

图4显示了一部分聚类结果。

具体实施方式

本发明所描述的高维聚类方法是基于MapReduce分布式计算平台和K-mediods算法的,下面将通过一个例子详细描述本发明所述方法的具体实施方式:

输入数据为2000个音乐特征文件,是从2000首中文歌曲中提取出的。每首歌被分割成约5000帧,每帧有26个属性,用浮点数表示,要求将所有帧聚成1500个类。我们将此约1000万帧看做点集合,每个点的26个属性作为26维坐标,按照以下步骤进行聚类:

(1)首先将每一维切成10格(N=10),得到所有非空的26维格子,并去重。由于N=10,所以每一维的坐标值为 [0,9]范围内的整数。

(2)在步骤(1)输出的所有26维格子中随机选择1500个格子作为最初的中心点。

(3)将步骤(1)输出的所有26维格子在MapReduce分布式平台上进行聚类。在计算距离时,用两个格子坐标记录中的0,2,4…50为的ASCII码直接相减求平方和得到欧氏距离。

(4)用当前每个类中所有格子在每一维上坐标求中位数,作为新的类中心点坐标。更新所有的中心点坐标。

(5)重复步骤(3)、(4)直到所有中心点坐标不再变化。

(6)将已经聚好类的26维格子还原成原本的点集。并按用户的需求输出最终结果。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号