一种基于GitHub的半监督异构软件缺陷预测算法制造技术

技术编号:21606111 阅读:48 留言:0更新日期:2019-07-13 18:25
本发明专利技术公开了一种基于GitHub的半监督异构软件缺陷预测算法,包括以下步骤:首先是数据集收集,建立自己的数据库;对收集到的数据预处理;然后这里异构的数据处理,我们引入增强版的典型关联分析方法,它是由统一度量表示(UMR)和典型关联分析(CCA)组成;最后我们加入了代价敏感的核半监督判别方法,从而实现了基于GitHub的半监督异构软件缺陷预测算法,本发明专利技术的优点在于解决了软件缺陷预测中数据异构的问题以及首次提出了代价敏感的核半监督鉴别分析(CKSDA)技术,利用代价敏感的学习技术,解决不同的错误分类代价,实现了缺陷预测效果。

A Semi-supervised Heterogeneous Software Defect Prediction Algorithm Based on GitHub

【技术实现步骤摘要】
一种基于GitHub的半监督异构软件缺陷预测算法
本专利技术涉及软件缺陷预测算法,具体涉及一种基于GitHub的半监督异构软件缺陷预测算法。
技术介绍
软件缺陷预测是当前软件工程数据领域中的一个研究热点。其希望就是能够在项目开发的早期阶段,预先识别出项目内的潜在缺陷程序模块,并且对这类的程序模块分配足够的测试资源来确保可以进行充分的代码审查或者是单元测试,最终达到提高软件产品质量的目的。目前大部分研究工作都集中关注同项目缺陷预测问题,即选择同一项目的部分数据集作为训练集来构建模型,并用剩余未选择的数据作为测试集来获得模型的预测能力。然而在实际的软件开发场景中,需要进行缺陷预测的目标项目可能是一个新启动的项目,并没有足够的历史数据来作为训练集和测试集。由于历史数据的缺少研究者们开始关注跨项目软件缺陷预测的问题,跨项目就是使用其他项目的训练数据来构建预测模型,并对一个全新项目进行缺陷预测。在大部分的情况下,不同项目的度量元取值分布具有显著的差异性,缺陷预测的数据存在类别不平衡问题。在软件测试中,软件缺陷预测是非常重要的,它可以利用历史缺陷数据学习预测模型。当没有足够的历史缺陷数据建立准确的预测模型时,跨公司缺陷预测(Ccdp)和半监督缺陷预测(Ssdp)是两种可行的方法。来自开放源码项目(OSP)托管平台(如GitHub)的现有开放源码未标记数据就足够了,这些数据通常是异构的。目前,对于如何利用开放源码项目(OSP)的大量未标记异构数据进行缺陷预测模型的研究还很少。
技术实现思路
本专利技术的目的在于:针对现有技术存在的缺陷,提出一种基于GitHub的半监督异构软件缺陷预测算法,目的在于建立缺陷预测模型时,为半监督问题和异构问题提供一种方法,解决异构问题,同时提出了一种代价敏感的核半监督相关分析(CKSCA)方法来解决半监督的跨公司缺陷预测(ccdp)问题。为达到上述目的,本专利技术是通过以下技术方案来实现的:一种基于GitHub的半监督异构软件缺陷预测算法包括以下步骤:步骤(1)、收集数据建立数据库;步骤(2)、数据预处理,包括数据规范化和数据过滤;步骤(3)、匹配源数据和目标数据,引入统一度量表示(UMR)和典型相关分析方法(CCA);步骤(4)、半监督判别分析;步骤(5)、核半监督判别分析;步骤(6)、代价敏感核半监督判分析。优选地,所述步骤(1)的具体做法是:在GitHub上收集数据,所述收集数据包括项目选择、特征提取和清理数据集,所述项目选择包括选择3个语言标记(Python,Java,C)作为关键字,由“moststar”排序标记,从排序列表的顶部筛选出20个项目,所述特征提取包括使用“Understand”工具,提取代码度量,所述代码度量为文件静态代码度量,使用Scitools获得代码度量标准,所述清理数据集包括采用人工筛选对缺失值和显著误差值进行筛选。优选地,所述步骤(2)中数据预处理使用min-max规范化,给定一个度量x,规范化值x′,计算为:所述数据过滤为knn滤波器过滤跨公司数据的方法,使用数据筛选器代替所有跨公司数据,选择源和目标跨公司项目之间的公共属性,对于目标数据中的每个实例,选择k近邻来度量相似度,使用常见的特性进行过滤,获得与目标数据集相似的源数据集的筛选数据集,这里使用k=10来表示k-最近的邻居。优选地,在步骤(3)中匹配源数据和目标数据引入统一度量表示(UMR)和典型相关分析方法(CCA),在UMR的基础上,利用CCA为源和目标项目的数据寻找共同空间,使得预测数据之间的相关性最大化,利用UMR技术来使异构数据能够被比较,设定和是源数据和目标数据,这里是Xs的第i个实例,Ns和Nt是在Xs和Xt的实例数,源公司中的实例表示为目标公司中的实例表示为这里,表示与的第j度量相对应的度量值,ds和dt是源数据和目标数据中的度量数,则UMR定义如下:其中是包含源数据集特定度量的Xs中的数据,是包含目标数据集特定度量的Xt中的数据,0s和0t是源数据与目标数据中的全零矩阵,目的是为了补全维度,并且在源数据中,而在目标数据中,R为实数集,加入基于CCA的学习相关子空间,寻找两个投影方向的Ps,Pt,最大化源与目标公司数据之间的线性相关系数ρ,则CCA的目标函数定义为:其中(·)T是矩阵或向量转置,Css和Ctt是公司内部的和协方差矩阵,Cst是跨公司和的协方差矩阵,分别被定义为:其中表示中的第i个实例向量,ms和mt是和的平均实例:和在投影方向Ps和Pt下,将和分别投影到一个公共空间中,其中投影样本Xs+和Xt+是最大相关的,Xs+和Xt+分别定义为:优选地,在步骤(4)中半监督判别分析为以尊重从标记数据中推断出的判别结构,以及从标记数据和未标记数据推断内在的几何结构,设定X=[x1,x2,...xM]=[Xs+,XT+]是投影样本矩阵,M=Ns+Nt是所有源实例和目标实例的数目,一组样本x1,x2...,Xm∈Rm属于c类,通过最小化类内距离,得到最优投影或变换和同时最大化类间距离,实现类间识别的最大化,类间和类内散射矩阵按以下方式计算:其中Sb是类间矩阵,Sw是类内矩阵,u是总样本平均向量,ui是第i类的平均向量,Ni是第i类的样本数,是第k类的第i样本,加入一个邻接图来使用未标记样本,寻找一个最优的投影矩阵w,将数据从不同的类中分离出来,同时使附近的样本更加接近,因此,半监督判别分析的目标函数如下所示:其中,W是投影矩阵,WT是投影矩阵的转置,Sb是类间矩阵,Sw是类内矩阵,α是一个权衡参数,构造邻接图来估计样本的内在几何结构,J(w)定义如下:定义的相应的权矩阵G:其中,Nk(xj)表示xj的k近邻集合。优选地,在步骤(5)中核半监督判别分析将原始数据映射到高维核Hilbert空间中,由φ:Rn→F映射在特征空间F中称为映射函数,如:高斯核函数和多项式核在以前的工作中被证明是有用的,设定一个非线性映射函数φ(·)通过N*N核矩阵K=[Kij]定义,则数据矩阵:φ=[φ(x1),φ(x2),...,φ(xm)](15)那么公式(9)和公式(10)可以改写为:优选地,在步骤(6)中代价敏感核半监督判别分析,构造一个代价矩阵,如下所示,Cost是代价函数,元素代价(i,j)(i,j∈1,2…c)指示将第I类中的实例分类为第I类的代价值,将缺陷类表示为1,而无缺陷类表示为2,成本(1,1)=0和成本(2,2)=0,因为正确的分类不会导致任何成本,代价矩阵使用函数f(i)来描述第i类的权重,定义为结合有价值的代价信息,提出了一种对代价敏感的核判别分析方法,下面对代价敏感的半监督缺陷分析优化问题如下,是类间散度;是类内散度;按照代数公式我们得到目标函数优化后:其中,L是拉普拉斯矩阵。本专利技术提出了代价敏感的核半监督鉴别分析(CKSDA)技术,利用代价敏感的学习技术,解决不同的错误分类代价,实现了缺陷预测效果。附图说明图1是本专利技术的方法流程图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。实施例1如图1所示,本实施例基于GitHub的半监督异构软件缺陷预测算法,包本文档来自技高网...

【技术保护点】
1.一种基于GitHub的半监督异构软件缺陷预测算法,其特征在于,所述基于GitHub的半监督异构软件缺陷预测算法包括以下步骤:步骤(1)、收集数据建立数据库;步骤(2)、数据预处理,包括数据规范化和数据过滤;步骤(3)、匹配源数据和目标数据,引入统一度量表示(UMR)和典型相关分析方法(CCA);步骤(4)、半监督判别分析;步骤(5)、核半监督判别分析;步骤(6)、代价敏感核半监督判分析。

【技术特征摘要】
1.一种基于GitHub的半监督异构软件缺陷预测算法,其特征在于,所述基于GitHub的半监督异构软件缺陷预测算法包括以下步骤:步骤(1)、收集数据建立数据库;步骤(2)、数据预处理,包括数据规范化和数据过滤;步骤(3)、匹配源数据和目标数据,引入统一度量表示(UMR)和典型相关分析方法(CCA);步骤(4)、半监督判别分析;步骤(5)、核半监督判别分析;步骤(6)、代价敏感核半监督判分析。2.根据权利要求1所述的一种基于GitHub的半监督异构软件缺陷预测算法,其特征在于,所述步骤(1)的具体做法是:在GitHub上收集数据,所述收集数据包括项目选择、特征提取和清理数据集,所述项目选择包括选择3个语言标记(Python,Java,C)作为关键字,由“moststar”排序标记,从排序列表的顶部筛选出20个项目,所述特征提取包括使用“Understand”工具,提取代码度量,所述代码度量为文件静态代码度量,使用Scitools获得代码度量标准,所述清理数据集包括采用人工筛选对缺失值和显著误差值进行筛选。3.根据权利要求1所述的一种基于GitHub的半监督异构软件缺陷预测算法,其特征在于,所述步骤(2)中数据预处理使用min-max规范化,给定一个度量x,规范化值x′,计算为:所述数据过滤为knn滤波器过滤跨公司数据的方法,使用数据筛选器代替所有跨公司数据,选择源和目标跨公司项目之间的公共属性,对于目标数据中的每个实例,选择k近邻来度量相似度,使用常见的特性进行过滤,获得与目标数据集相似的源数据集的筛选数据集,这里使用k=10来表示k-最近的邻居。4.根据权利要求1所述的一种基于GitHub的半监督异构软件缺陷预测算法,其特征在于,在步骤(3)中匹配源数据和目标数据引入统一度量表示(UMR)和典型相关分析方法(CCA),在UMR的基础上,利用CCA为源和目标项目的数据寻找共同空间,使得预测数据之间的相关性最大化,利用UMR技术来使异构数据能够被比较,设定和是源数据和目标数据,这里是Xs的第i个实例,Ns和Nt是在Xs和Xt的实例数,源公司中的实例表示为目标公司中的实例表示为这里,表示与的第j度量相对应的度量值,ds和dt是源数据和目标数据中的度量数,则UMR定义如下:其中是包含源数据集特定度量的Xs中的数据,是包含目标数据集特定度量的Xt中的数据,0s和0t是源数据与目标数据中的全零矩阵,目的是为了补全维度,并且在源数据中,而在目标数据中,R为实数集,加入基于CCA的学习相关子空间,寻找两个投影方向的Ps,Pt,最大化源与目标公司数据之间的线性相关系数ρ,则CCA的目标函数定义为:其中(·)T是矩阵或向量转置,C...

【专利技术属性】
技术研发人员:荆晓远孙莹李娟娟黄鹤杨永光姚永芳彭志平
申请(专利权)人:广东石油化工学院
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1