ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:491.06KB ,
资源ID:4382249      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4382249.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(多核研究性课题科研论文.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

多核研究性课题科研论文.docx

1、多核研究性课题科研论文 Liaoning Normal University开放实验室项目研究论文题 目: 基于主成分分析的并行程序设计学 院: 计算机与信息技术学院专 业: 计算机科学与技术班级序号: 6班19号学 号: 20101118050005学生姓名: 孙蕾指导教师: 郑晓薇 2012年11月基于主成分分析的并行程序设计孙蕾辽宁师范大学 计算机与信息技术学院 邮编:116081摘 要:通过对统计学中主成分分析法进行研究,了解主成分分析在生产生活中的重要应用性。经过对主成分计算方法的学习,找到最佳的求解算法,其核心为计算对称矩阵的特征值。首先编写出计算对称矩阵特征值的串行算法,并计算其

2、运行时间。为提高其计算效率,在此基础上我利用多核程序设计将其并行化,以优化运行速度,计算加速比。理解了并行程序设计原理并达到基本能应用的水平,并行程序设计如果能广泛的应用在统计学领域,那么将极大地方便主成分分析法的推广和应用。 关键词:主成分分析、并行程序设计、特征值、加速比。Parallel programming based on principal component analysisSun LeiLiaoning Normal University, College of Computer and Information Technology Postcode: 116081Abstr

3、act: The principal component analysis in statistical research to understand the principal component analysis of important applications in the production life. After the calculation of the principal component of learning, to find the best solution algorithm, the core value of the for computing symmet

4、ric matrix characteristics. First write serial algorithm, the calculation of the symmetric matrix eigenvalue and calculate the running time. To increase its computational efficiency, and on this basis I take advantage of multi-core programming parallelism to optimize the running speed computing spee

5、dup. Understand the promotion and application of parallel program design principles and basic applications level parallel programming can be widely used in the field of statistics, it will greatly facilitate the principal component analysis.Keywords: Principal Component Analysis Parallel Programming

6、Eigenvalue Speedup前 言 通过对统计学中主成分分析法进行研究,了解主成分分析在生产生活中的重要应用性。主成分分析法是将大量数据精简为少量有效数据的方法,它能覆盖原来的85%以上的有效数据,已经大量运用于统计学和经济学领域。经过对主成分计算方法的学习,找到最佳的求解算法,其核心为计算对称矩阵的特征值。首先编写出计算对称矩阵特征值的串行算法,并计算其运行时间。为提高其计算效率,在此基础上利用多核程序设计将其并行化,以优化运行速度。通过计算加速比,体会程序并行带来的改变。通过本次研究,既了解了统计学中主成分分析的基本原理,又深化了对多核并行程序设计的理解。争取掌握基本应用openm

7、p技术进行并行程序设计的水平。如果并行程序设计如果能广泛的应用在统计学领域,那么将极大地方便主成分分析法的推广和应用。一实验原理及过程分析1.主成分分析理论在实验研究的应用情况 “多元统计分析”是近几十年来迅速发展起来的一门学科。随着微机的普遍使用及统计软件的推广普及,回归分析、判别分析、聚类分析因子分析、对应分析等等,各种多元统计方法已广泛应用于自然科学各学科乃至社会科学各个领域。主成分分析是一种常用的多元统计分析方法,相对于其他统计学方法,它更强调用数据本身来指导分析过程,而不是依赖于事先给定的某些假设。 主成分分析在地震预测中的应用。根据主成分分析可以得到反应地震强度异常特征的综合指标形

8、,发现该指标在2次地震前出现明显的异常变化,震后异常恢复,综合指标形可以较好地反映地震活动异常增强的特征。 主成分分析在生命科学研究中的应用。生物样品特征谱的复杂多变性,对生物的每一个细小特征都进行处理分析已经是不现实的一种方法,因此很多的统计分析方法自然就被排除了,而主成分分析对于高维度的分子生物学数据则似乎是一种最恰当的分析方法。主成分分析在经济评价中的应用。在研究较复杂的经济问题时,利用多元统计分析中的主成分分析,可从多个经济指标中找出起支配作用的共同因素,从而抓住主要矛盾,以较少的变量进行定量分析,对企业的经济效益进行公正的评价。 此外,主成分分析方法已经被作为一种科学的分析方法广泛地

9、运用于工农业生产、环境保护、商业盈利等等,并且主成分分析方法的应用领域会随着技术的进步越来越广阔。2.实验原理和测试方法实验原理:设有一批样品,假定对每个样品取n个特征,即X=(x1,x2,xn)T,要求构造n个新特征y1,y2,yn,并使得它们满足以下1)、2)、3)3个条件:1) 每个新特征是原有各特征的线性组合,即 yi=ui1x1+ui2x2+uinxn,i=1,2,n, 或yi=uT iX,ui=(ui1,ui2,,uin)T,i=1,2,n,其中uij是常数,2) 各个新变量之间是互不相关的,即相关系数为零,即 r(yi,yj)=0, i,j=1,2,n; ij 3) u1使y1的

10、方差达到极大值,u2使y2的方差达到次大,即 var(y1)var(y2)var(yn)0 需要注意的是上述方差达到极大须加上某种限制,否则线性组合的权值无穷大就没有意义了,实际问题常规定ui12 +ui22+uin2 =1以方便计算。满足以上条件的新特征y1,y2,yn,分别称为样品点的第1、2、n个主成分,其中样品的数学模型如下:X=(x1,x2,xn)T=,m为样品的个数.由以上的变换可以看出主成分是原变量的线性组合,是对原变量信息的一种改组,主成分不增加总信息量,也不减少总信息量。怎样求出样本数据的的主成分y1,y2,yn,或者说怎样求出各个ui,首先求出全体样品点特征的协方差矩阵Sx

11、或者是相关系数矩阵R,其表示如下:或R(相关系数矩阵R算法见相关书籍) 通过对同一原始数据的协方差矩阵和相关系数矩阵主成分分析进行比较研究,发现二者的应用与研究目的有关,若不加区别,将会暴露各自的优点与不足。因此,在实际应用中,选择哪种矩阵进行主成分分析,应视具体的研究目的而定,下面的问题讨论均以协方差矩阵为例。这里S的下表x表示这是对应于旧特征x1,x2,xn的协方差矩阵,求出的n个特征值,和与之对应的特征向量u1,u2,un,每个是一个数,而与之对应的特征向量ui是一个列向量ui (ui1,ui2,uin)T,它们之间的关系是 Sxui=ui, i=1,2,n 关于样品协方差的定义如下:在

12、N个样品中,第i个特征和第j个特征的之间的协方差为,则可以用如下公式求出,Sij= 表示样品点中第i个特征的均值,由此协方差公式可以的出Sx是对称矩阵,即,因而在计算时只要求出它的上三角形或下三角形部分即可,并且Sx主对角线元素就是特征的方差。 在求和ui就相当于解以上方程,具体解法可在各种计算方法中找到。如果我们在解方程时还要求正交归一条件成立,即uT iuj=0且uT iui=1成立,则各个ui就是唯一确定的。现在我们需要说明的是用以上方法求出的各个ui就可以满足前面所说的3个条件1)、2)、3)。令 yi=uT iX,i=1,2,n,则也就是要满足如下关系:=或Y=UX 于是y1,y2,

13、yn就是由x1,x2,xn经线性变换而得到的新特征。可以证明,当经过上述形式的线性变换后,如果对应于X的协方差矩阵是Sx,那么对应于Y的协方差矩阵就是Sy=USxUT,注意到UT的每列恰好是Sx的一个特征向量并利用条件就可以得到:SxUT=UT 其中是以,为主对角线元素的对角阵,再利用教归一条件又可得到: Sy=USxUT=UUT= 这就是说:新特征y1,y2,yn两两之间的协方差为零,即它们是不相关的。这样,我们已经找到了解决主成分分析问题的关键,即求原始协方差矩阵的特征值和特征向量,整个思路中需要注意的是三条件的作用:条件1)是现行条件,反映新旧特征之间的关系是简单的,易于计算的,条件2)

14、是不相关性,表明每个新特征有着独立的作用,条件3)是方差极大条件,主成分按序对原有样品的反映依次减弱。主成分分析的计算步骤。假定原始资料矩阵已知。1) 根据样品协方差公式求出原有特征的协方差矩阵Sx或相关系数矩阵R;2) 用任意一种计算方法求出Sx或R的全部特征值,和对应的特征向量u1,u2,un,并对求出的特征值按从大到小的顺序排列,即,特征向量也应按照对应特征值的顺序排列。这时已经可以求出n个新特征y1,y2,yn,它们满足条件Y=UX,其中U等于矩阵(u1,u2,un)的转置,而且Sy=是对角阵。在Sx中,主对角线之和S11+S22+Snn等于原有各特征方差之和。在Sy中,分别等于新特征

15、y1,y2,yn的方差,而且+之值仍然等于S11+S22+Snn.3) 由表达式可以看出主成分的个数最多有n,否则主成分分析数据就毫无意义,由于总方差不增不减,y1,y2等前几个综合变量的方差较大,而yn-1,yn等后几个综合变量的方差较小。严格说来,只有前几个综合变量才称得上主成分,后几个综合变量实为次成分。为了便于问题的分析,实践中总是对最终得到的主成分进行取舍,如何进行取舍,我们定义第i个主成分yi的方差贡献率为/(+) 而前m(mn)个主成分y1,y2,ym的累计方差贡献率计求解如下: (+)/(+) 保留多少个主成分取决于保留部分的累计方差贡献率,实践中,粗略规定一个百分比便可决定保

16、留几个主成分;如果多留一个主成分,累积方差增加无几,便不再多留,如当前m个主成分的累计方差贡献率已经足够大,如超过85%时,就可以只选取前m个主成分的作为新的特征,我们认为前m个主成分基本包含了原来的样品信息,这时有关系:=测试方法:分别利用串行和并行方法实现求特征值的算法,利用并行程序设计技术加快运行速度。二.对实验结果的分析讨论及理论计算结果的比较1. 串行程序核心代码及结果展示/class Matrix定义矩阵类/-初始化矩阵元素void Matrix:init() x=y=0; for(unsigned i=0;iMax_xy;i+) for(unsigned j=0;jMax_xy;

17、j+) dataij=0; /-重载+号Matrix & operator + (const Matrix & left,const Matrix & right) if(left.x!=right.x | left.y!=right.y) coutn维数不相等,不能相加!; exit(0); for(unsigned i=0;ileft.x;i+) for(unsigned j=0;jleft.y;j+) temp_Matrix.dataij=right.dataij + left.dataij; temp_Matrix.x=right.x; temp_Matrix.y=right.y; r

18、eturn temp_Matrix;/-用Householder矩阵化为实对称矩阵void Householder(Matrix & source) unsigned i,lenth,k,m,n,flag; double temp_lie_xMax_xy,temp_lie_yMax_xy,tempMax_xy; double s; for(i=0;isource.x-2;i+) for(k=0;kMax_xy;k+) /初始化为0 temp_lie_xk=0; temp_lie_yk=0; tempk=0; /-检查是否为实对称矩阵void Matrix:check_shiduichen()

19、void Matrix:shucheng(double changshu) /数乘运算 unsigned i,j; for(i=0;ix;i+) for(j=0;jy;j+) dataij*=changshu;int _tmain(int argc, _TCHAR* argv) double begin,end,time; begin=(double)clock()/(double)CLK_TCK; /时间函数 Matrix a; a.creat(); cout输入的矩阵为a:; couta; a.check_shiduichen(); Householder(a); cout用Househo

20、lder化为实对称矩阵为a:; couta; a.sturm(); coutendl; end=(double)clock()/(double)CLK_TCK; time=end-begin; / 计算并行程序的执行时间 cout时间是; couttime; return 0;串行运行结果:图1-1 3*3矩阵串行结果图1-2 10*10矩阵串行运行过程图1-3 10*10矩阵串行结果图1-4 15*15矩阵串行运行过程图1-5 15*15矩阵串行运行结果2. 并行程序核心代码及结果展示#include stdafx.h#include #include #include #include #

21、include 导入opm.h库函数using namespace std;/-重载+号加入并行语句Matrix & operator + (const Matrix & left,const Matrix & right) int j; if(left.x!=right.x | left.y!=right.y) coutn维数不相等,不能相加!; exit(0); for(unsigned i=0;ileft.x;i+) #pragma omp parallel for private(j) /多线程并行 for( j=0;jleft.y;j+) temp_Matrix.dataij=rig

22、ht.dataij + left.dataij; temp_Matrix.x=right.x; temp_Matrix.y=right.y; return temp_Matrix;/-用Householder矩阵化为实对称矩阵加入并行语句void Householder(Matrix & source) for(i=0;isource.x-2;i+) #pragma omp parallel for private(k) for(k=0;kMax_xy;k+) /多线程并行 /初始化为a temp_lie_xk=0; temp_lie_yk=0; tempk=0; void Matrix:sh

23、ucheng(double changshu) /数乘运算加入并行语句 int i,j; omp_set_num_threads(3); #pragma omp parallel for for(i=0;ix;i+) for(j=0;jy;j+) /多线程并行 dataij*=changshu;int _tmain(int argc, _TCHAR* argv) double begin,end,time; begin=(double)clock()/(double)CLK_TCK; /时间函数 Matrix a; a.creat(); cout输入的矩阵为a:; couta; a.check

24、_shiduichen(); Householder(a); cout用Householder化为实对称矩阵为a:; couta; a.sturm(); coutendl; end=(double)clock()/(double)CLK_TCK; time=end-begin; / 计算并行程序的执行时间 cout时间是; couttime; return 0;并行程序运行结果: 图2-1 3*3矩阵并行结果图2-2 10*10矩阵并行运行过程图2-3 10*10矩阵并行结果 图2-4 15*15矩阵并行过程 图2-5 15*15矩阵并行结果三结果对比分析并行化结果展示:3*3维矩阵串行程序时

25、间:t1=20.81并行程序时间:t2=7.612加速比=20.81/7.612=2.733并行化结果展示:10*10维矩阵串行程序时间:t1=144.581并行程序时间:t2=109.699加速比=144.581/109.699=1.317并行化结果展示:15*15维矩阵串行程序时间:t1=365.461并行程序时间:t2=290.316加速比=365.461/290.316=1.255表1串并行结果对比表规模串行时间并行时间加速比3*320.817.6122.73310*10144.581109.6991.31715*15365.461290.3161.255四结 论 通过对主成分分析法进

26、行研究,找到了计算对称矩阵特征值的串行算法,并在此基础上利用多核程序设计将其并行化,以优化运行速度。通过了解并行程序设计原理并达到基本能应用的水平提高了程序的运行速度。说明多核程序设计技术在大量数据的计算当中能发挥很大作用,较普通串行算法有优越性,应该推广在生产生活中。通过本次研究,我明白了主成分分析法的基本原理极其计算方法,并且以此为引例,知道了如何使用并行方法进行程序设计。深切体会了并行对提高程序运行速度的意义。掌握了如何利用openMP的环境进行并行程序设计。后来通过查询资料知道了如何运用一些函数如何使用,环境如何配置,很快克服了,得到了正确的结果。在使用测试数据时,由于数据量大才能显示

27、出并行技术的优越性,所以开始的时候数据量小,后来加大了数据量,效果好很多。需要输入对称阵,因此一处输出错误就出现错误结果,以后将好好注意,争取输入界面更加人性化。在我的研究过程中遇到了一些困难,经过老师的指点和同学们的帮助得以克服,在这里很感谢大家的帮助!在以后的路上我将继续努力,提高自己的知识水平,争取更多研究成果。五参考文献 1王文义,王春霞. PC集群及其并行程序性能的实用检测方法J. 计算机工程与应用,2004,(40)14:117-119 1 李宝峰.多核程序设计技术M.北京:电子工业出版社,2007。 2 陈国良.并行计算M.北京:高等教育出版社,2003。 3 向令,王鹏.并行迭代算法的研究与应用.成都信息工程学院学报,2007,22卷.。4 王鹏.并行计算应用与实战M.北京:机械工业出版社,2009。5 Stanley B. Lippman Barbara E. Moo Jose LaJoie. C+ Primer,Fourth EditionM. AddisonWesley/Pearson,2006。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1