本发明属于高维数据降维领域,更为具体地讲,是一种针对超高维大数据,基于hadoop平台的特征,而设计实现的pca降维处理流程。
背景技术:
随着信息科学技术的飞速发展,信息的表示越来越全面,人们获取数据越来越容易、关注的数据对象日渐复杂,业界对数据分析、处理技术的需求最为迫切,特别是对高维数据的分析与处理技术。直接处理高维数据会面临以下困难:维数灾难、空空间、不适定、算法失效。本发明针对数据特征维太高,普通pc由于内存的原因,pca用于高维大数据的降维时,存在内存消耗巨大、处理时间很长,计算特征之间的协方差矩阵存在极大困难,借助于hadoop分布式并行计算平台,其分布式文件系统hdfs将数据“分块”存储和mapreduce计算框架“并行处理”数据的思想,提出基于mapreduce的pca降维处理流程,如图1所示。
技术实现要素:
本发明的最终目的是降低超高维大数据的维度,降低后续分析与计算的复杂度。本发明主要利用了hadoop平台“数据分块”与“分布式并行处理”两大特征,实现了pca算法用于超高维大数据的降维。所谓的数据维数就是每条记录数据的属性个数。
为实现上述目的,本发明做了如下设计:
1)从分布式文件系统hdfs读取输入数据;
2)map任务负责对每个数据分片(split)进行处理,读取整个分片的数据之后,转换为键值对,传递给map()函数。map()函数的功能包括:
a)求解每个特征的均值、中心化数据矩阵;
b)求解中心化后的矩阵的协方差矩阵;
c)求解协方差矩阵的特征值及特征向量;
d)对特征值排序、进而求得最大的k个特征值对应的k个特征向量,以特征向量的转置作为变换基;
e)计算原始数据的低维嵌入,用抽取的特征向量矩阵的转置与原始数据矩阵相乘,得到分块的主成分,组成键值对,写入中间结果;
3)reduce任务负责汇总结果,主要功能如下:
a)reduce()函数读取中间结果数据,即map阶段得到的各分块的主成分;
b)合并分块结果,得到最终降维的主成分,写入hdfs。
附图说明
图1是基于mapreduce的pca降维处理流程。
具体实施方式
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好的理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
图1是本发明基于mapreduce的pca降维处理的流程。首先搭建hadoop集群环境,在本实施例中,先将高维数据转化为0、1矩阵,存为文本文件,上传至hadoop的分布式文件系统。
java语言里的数据类型不包括矩阵,此实例实现中,引用了jama.matrix工具包。按行读取数据存入二维数组,调用工具包里的方法实现数组到矩阵的转化。
基于mapreduce的处理过程主要分为map阶段和reduce阶段,对应的关键函数为map()和reduce()。map()函数负责数据的降维处理的所有步骤,包括中心化、计算属性之间的协方差矩阵,计算协方差矩阵的特征值、特征向量,选定变换基,以及对原始数据矩阵做基变换得到最终的结果。一个map任务只处理一个split,所以map阶段得到的结果有多个,reduce()函数的作用是汇总map阶段得到的中间结果,输出到hdfs。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化再所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。