基于主成分分析方法的软件缺陷预测研究

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于主成分分析方法的软件缺陷预测研究摘要软件测试作为保证软件质量的一个重要手段,在国内外受到广泛重视,并进行了多年研究。通俗地讲,软件测试是发现并指出软件系统缺陷的过程[1]。在统计学中,主成分分析方法比较适合对综合状况进行预测。因此考虑将主成分分析方法引入软件缺陷预测领域,以提高软件开发质量和效率。关键词主成分分析软件缺陷1主成分分析算法(PrincipleComponentAnalysis,PCA)主成分分也称为KL变换[2]。它是一种常用的特征提取方法,这种技术可以在保证信息损失最少的前提下,对高维变量空间进行降维处理,它依据特征值大小选择特征向量,消除了特征向量的相关性,从一定意义上体现了特征向量中不同维度的识别结果贡献的大小不同。1.1PCA的主要思想主成分分析是采取一种数学降维的方法[3],找出几个综合变量来代替原来众多的变量,使这些综合变量能尽可能地代表原来变量的信息量,而且彼此之间互不相关。通常,数学上的处理方法就是将原来的变量做线性组合,作为新的综合变量。如果将选取的第一个线性组合即第一个综合变量记为1F,自然希望它尽可能多地反映原来变量的信息,这里“信息”用方差来测量,即希望)(var1F越大,表示1F包含的信息越多。因此在所有的线性组合中所选取的1F应该是方差最大的,故称1F为第一主成分。如果第一主成分不足以代表原来p个变量的信息,再考虑选取2F即第二个线性组合,为了有效地反映原来信息,1F已有的信息就不需要再出现在2F中,用数学语言表达就是要求0),(co21FFv,称2F为第二主成分[4],依此类推可以构造出第p个主成分。1.2PCA的过程对于一个样本数据,观测到p个变量px,...,x,x21、n个样品的数据阵为:)(pnpnnppXx,...,x,xx...xx...x...xxx...xx21212222111211其中pjxxxnjjjj...2,1,...x21第一步:对数据进行标准化处理),...,2,1;,...,2,1()var(*pjnixxxxjjijij其中),..,2,1()(11)var(1x121jpjxxnxxnnijijjniij第二步:计算样本相关系数矩阵1n)(*XXRT第三步:用雅克比方法求相关系数矩阵R的特征值),,,(p21...和对应的特征向量piTipiii,...,2,1,)a,...,a,a(a21第四步:选择重要的主成分,并写出主成分表达式主成分分析可以得到p个主成分,但是,由于各个主成分的方差是递减的,包含的信息量也是递减的,所以实际分析时,一般不是选取p个主成分,而是根据各个主成分累计贡献率的大小选取前k个主成分。第i个主成分为:pipiiTipiipaaaaaax...xx),...,,)(x,...,x,x(F22112111i这里贡献率就是指某个主成分的方差占全方差的比重,实际也就是某个特征值占全部特征值合计的比重。即:pi1ii/贡献率贡献率越大,说明该主成分所包含的原始变量的信息越强。主成分个数k的选取,主要根据主成分的累积贡献率来决定:piiii1k1/累计贡献率一般要求累计贡献率达到85%以上,这样才可以保证综合变量能包括原始变量的绝大多数信息量[4]。另外,在实际应用中,选择了重要的主成分后,还要注意主成分实际含义解释。主成分分析中一个很关键的问题是如何给主成分赋予新的意义,给出合理的解释。一般而言,这个解释是根据主成分表达式的系数结合定性分析来进行的。主成分是原来变量的线性组合,在这个线性组合中个变量的系数有大有小有正有负,有的大小相当,因而不能简单地认为这个主成分是某个原变量的属性的作用,线性组合中各变量系数的绝对值大者表明该主成分主要综合了绝对值大的变量,有几个变量系数大小相当时,应认为这一主成分是这几个变量的总和,这几个变量综合在一起应赋予怎样的实际意义,这要结合具体实际问题和专业,给出恰当的解释,进而才能达到深刻分析的目的。第五步:计算主成分得分。根据标准化的原始数据,按照各个样品,分别代入主成分表达式,就可以得到各主成分下的各个样品的新数据,即为主成分得分。第六步:依据主成分得分的数据,则可以进行进一步的统计分析。其中,常见的应用有主成份回归,变量子集合的选择,综合评价等。2.基于PCA方法的软件缺陷预测要预测软件项目中的缺陷,根据缺陷预测的步骤,应该分为三步:获得度量元,构造预测模型,分析预测结果。2.1缺陷预测指标(度量元)的获得本文用源代码行数(SLOC)来刻画软件项目的规模,以用不同的语言开发366个功能点的项目为例,分别用IBM模型、COCOMO模型和Putnam方法论分别对C++、Dephi、VB和Java对开发的项目进行估算,得到以下数据见表2-1[5]:表2-1个度量元的统计数据语言SLOC估算模型工作量(PM/人月)开发时间C++19.398KIBM模型77.247.33COCOMO模型83.0647.2Putnam方法论79.4721.35Dephi6.588KIBM模型28.914.06COCOMO模型72.6853.52Putnam方法论58.5237.8VB8.784KIBM模型37.394.74COCOMO模型97.7959.91Putnam方法论64.7235.71Java17.568KIBM模型70.686.94COCOMO模型74.3447.44Putnam方法论73.625.272.2用PCA方法构造预测模型根据上节中的数据集,用1x表示项目源代码行数,用2x表示项目工作量,用3x表示项目的开发时间。将上述12组度量元的统计数据作为PCA的输入数据集,其中ijx表示第i种估算模型在第j个指标上的估算结果,则就得到一个12*3的原始数据矩阵3*12)x(Xij,见表2-2:1x2x3x119.39877.247.33219.39883.0647.2319.39879.4721.3546.58828.914.0656.58872.6853.5266.58858.5237.878.78437.394.7488.78497.7959.9198.78464.7235.711017.56870.686.941117.56874.3447.441217.56873.625.27表2-2原始数据矩阵表将原始数据标准化,得到表2-31x2x3x11.1005830.474141-0.94022421.1005830.7794510.90861431.1005830.591124-0.2900934-1.132484-2.061196-1.0918595-1.1324840.2349281.2016836-1.132484-0.5078890.4727207-0.749672-1.616345-1.0603278-0.7496721.5521701.4979989-0.749672-0.1826440.375804100.7815730.130011-0.958309110.7815730.3220100.919743120.7815730.284240-1.035750表2-3原始数据矩阵标准化表再计算标准化后矩阵的相关系数矩阵,得到表2-41x2x3x1x10.494012-0.2239342x0.49401210.5664763x-0.2239340.5664761表2-4相关系数矩阵表求解相关系数矩阵的特征值和每个特征值所对应的特征向量,得到表2-5表2-5相关系数矩阵的特征值和其所对应的特征向量表所以三个主成分及其贡献率和累计贡献率,见表2-5表2-5主成分及其贡献率和累计贡献率表这里前两个主成分已经包含95.71%的信息,因此选择前两个主成分32110.522919x-0.755688x--0.394324xF特征值1.6497681.2214130.128819特征向量1x-0.394324-0.7621670.5134292x-0.755688-0.048984-0.6530983x-0.5229190.6455240.5566451x2x3x贡献率累计贡献率1F-0.394324-0.755688-0.52291955.00%55.00%2F-0.762167-0.0489840.64552440.71%95.71%3F0.513429-0.6530980.5566454.29%100%该主成分中源代码行数、项目工作量和项目的开发时间占比重较相当,说明主成分1F由源代码行、项目工作量和项目的开发时间来反映。32120.6455246x0.048984x--0.762167xF该主成分中项目的源代码行数和项目工作量占比重较大,说明主成分2F项目的源代码行数和项目工作量来反映。以特征值的贡献率为权值计算各样本的得分:21.714055FFF得到表2-62.3分析预测结果通过对影响软件缺陷数量的三个变量中综合抽取两个主成分来描述软件系统的状态,软件缺陷数量与主成分得分有直接联系,其中这两个主成分包含了95.7%的信息量,将多个指标减少为较少的因素来分析系统的性能,大大简化了估算分析的工作量,提高了效率。本文中得分越低表示数据组合表示软件项目的效果越好,缺陷越少,项目开发的代价越小。由表2-6可以明显看出用C++开发的项目效果会好些,其次就是利用Java语言,用Dephi效果相比较较差。从软件缺陷的角度,本文得出在同等开发需求下选取C++、Java语言进行开发会获得较好的开发效率。参考文献[1]贾宁.基于数据挖掘的软件测试技术研究[D].天津:天津大学,2007.[2]WoodwardJD.Biometrics:privacy'sfoeorprivacy'sfriend?[J].ProceedingsoftheIEEE,1997,85(9):1480-1492.[3]林海明,杜子芳.主成分分析综合评价应该注意的问题[J].统计研究,2013,30(8):52.[4]李柏年,吴礼斌.MATLAB数据分析方法[M].北京:机械工业出版社,201201.[5]杨雪.基于PCA的软件缺陷预测方法研究[D].南京:河海大学,2006.表2-6各主成分及得分排名表1F2FF得分排名1-0.300627-1.468991-0.76340332-1.498140-0.290476-0.94212513-0.728996-1.055046-0.830440242.5751410.2592851.521693125-0.3593501.6273500.464941860.5831771.1931730.8064881072.071531-0.0339171.125373118-1.6606741.462339-0.317869790.2371210.8229130.4654379100.094678-1.220670-0.444915611-1.032484-0.017746-0.5750114120.018624-1.278214-0.5101675

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功