CN104573331B - 一种基于MapReduce的K近邻数据预测方法 - Google Patents
一种基于MapReduce的K近邻数据预测方法 Download PDFInfo
- Publication number
- CN104573331B CN104573331B CN201410803550.7A CN201410803550A CN104573331B CN 104573331 B CN104573331 B CN 104573331B CN 201410803550 A CN201410803550 A CN 201410803550A CN 104573331 B CN104573331 B CN 104573331B
- Authority
- CN
- China
- Prior art keywords
- data
- function
- nearest neighbor
- distance
- predicted
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Abstract
本发明公开的一种基于MapReduce的K近邻数据预测方法,包括如下步骤:确定训练数据和待测试数据,将训练数据上传至Hadoop集群,分散存储;设计Map函数计算待预测数据与本节点的部分训练数据之间的距离;设计Combine函数,对Map函数的输出进行局部排序;Reducer端设计Reduce函数,进行全局排序,得到全局的K个最近邻数据对象及其距离,利用距离加权方法,计算K个权重大小,将计算出的权重值定义为回归系数,计算出待预测数据的预测值。本发明采用变参机制替代传统线性回归预测方法中的固参模式,提高了数据预测的准确精度;利用MapReduce编程模型,在Hadoop分布式计算平台上实现并行计算,大幅度提高了大规模数据集的计算效率。
Description
技术领域
本发明属于数据挖掘技术领域,涉及一种基于MapReduce的K近邻数据预测方法。
背景技术
线性回归预测作为数据挖掘中的统计、预测方法之一,在科研、商业数据分析中占据着重要的地位。传统的线性回归预测属于参数学习算法,其参数是固定不变的,而在实际应运中,数据的生成机制与线性回归模型有很大偏差,这样得出的分析数据往往与实际有很大出入,甚至是错误的数据。局部加权线性回归预测方法是一种非参数回归技术,它允许线性回归模型中的参数随着自变量的不同取值而变化。在大数据时代,传统的线性回归预测方法和局部加权线性回归预测方法,繁琐的计算步骤和效率极低的单机串行计算,已经无法继续胜任对数据进行挖掘和处理,对大规模数据的挖掘和处理能力存在着很大的局限性。
MapReduce编程模型是Google公司的核心计算模型,被应用于大规模集群上的复杂的并行计算。Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,该平台开源实现了MapReduce编程模型。K近邻(K-Nearest Neighbor)是一种简洁而有效的非参数学习方法。K近邻方法对每一个输入都会去训练数据集中去搜索与其最相似的K个数据对象,在K近邻学习过程中,当目标函数值为连续值时,对待预测数据搜索出的K个近邻点,分别给定一个距离加权,是一种简单可靠的变参回归预测方法。当训练数据达到海量规模时,K近邻的搜索效率将很难达到实际需求,而且海量的数据对于目前的计算机处理速度和内存空间也是一种挑战。
发明内容
本发明的目的是提供一种基于MapReduce的K近邻数据预测方法,解决了传统预测方法参数固定,数据处理精准度差以及对大规模数据的回归预测处理能力存在局限性的问题。
本发明所采用的技术方案是,一种基于MapReduce的K近邻数据预测方法,包括如下步骤:
步骤1、确定训练数据和待测试数据,并将训练数据上传至Hadoop分布式集群,分散至各集群节点中存储;
步骤2、在Hadoop分布式集群中各个节点的Mapper端,设计Map函数:根据欧式距离计算公式,计算出待预测数据与本节点部分训练数据样本之间的距离;
步骤3、在Mapper端,将步骤2所得距离值发送至集群节点的Combiner端,设计Combine函数:进行本地排序,选出局部距离最小的K个最近邻点,得到局部K-最近邻子集;
步骤4、在Combiner端,将步骤3所得的所有局部K-最近邻子集,发送至Hadoop分布式集群各Reducer端,设计Reduce函数:对所有局部K-最近邻子集进行重新排序,得到全局K-最近邻子集;利用距离加权方法,根据权重函数计算全局K-最近邻子集中训练数据对待预测数值影响的权重大小;利用回归函数,将所得权重值定义为回归系数,计算得出待预测数据的预测值;
步骤5、将步骤4处理后的数据存储在HDFS文件系统中,可用Hadoop相关查看工具查看或下载至本地。
本发明的特征还在于,
步骤2中,设计Map函数的过程为:函数输入定义为<LongWritable key,Text text>,key为训练数据行号,text为记录数据;输出函数定义为<Context context>,定义类Sample(),存储数据间距离和此条训练数据目标函数实际值;遍历所有训练数据和待预测数据,计算其距离,并将距离值和训练数据的目标函数值存入Sample();输出context.write(key’,sample()),key’为待预测数据行号。
步骤3中,设计Combine函数具体过程为:将函数输入定义为<LongWritable key,Sample sample>,输出定义为<Context context>;把所有的sample存入一个链表结构里,arrayList.add(sample);对arrayList进行局部排序,执行sort(arrayList);从排好顺序的arrayList中仅取出前K个sample,并输出context.write(key,arrayList.get())。
步骤4中,设计Reduce函数过程为:函数输入定义为<LongWritable key,Iterator<Sample>values>,函数输出定义为<Context context>;取出所有的K最近邻点相关数据存入一个arrayList,进行全局排序,并取出全局的K个最近邻点相关数据存入sortedArrayList,sortedArrayList.add(arrayList.get())。
步骤4中,权重函数为:
其中,W(x,pi)为权重值,d(x,pi)为待预测点x训练数据中第i个邻居pi的距离,1≤i≤n。
步骤4中,回归函数为:
其中,y'为测试样本的回归预测值,bi为回归系数,yi为训练样本pi的目标值。
本发明的有益效果是:
1.采用变参机制替代传统线性回归预测中的固参模式,搜索局部最相关数据,利用动态拟合的方法测试样本的回归预测曲线,提高了预测的准确精度。
2.利用MapReduce编程模型,在Hadoop分布式进算平台上实现并行计算,大幅度提高了大规模数据集的计算效率。
附图说明
图1是本发明基于MapReduce的K近邻数据预测方法的流程图;
图2是本发明基于MapReduce的K近邻数据预测方法Hadoop平台集群结构示意图;
图3是本发明基于MapReduce的K近邻数据预测方法MapReduce运行机制图。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
图1为本发明一种基于MapReduce的K近邻数据预测方法的流程图;以一条随机记录为例,该记录含15维数据,包括1个因变量和14个自变量;具体按照以下步骤实施:
步骤1:部署Hadoop分布式平台,以1个Master节点和9个Slave节点为例建立分布式集群,如图2所示;
步骤2:在Hadoop分布式环境中,将训练数据和待测试数据存储在HDFS分布式文件系统中,在数据存储过程中,系统将数据按64M模式分块存储。
步骤3:在Hadoop分布式集群中各个节点的Mapper端,设计Map函数,根据欧式距离计算公式,计算出待预测数据与本节点部分训练数据样本之间的距离。具体过程为:函数输入定义为<LongWritable key,Text text>,key为训练数据行号,text为记录数据data();输出定义为<Context context>,定义类Sample(),存储数据间距离和此条训练数据目标函数实际值;遍历所有训练数据和待预测数据,计算其距离,并将距离值和训练数据的目标函数值存入Sample(),形如<距离值dst1,函数值t1>;输出context.write(key’,sample()),其中,key’是待预测数据行号;
步骤4:在Mapper端,将步骤3所得距离值发送至集群节点的Combiner端,设计Combine函数,并进行本地排序,选出局部距离最小的K个最近邻点,得到局部K-最近邻子集。具体过程为:函数输入定义为<LongWritable key,Sample sample>,输出定义为<Context context>;把所有的sample存入一个链表结构里,arrayList.add(sample),存入后的arrayList格式为(<距离,函数值>,<距离,函数值>,…,<距离,函数值>);然后对arrayList进行局部排序,排序过程需按照arrayList里对象的距离属性由小到大排序,执行sort(arrayList);从排好序的arrayList中仅取出前K个sample,并输出context.write(key,arrayList.get())。
步骤5:在Combiner端,将步骤4所得的所有局部K-最近邻子集,发送至Hadoop分布式集群各Reducer端,设计Reduce函数,对所有局部K-最近邻子集进行重新排序,得到全局K-最近邻子集。具体过程为:函数输入定义为<LongWritable key,Iterator<Sample>values>,函数输出定义为<Context context>;key为待预测数据的行号ID,values为各节点传送的多个局部K最近邻子集的集合,提出所有的局部K最近邻点相关数据存入一个arrayList,进行全局排序,提取全局的K个最近邻点相关数据存入sortedArrayList,sortedArrayList.add(arrayList.get())。
步骤7:在全局的K-最近邻子集中,根据待预测数据与这K个最近邻点的距离值,利用距离加权方法,计算这K个邻近点对待预测点影响的权重大小。具体过程为:从数据组合sample<距离,函数值>中取得距离值,设训练数据点pi与待预测数据x间的距离值为d(x,pi),根据距离加权计算公式:计算出拥有该距离的训练数据点对于待预测数据的权重W(x,pi)。
步骤8:将这组K个权重值作为回归函数的K个回归系数,利用回归函数,计算待预测数据的预测值。具体过程为:从数据组合sample<距离,函数值>中取得距离值,设某条数据的函数值为yi,它对待预测数据的距离权重为W(x,pi),令回归系数bi=W(x,pi),根据回归函数求出目标函数预测值y';输出context.write(key,y')。
本发明一种基于MapReduce的K近邻数据预测方法,集群中各节点并行计算时,系统会首先将块数据分片,然后将片数据分配给Map函数处理,处理过程如图3所示;计算过程以MapReduce任务为粒度,每个MapReduce任务都可分为两个阶段:Map阶段和Reduce阶段;多个节点并行执行Map函数,每个Map函数接收一个<key,value>形式的输入,然后产生同种形式的中间输出,Hadoop对所有的Map函数输出做一次合并、排序等处理(Shuffle处理),并将具有相同中间key值的value集合到一块传递给Reduce函数,Reduce函数就会接收到形如<key,[value1,value2,…]>的输入,然后对集合[value1,value2,…]进行处理并输出结果。
Map函数的主要任务是计算每一个待预测数据TestSet与每一个训练数据TrainSet间的距离Distance(TestSet,TrainSet),距离计算公式采用标准的欧氏距离。Combine函数的主要任务是把本地Map函数产生的<key,value1>,<key,value2>,...多个键值对合并成一个新的<key,[value1,value2,…]>,这是Hadoop平台中MapReduce任务默认执行的Combine函数,为了减少Reduce节点不必要的计算和通信开销,这里重写了Combine方法,在其合并多个<key,value>之后,执行一个按数据样本间距离正向排序的操作,仅取其前K个值传递给Reduce函数。Reduce函数的主要任务是取出由Combine函数传递过来的K个最近邻训练样本相关数据,根据权重函数计算出回归系数bi,最后由回归系数和K个最近邻训练样本目标值计算出待测样本的目标函数值。
Claims (1)
1.一种基于MapReduce的K近邻数据预测方法,其特征在于,包括如下步骤:
步骤1、确定训练数据和待测试数据,并将训练数据上传至Hadoop分布式集群,分散至各集群节点中存储;
步骤2、在Hadoop分布式集群中各个节点的Mapper端,设计Map函数,根据欧式距离计算公式,计算出待预测数据与本节点部分训练数据样本之间的距离;
所述设计Map函数的过程为:函数输入定义为<LongWritable key,Text text>,key为训练数据行号,text为记录数据;输出函数定义为<Context context>,定义类Sample(),存储数据间距离和此条训练数据目标函数实际值;遍历所有训练数据和待预测数据,计算其距离,并将距离值和训练数据的目标函数值存入Sample();输出context.write(key’,sample()),key’为待预测数据行号;
步骤3、在Mapper端,将步骤2所得距离值发送至集群节点的Combiner端,设计Combine函数,并进行本地排序,选出局部距离最小的K个最近邻点,得到局部K-最近邻子集;
所述设计Combine函数的具体过程为:将函数输入定义为<LongWritable key,Samplesample>,输出定义为<Context context>;把所有的sample存入一个链表结构里,arrayList.add(sample);对arrayList进行排序,执行sort(arrayList);从排好顺序的arrayList中仅取出前K个sample,并输出context.write(key,arrayList.get());
步骤4、在Combiner端,将步骤3所得的所有局部K-最近邻子集,发送至Hadoop分布式集群各Reducer端,设计Reduce函数:对所有局部K-最近邻子集进行重新排序,得到全局K-最近邻子集;利用距离加权方法,根据权重函数计算全局K-最近邻子集中训练数据对待预测数值影响的权重大小;利用回归函数,将所得权重值定义为回归系数,计算得出待预测数据的预测值;
所述设计Reduce函数过程为:函数输入定义为<LongWritable key,Iterator<Sample>values>,函数输出定义为<Context context>;取出所有的K最近邻点相关数据存入一个arrayList,进行全局排序,并取出全局的K个最近邻点相关数据存sortedArrayList,sortedArrayList.add(arrayList.get());
所述权重函数为:
<mrow>
<mi>W</mi>
<mrow>
<mo>(</mo>
<mi>x</mi>
<mo>,</mo>
<msub>
<mi>p</mi>
<mi>i</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mfrac>
<msup>
<mi>e</mi>
<mrow>
<mo>-</mo>
<mi>d</mi>
<mrow>
<mo>(</mo>
<mi>x</mi>
<mo>,</mo>
<msub>
<mi>p</mi>
<mi>i</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</msup>
<mrow>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>k</mi>
</munderover>
<msup>
<mi>e</mi>
<mrow>
<mo>-</mo>
<mi>d</mi>
<mrow>
<mo>(</mo>
<mi>x</mi>
<mo>,</mo>
<msub>
<mi>p</mi>
<mi>i</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</msup>
</mrow>
</mfrac>
<mo>,</mo>
</mrow>
其中,W(x,pi)为权重值,d(x,pi)为待预测点x训练数据中第i个邻居pi的距离,1≤i≤n;
所述回归函数为:
<mrow>
<msup>
<mi>y</mi>
<mo>&prime;</mo>
</msup>
<mo>=</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>k</mi>
</munderover>
<msub>
<mi>b</mi>
<mi>i</mi>
</msub>
<msub>
<mi>y</mi>
<mi>i</mi>
</msub>
<mo>,</mo>
</mrow>
其中,y'为测试样本的回归预测值,bi为回归系数,yi为训练样本pi的目标值;
步骤5、将步骤4处理后的数据存储在HDFS文件系统中,用Hadoop相关查看工具查看或下载至本地。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410803550.7A CN104573331B (zh) | 2014-12-19 | 2014-12-19 | 一种基于MapReduce的K近邻数据预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410803550.7A CN104573331B (zh) | 2014-12-19 | 2014-12-19 | 一种基于MapReduce的K近邻数据预测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104573331A CN104573331A (zh) | 2015-04-29 |
CN104573331B true CN104573331B (zh) | 2018-04-24 |
Family
ID=53089377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410803550.7A Expired - Fee Related CN104573331B (zh) | 2014-12-19 | 2014-12-19 | 一种基于MapReduce的K近邻数据预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104573331B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105491599B (zh) * | 2015-12-21 | 2019-03-08 | 南京华苏科技有限公司 | 预测lte网络性能指标的新型回归系统 |
CN106128100B (zh) * | 2016-06-30 | 2019-01-15 | 华南理工大学 | 一种基于Spark平台的短时交通流量预测方法 |
CN108228819A (zh) * | 2017-12-29 | 2018-06-29 | 武汉长江仪器自动化研究所有限公司 | 基于大数据平台的大坝变形预测方法 |
CN110572655B (zh) * | 2019-09-30 | 2023-01-10 | 北京大学深圳研究生院 | 一种基于邻居权重的参数选取和传递的点云属性编码和解码的方法及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678672A (zh) * | 2013-12-25 | 2014-03-26 | 北京中兴通软件科技股份有限公司 | 一种信息推荐方法 |
CN103955489A (zh) * | 2014-04-15 | 2014-07-30 | 华南理工大学 | 基于信息熵特征权重量化的海量短文本分布式knn分类算法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120182891A1 (en) * | 2011-01-19 | 2012-07-19 | Youngseok Lee | Packet analysis system and method using hadoop based parallel computation |
-
2014
- 2014-12-19 CN CN201410803550.7A patent/CN104573331B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678672A (zh) * | 2013-12-25 | 2014-03-26 | 北京中兴通软件科技股份有限公司 | 一种信息推荐方法 |
CN103955489A (zh) * | 2014-04-15 | 2014-07-30 | 华南理工大学 | 基于信息熵特征权重量化的海量短文本分布式knn分类算法及系统 |
Non-Patent Citations (6)
Title |
---|
KNN分类算法的MapReduce并行化实现;闫永刚 等;《南京航空航天大学学报》;20130815;第45卷(第4期);第550-555页摘要,第1-3小节,图1-3 * |
回归函数的k近邻估计法及在经济分析中的应用;周志丹 等;《浙江万里学院学报》;20030430;第16卷(第2期);第31-32页第2小节 * |
基于Hadoop的K-means聚类算法的实现;周婷 等;《计算机技术与发展》;20130408;第23卷(第7期);第18-21页 * |
基于Hadoop的K近邻分类算法的研究;文思;《中国优秀硕士学位论文全文数据库 信息科技辑》;20111215(第12期);第I138-670页 * |
基于MapReduce模型的并行遗传k-means聚类算法;贾瑞玉 等;《计算机工程与设计》;20140216;第35卷(第2期);第657-660页 * |
基于属性加权的改进K-Means算法;陈东 等;《电脑知识与技术》;20090325;第5卷(第9期);第2412-2413页第3小节 * |
Also Published As
Publication number | Publication date |
---|---|
CN104573331A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104881706B (zh) | 一种基于大数据技术的电力系统短期负荷预测方法 | |
CN106022521B (zh) | 基于Hadoop架构的分布式BP神经网络的短期负荷预测方法 | |
WO2018031958A1 (en) | Aggregate features for machine learning | |
CN107609141B (zh) | 一种对大规模可再生能源数据进行快速概率建模方法 | |
CN104573331B (zh) | 一种基于MapReduce的K近邻数据预测方法 | |
Chen et al. | MR-ELM: a MapReduce-based framework for large-scale ELM training in big data era | |
CN107908536B (zh) | Cpu-gpu异构环境中对gpu应用的性能评估方法及系统 | |
CN106502964B (zh) | 一种基于Spark的极限学习机并行化计算方法 | |
JP7087825B2 (ja) | 学習装置および学習方法 | |
JP7087695B2 (ja) | 学習装置および学習方法 | |
JP2019212243A (ja) | 学習識別装置および学習識別方法 | |
Lubell-Doughtie et al. | Practical distributed classification using the alternating direction method of multipliers algorithm | |
US20220076121A1 (en) | Method and apparatus with neural architecture search based on hardware performance | |
CN111832693A (zh) | 神经网络层运算、模型训练方法、装置及设备 | |
Wen et al. | MapReduce-based BP neural network classification of aquaculture water quality | |
JP6743902B2 (ja) | マルチタスク関係学習システム、方法およびプログラム | |
US20190180180A1 (en) | Information processing system, information processing method, and recording medium | |
CN106445960A (zh) | 一种数据聚类方法和装置 | |
CN104794186A (zh) | 数据库负载响应时间预测模型训练样本的采集方法 | |
JPWO2018168695A1 (ja) | 分散機械学習装置、分散機械学習方法および分散機械学習プログラム | |
CN110175287B (zh) | 一种基于Flink的矩阵分解隐式反馈推荐方法和系统 | |
Tanupabrungsun et al. | Feature reduction for anomaly detection in manufacturing with mapreduce GA/kNN | |
Dreuning et al. | mCAP: Memory-Centric Partitioning for Large-Scale Pipeline-Parallel DNN Training | |
CN104570759A (zh) | 控制系统中点定位问题的快速二叉树法 | |
WO2024077876A1 (zh) | 一种基于自适应的局部动态焦炭质量预测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180424 Termination date: 20191219 |
|
CF01 | Termination of patent right due to non-payment of annual fee |