一种基于Hadoop的并行k近邻分类方法

文档序号:6366493阅读:198来源:国知局
专利名称:一种基于Hadoop的并行k近邻分类方法
技术领域
本发明涉及一种基于 Hadoop的并行k近邻分类方法。
背景技术
k近邻分类方法是ー种广泛应用并行之有效的分类方法。如何处理海量数据规模的分类,如何高效地完成此类数据挖掘任务具有重大的研究价值。现有的技术是在Hadoop的Mapper端并行计算测试数据与所有训练数据的距离,然后在Reducer端接收以测试数据为key的,距离和类标为value的数据,然后确定每个测试数据的k近邻,最終确定测试数据的分类結果。该技术简单易用,但其中间的传输数据过于庞大,特别是对于海量数据来说,基本是不可能完成的任务,所以必须解决实际应用中的效率问题。

发明内容
发明目的针对上述现有技术存在的问题和不足,本发明的目的是提供一种基于Hadoop的并行k近邻分类方法,能够有效地解决海量数据的分类问题,大大提高分类的速度。技术方案为实现上述发明目的,本发明米用的技术方案为ー种基于Hadoop的并行k近邻分类方法,包括如下步骤(I)数据预处理;(2)在Hadoop各个节点的Mapper端并行计算ー个测试数据与位于该节点的训练数据的距离;(3)在所述Mapper端用选择算法确定该测试数据的局部k近邻数据,将所有局部k近邻数据发送到Hadoop各个节点的Reducer端;(4)在所述Reducer端接收该测试数据的所有局部k近邻数据,用选择算法确定全局k近邻数据;(5)利用所述全局k近邻数据对该测试数据进行分类,得到该测试数据的分类结果;(6)重复执行步骤(2)至(5),得到所有测试数据的分类結果。所述局部k近邻数据可为(key,value),其中key为测试数据,value为所述距离和训练数据的类标的组合数据。所述步骤(5)中,分类的依据可以是D-F理论。有益效果本发明充分利用数据密集的特性,采用并行化计算局部k近邻数据,进而获取全局k近邻数据的方法。实验结果表明,本发明方法能够大大減少各个节点之间的数据传输量,从而大大提升分类效率;对于处理大规模数据的分类问题具有良好的效果,具有很好的加速比。


图I为本发明方法的流程图;图2为本发明方法与现有方法的分类时间的比较示意图测试数据为4. 4M,训练数据为39. 7M的分类时间比较(纵坐标为分类时间/s,横坐标为节点数);图3为本发明方法与现有方法的运行速度的比较示意图测试数据为10. SM,训练数据为97. SM的分类时间比较(纵坐标为分类时间/s,横坐标为节点数);图4为在数据量很大的情况下本发明方法在节点数不同的情况下所具备的加速比与理想加速比的比较示意图测试数据为4. 4M,训练数据为3. 9G的加速比(纵坐标为加速倍数,横坐标为节点数)。
具体实施例方式下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。如图I所示,下面详细说明本发明方法的步骤步骤1,数据预处理,例如计算文本数据的TF-IDF值。 步骤2,在Hadoop各个节点的Mapper端并行计算一个测试数据与位于该节点的训练数据的距离(例如对于文本数据,计算其余弦距离;对于向量型数据,计算其欧几里得距离)。步骤3,在Mapper端用选择算法确定该测试数据的局部k近邻数据,以测试数据为 key,距离和训练数据的类标的组合数据(〈距离,类标〉的形式)为value,组成数据对,将所有局部k近邻数据发送到Reducer端。步骤4,在Reducer端接收同一个key的所有values,根据values里面的距离,用选择算法确定最终的全局k近邻数据。步骤5,根本D-F理论,利用全局k近邻数据对该测试数据进行分类,确定其类标。步骤6,重复执行步骤2-5,得到所有测试数据的分类结果。基于Hadoop的k近邻并行分类算法原本只是简单地在Mapper端并行计算测试数据与训练数据的距离,在Reducer端接收并确定k近邻数据,从而完成最后的分类。本方法将其进行改进,大大减少了中间的数据传输量,从而大大提高了分类的速度。与原本的方法不同的是,本发明的方法在Mapper端不仅完成计算距离的功能,更增加了筛选出局部k近邻数据的功能,从而使得数据的计算更加密集,从而减少了数据的传输,也具有更接近理想状态的加速比。如图2和图3所示,可以看出,在不同节点数的情况下,本发明方法的分类时间比现有技术节省了约1/2至4/5。
如图4所示,在数据量很大的情况下本发明方法在节点数不同的情况下所具备的加速比与理想加速比的差距很小,在节点数不超过3的情况下几乎没有区别。
权利要求
1.一种基于Hadoop的并行k近邻分类方法,包括如下步骤 (1)数据预处理; (2)在Hadoop平台各个节点的Mapper端并行计算ー个测试数据与位于该节点的训练数据的距离; (3)在所述Mapper端用选择算法确定该测试数据的局部k近邻数据,将所有局部k近邻数据发送到Hadoop各个节点的Reducer端; (4)在所述Reducer端接收该测试数据的所有局部k近邻数据,用选择算法确定全局k近邻数据; (5)利用所述全局k近邻数据对该测试数据进行分类,得到该测试数据的分类结果; (6)重复执行步骤(2)至(5),得到所有测试数据的分类結果。
2.根据权利要求I所述ー种基于Hadoop的并行k近邻分类方法,其特征在于所述局部k近邻数据为(key,value),其中key为测试数据,value为所述距离和训练数据的类标的组合数据。
3.根据权利要求I所述ー种基于Hadoop的并行k近邻分类方法,其特征在于所述步骤(5)中,分类的依据是D-F理论。
全文摘要
本发明公开了一种基于Hadoop的并行k近邻分类方法,包括如下步骤数据预处理;在Hadoop各个节点的Mapper端并行计算一个测试数据与位于该节点的训练数据的距离;在所述Mapper端用选择算法确定该测试数据的局部k近邻数据,将所有局部k近邻数据发送到Hadoop各个节点的Reducer端;在所述Reducer端接收该测试数据的所有局部k近邻数据,用选择算法确定全局k近邻数据;利用所述全局k近邻数据对该测试数据进行分类,得到该测试数据的分类结果;重复执行,得到所有测试数据的分类结果。本发明能够有效地解决海量数据的分类问题,大大提高分类的速度。
文档编号G06F17/30GK102622446SQ20121007144
公开日2012年8月1日 申请日期2012年3月19日 优先权日2012年3月19日
发明者商琳, 杨育彬, 王灵江, 高阳 申请人:南京大学, 南京大学江阴信息技术研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1