赵桂儒
摘要:PCA是一种常用的线性降维方法,但在实际应用中,当数据规模比较大时无法将样本数据全部读入内存进行分析计算。文章提出了一种针对较大规模数据应用PCA进行降维的方法,该方法在不借助Hadoop云计算平台的条件下解决了较大规模数据不能直接降维的问题,实际证明该方法具有很好的应用效果。
关键词:主成分分析;降维;大数据
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)08-1835-03
现实生活中人们往往需要用多变量描述大量的复杂事物和现象,这些变量抽象出来就是高维数据。高维数据提供了有关客观现象极其丰富、详细的信息,但另一方面,数据维数的大幅度提高给随后的数据处理工作带来了前所未有的困难。因此数据降维在许多领域起着越来越重要的作用,通过数据降维可以减轻维数灾难和高维空间中其他不相关属性。所谓数据降维是指通过线性或非线性映射将样本从高维空间映射到低维空间,从而获得高维数据的一个有意义的低维表示的过程。
主成分分析(Principal Component Analysis,PCA)是通过对原始变量的相关矩阵或协方差矩阵内部结构的研究,将多个变量转换为少数几个综合变量即主成分,从而达到降维目的的一种常用的线性降维方法。这些主成分能够反映原始变量的绝大部分信息,它们通常表示为原始变量的线性组合。在实际应用中当数据规模超过计算机内存容量(例如16G)时就无法将样本数据全部读入内存来分析原始变量的内部结构,这成为PCA在实际应用中存在的一个问题。该文从描述PCA变换的基本步骤出发,提出了一种不需要Hadoop等云计算平台即可对较大规模数据进行降维的一种方法,实际证明该方法具有很好的应用效果。
1 PCA变换的基本步骤
PCA是对数据进行分析的一种技术,主要用于数据降维,方法是利用投影矩阵将高维数据投影到较低维空间。PCA降维的一般步骤是求取样本矩阵的协方差矩阵,计算协方差矩阵的特征值及其对应的特征向量,由选择出的特征向量构成这个投影矩阵。
[cov(x1,x1),cov(x1,x2),cov(x1,x3),…,cov(x1,xN)cov(x2,x1),cov(x2,x2),cov(x2,x3),…,cov(x2,xN) ?cov(xN,x1),cov(xN,x2),cov(xN,x3),…,cov(xN,xN)] (1)
假设[XM×N]是一个[M×N(M>N)],用PCA对[XM×N]进行降维分析,其步骤为:
1)将矩阵[XM×N]特征中心化,计算矩阵[XM×N]的样本的協方差矩阵[CN×N],计算出的协方差矩阵如式(1)所示,式中[xi]代表[XM×N]特征中心化后的第[i]列;
2)计算协方差矩阵[CN×N]的特征向量[e1,e2...eN]和对应的特征值[λ1,λ2...λN],将特征值按从大到小排序;
3)根据特征值大小计算协方差矩阵的贡献率及累计贡献率,计算公式为:
4)根据累计贡献率[Θr]的大小确定投影矩阵的维数[r],其中[r≤n];
5)按从大到小取前[r]个特征值对应的特征向量作为投影矩阵[SN×r],将需要降维的矩阵[XM×N]与投影矩阵[SN×r]相乘,得到降维后的矩阵[TM×r].
2 较大规模数据应用PCA降维的方法
在实际应用中,一般的计算机平台的内存容量有限(例如16G),但当数据规模往往比较大(几十、上百G),这时无法将样本数据全部读入内存来进行计算,这成为PCA降维方法在实际应用中存在的一个问题。通过分析第1部分的PCA降维步骤可以发现,对数据进行降维时最关键的步骤是计算样本数据的协方差矩阵,该文设计了一种应用PCA对较大规模数据降维时求取协方差矩阵的方法,具体方法是:将特征中心化后的样本数据[XM×N]按列([x1,x2...xN])分别存放在不同文件中,分别读取文件[xi]和文件[xj]计算第[i]列[xi]和第[j]列[xj]的协方差[cov(xi,xj)]。因为[CN×N]为对称矩阵,也即[cov(xi,xj)]与[cov(xj,xi)]相等,因此只需计算[CN×N]的上三角矩阵,对应填充下三角矩阵即可。一个循环遍历计算协方差的算法描述如下:
程序需要$1和$2两个输入参数,分别是需要分割文件的列数和和文件名,分割后将按列存放为1.txt、2.txt等等。
2)算法性能
文中第2部分提出的算法主要针对数据增长到一定规模(例如几十G)的时候,无法将全部数据一次性读入内存从而计算协方差矩阵的情况而提出的。算法采取分批读取数据的方式分别计算协方差,需要[N]次遍历,其中[k]值取1时运行时间最长,需要读取[N]个文件和计算[N]次协方差,[k]值取[N]时运行时间最短,只需读取一次文件和计算一次协方差。算法的缺点是运行的时间比直接读取数据计算协方差要长,优点是解决了较大规模数据不能直接降维的问题。为了提高运算速度可在服务器上提交[N]个进程或在超算平台中提[N]个任务的方法并行执行[N]次遍历程序。
4 结束语
当样本数据达到一定规模(几十、上百G)时,无法将数据全部读入内存直接对数据将进行降维。该文提出了一种在不借助Hadoop等云计算平台对数据进行降维的方法。在实际工作中笔者利用文中第2部分提出的降维方法应用到图像特征数据(例如SIFT和STIP)的降维中,实验证明该方法解决了较大规模数据不能直接降维的问题。但是当数据量继续增大(例如T级)时,数据每一列的大小就可能超过计算机内存容量,这时就需要考虑借助Hadoop等云计算平台解决大数据降维的问题。
参考文献:
[1] 谢枫平.聚类分析中的高维数据降维方法研究[J].闽西职业技术学院学报,2009,11(4):124-128.
[2] 吴晓婷,闫德勤.数据降维方法分析与研究[J].计算机应用研究,2009,26(8).
[3] 姚劲勃,余宜诚,于卓尔,等.基于 PCA 降维协同过滤算法的改进[J].吉林大学学报:信息科学版,2011, 29(5):494-497.
[4] 蒋博文.基于 PCA 变换的多光谱图像降维方法研究[J].信息技术,2012(8):98-101.
[5] 胡永刚,吴翊.基于加权 PCA 的声音指纹降维技术[J].计算机应用,2006(9).