一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于特征映射与属性补偿技术的软件缺陷预测模型的制作方法

2021-11-09 23:01:00 来源:中国专利 TAG:


1.本发明属于软件安全领域,涉及一种基于特征映射与度量补偿方法的软件项目缺陷预测模型。


背景技术:

2.随着互联网技术的蓬勃发展,软件复杂度的日益增加,软件安全及软件可靠性在软件工程中日益重要,为保证软件质量的高可靠性,缺陷预测方法成为缺陷预测领域的研究热点,好的软件缺陷预测方法能很大程度提高软件的测试效率,因此,构建高性能的缺陷预测模型在保证软件质量方面极具重要意义。
3.软件缺陷预测是基于软件开发过程中积累的历史数据构建预测模型的,然而当没有历史数据或历史缺陷数据不足以构建模型时,基于目标数据的传统软件缺陷预测方法便无法满足实践需求。而实际应用中要进行预测的项目通常是新开发的项目,这就出现了上述历史数据不足的问题,这便出现了跨项目缺陷预测的概念,即利用其它相关项目的数据用作训练来为目标数据构建缺陷预测模型,随之而来的是源项目与目标项目的数据差异难题。不同的项目由于其不同的上下文环境导致软件缺陷数据的特征空间和分布不同,即源与目标项目数据集的度量元取值分布差异导致难以满足独立同分布的假设。使用传统的机器学习技术来构建缺陷预测模型无法得到更好的预测效果。
4.当前的跨项目缺陷预测方法大致分为基于属性转换和基于数据选择两类,属性特征变换使得源项目和目标项目在保留各自缺陷特征的前提下服从相同分布。为了解决不同项目间数据分布差异较大导致缺陷预测模型性能较低的问题,我们使用度量补偿的方法改变源数据集中的数据分布以适应目标数据集,将源项目与目标项目数据之间的差异利用实例训练时权重的思想去缩小源项目与目标项目数据之间的分布差异。再使用迁移学习技术利用源项目已有知识来解决目标领域仅有少数已标记实例甚至没有的问题,利用半监督迁移成分分析(sstca)方法得到源项目与目标项目在映射空间的最小化数据距离,同时最大程度保留了它们各自的内部属性,结合这两种方法的效果加强源与目标数据域数据分布的相似性。即使用基于特征映射与属性值转换的思想使跨项目缺陷预测中源与目标数据集中的数据分布尽量相似。


技术实现要素:

5.基于现有跨项目缺陷预测问题的方法大致分为两类,一类是基于属性转换,一类是基于数据选择,其中基于属性转换的方法大多是利用权重的思想让源与目标数据更加契合,得到相似的数据分布情况。本发明结合了一种能充分利用源域数据的类标签信息进行转移成分学习的迁移学习方法sstca与属性补偿技术,使目标项目的数据分布与源项目的数据分布相似。sstca充分利用源项目中数据的类标签信息,将源项目的转移数据作为训练数据,利用采样方法进一步进行类别不平衡学习。同时利用多源训练集对同一目标数据集预测结果的均值作为模型最终的预测结果。将本方法的实验结果与现有的度量补偿方法进
行比较,验证了本发明方法的高效性。
6.本发明提出了一种结合迁移学习技术与属性补偿技术的跨项目缺陷预测模型,包括:
7.步骤1,使用交叉验证合理划分数据集,对测试所用到的样本集进行采样与归一化预处理,以得到更加平衡的缺陷数据集;
8.步骤2,应用属性补偿方法解决跨项目间数据分布差异问题,使目标项目的数据分布与源项目的数据分布更加契合;
9.步骤3,在获取到经过度量补偿技术处理过的样本集后,再利用迁移学习技术最小化源与目标数据的数据距离以得到更加相似的数据分布;
10.步骤4,根据步骤3得到的训练样本集与测试样本集,利用决策树分类模型对数据进行缺陷分类,根据预测结果进而评估模型的预测性能。
11.第一方面,上述步骤1的具体步骤如下:
12.步骤1.1,利用loadtxt()文件读取方法对模型性能进行验证所需的数据集进行合理划分,将相应的训练样本集和测试样本集中的度量数据和标签数据读取出来,以”,”为读取分割标识,读取数据的前n列作为度量数据存进x_list列表中,第n 1列的数据即为缺陷数据的标签存进y_list列表中;
13.步骤1.2,利用离差标准化方法对经过标准化操作的数进行归一化,将标准化后的数据转换到[0,1]内,得到规范化的训练集数据,从而让各度量属性的数据具有更强的可视化操作。
[0014]
步骤1.3,利用smote采样方法对训练数据进行过采样,有效缓解缺陷数据的类不平衡问题并提高数据集的训练精度。根据样本不平衡比例设置采样比例以确定采样倍率,对于少数类中的每一个样本,以欧式距离为标准计算它到少数类样本集中所有样本的距离,排序后得到该样本的k近邻进而扩充少数类的样本。
[0015]
第二方面,上述属性补偿方法的计算流程包括:
[0016]
步骤2.1,将经预处理后的训练数据样本集以列表的形式存储,针对目标训练集的每一个样例,用原始数据乘以一个权重值,该权重值为训练数据与目标数据均值之比,从而得到新的更适应源数据分布的目标数据集。同理针对源数据集中的所有样例,用目标数据与源数据均值之比作为源数据集为适应目标数据分配的新权重,从而得到一轮属性值转换后的同时适应源与目标数据的数据集。上述源与目标数据转换的计算方式为:
[0017][0018]
其中:
[0019]
上式source[i,j表示源项目数据中第i条数据实例的第j个度量值,metric_mean_source表示源项目所有数据实例在第j个度量中的均值;同理,target[i,j]表示目标项目数据中第i条数据实例的第j个度量值,metric_mean_target表示目标项目所有数据实例在第j个度量中的均值。
[0020]
步骤2.2,用sour1[i,j]表示步骤2.1求解得到的所需新的源数据第i个数据实例中的第j个度量值,用metric_mean_source和metric_mean_target表示再次计算处理过后
的源数据与目标数据第j个度量的均值,并对源数据重新做一次类似步骤2.1所做的数据处理,让源数据集针对目标数据的分布做属性值的二次转换,从而进一步提高源数据与目标数据的相似性与契合性,完成新的源与目标数据的二轮度量映射,sour1的计算方式为:
[0021]
sour1[i,j]=(sour1[i,j]*metric_mean_target)/metric_mean_source。
[0022]
步骤2.3,将经过属性值变换的源数据与目标数据作为新的迁移学习方法的参数传入,从而进行下一步基于特征映射的转换。
[0023]
第三方面,利用半监督迁移成分分析方法处理源与目标数据分布的计算流程如下:
[0024]
步骤3.1,利用sstca迁移成分分析技术进一步改善训练数据(x
s
)和测试数据(x
t
)的分布,从而提高缺陷预测模型的鲁棒性,将两个域中的距离利用mmd(最大均值差异)算法计算,其中mmd(x
s
,x
t
)=tr(kl),l是mmd算法引进的矩阵,k是利用核函数映射得到的核矩阵,tr(kl)表示的是对拼接矩阵kl求解得到的矩阵的迹。
[0025]
步骤3.2,采用核函数将已经量化的距离转化成核函数的学习过程,首先计算自定义的l和h矩阵,其中定义这里的h是一个中心矩阵,n1,n2为源域x
src
和目标域x
tar
的实例个数,x
i
,x
j
表示域中的样本数据,进而计算求得核矩阵k。
[0026]
步骤3.3,利用步骤3.2计算出的核矩阵k,进而求解(klk μi)
‑1khk前m个特征值,同前文提及,l是mmd算法引进的矩阵,k是利用核函数映射得到的核矩阵,h是中心矩阵,μ为引进的参数,i为算法中引进的中间矩阵。利用sstca算法计算降维后的矩阵,传入源域x
s
和目标域x
t
,以及降维后希望的数据维度dim,得到的新的源数据特征和新的目标数据特征(即源域与数据域的降维后的结果)。其中x的行数为原始数据的特征数,列为总的特征数。
[0027]
第四方面,上述步骤4的具体步骤如下:
[0028]
步骤4.1,对于训练样本集,经过上述属性转换和迁移成分分析操作处理后,得到分布相似且维度降低的缺陷数据,创建相应的决策树分类器对象,利用决策树分类器对目标数据集进行缺陷数据的类别预测。
[0029]
步骤4.2,对同一目标数据的预测结果由多个不同训练数据训练出来的模型综合决定,对于一个选定的目标数据,用多个不同的训练数据集训练出若干个预测性能不同的分类模型,最后根据多个模型的预测结果的均值作为目标数据的最终预测值。
[0030]
与现有方法相比,本发明有益的效果:
[0031]
1、提出的一种结合迁移学习技术与度量补偿技术的跨项目缺陷预测模型在基于相似的源与目标数据分布的基础上对缺陷数据进行预测,利用属性补偿技术让源数据在训练的时候利用权重的思想去适应目标数据的分布,在得到相对契合的数据后再次进行二次度量值转换,做到了同时考虑源与目标数据各自的分布情况,进而让构建的缺陷预测模型更具鲁棒性。
[0032]
2、基于迁移学习技术处理数据分布的优势在于,在构建缺陷预测模型时,训练数据和测试数据的分布不一致会导致训练出来的模型预测性能较差,并且在测试中可能很难预测出正确的结果,为了使两个域数据分布更加相似,我们借助最大化平均差异mmd算法去
量化衡量两个域的分布距离,而tca的本质即得到最小化mmd,使得两个域中的样本之间的差异保持最小。从而进一步增强不同数据域间的相似性。
附图说明
[0033]
图1是一种结合特征映射和属性值转换技术的跨项目缺陷预测方法的总体流程图。
[0034]
图2是一种结合特征映射和属性值转换技术的跨项目缺陷预测方法的详细流程图。
[0035]
图3是本发明实验环节所用数据样本集信息。
[0036]
图4是以kc2为目标项目,以cm1,kc1,jm1,pc1为源项目训练集,用不同的方案对数据处理得到的缺陷预测模型进行实验的信息和结果。
[0037]
图5是以cm1为目标项目,以kc2,kc1,jm1,pc1为源项目训练集,用不同的方案对数据处理得到的缺陷预测模型进行实验的信息和结果。
[0038]
图6是以kc1为目标项目,以cm1,kc2,jm1,pc1为源项目训练集,用不同的方案对数据处理得到的缺陷预测模型进行实验的信息和结果。
[0039]
图7是以pc1为目标项目,以cm1,kc1,jm1,kc2为源项目训练集,用不同的方案对数据处理得到的缺陷预测模型进行实验的信息和结果。
[0040]
图8是以kc2为目标项目,以cm1,kc1,jm1,kc2为源项目训练集,用不同的方案对数据处理进行实验的auc值,recall以及precision。
[0041]
图9是以pc1为目标项目,以kc1,cm1,jm1,kc2为源项目训练集,用不同的方案对数据处理进行实验的auc值,recall以及precision。
[0042]
图10是以kc1为目标项目,以pc1,cm1,jm1,kc2为源项目训练集,用不同的方案对数据处理进行实验的auc值,recall以及precision。
具体实施方式
[0043]
下面结合附图和实施案例对本发明作进一步说明,应指出的是,所描述的实施案例仅旨在便于对本发明的理解,而对其不起任何限定作用。
[0044]
本发明旨在针对跨项目缺陷预测中构建缺陷预测模型时,源数据集和目标数据集存在数据分布差异大的问题,提出一种提高源与目标数据相似性的方法,以建立较好预测性能和较高鲁棒性的跨项目缺陷预测模型,并进行了充分的实验,证明了方法的可行性和高效性。
[0045]
如图1所示,本发明的一种结合迁移学习和属性补偿技术的跨项目缺陷预测方法,包括:
[0046]
步骤201利用loadtxt()文件读取方法对模型性能进行验证所需的数据集进行合理划分,将相应的训练样本集和测试样本集中的度量数据和标签数据读取出来,以”,”为读取分割标识,读取数据的前n列作为度量数据存进x_list中,第n 1列的数据即为缺陷数据的标签存进y_list中;对测试所用到的样本集进行采样与规范化化预处理,以得到更加平衡的缺陷数据集;
[0047]
本发明实施数据预处理的目的在于,得到的源数据集作为训练数据时,每个项目
数据集由许多条样本数据构成,而每一条缺陷样本数又由若干个度量数据来表示,但是不同的度量之间,度量的量纲都是不一样的,因此在训练缺陷预测模型时需要对训练数据样本进行预处理操作,使的不同的度量具有相同的尺度。简而言之,当训练数据在不同维度上的度量的单位不一致时,就需要标准化的步骤对数据进行预处理。
[0048]
步骤2011利用离差标准化方法对经过标准化操作的数进行归一化,将标准化后的数据转换到[0,1]内,从而让不同度量属性的数据具有更强的可视化操作。
[0049]
归一化计算流程包括:(1)计算样本数据中的最大值与最小值,(2)利用转换函数处理数据中度量值和标签值将数据样本转换到[0,1]内,f
/
即为归一化后的规范化数据。
[0050]
步骤2012采用smote过采样方法对训练数据进行采样扩充,根据样本不平衡比例设置采样比例以确定采样倍率,对于少数类中的每一个样本,以欧式距离为标准计算它到少数类样本集中所有样本的距离,进行排序后得到k近邻扩充少数类样本。
[0051]
采样的计算流程包括:对于每一个随机选出的近邻x
n
,按照公式构建新的样本,便可按照设置的采样比例得到更加平衡的数据集。
[0052]
通过上述操作,便可得到预处理后的规范输入数据。
[0053]
步骤202,应用属性补偿方法解决跨项目间类别平衡问题,使目标项目的数据分布与原项目的数据分布更加契合;
[0054]
上述的步骤202中,属性补偿方法处理数据分布的步骤如下:
[0055]
步骤2021将经预处理后的训练数据样本集以列表的形式存储,针对目标训练集的每一个样例,给原始数据分配一个权重值,该权重值为训练数据与目标数据均值之比,从而得到新的更适应源数据分布的目标数据集。同理针对源数据集中的所有样例,用目标数据与源数据均值之比作为处理源数据集的新权重,从而得到一轮属性值转换后的适应源数据与目标数据的数据集。上述源与目标数据转换的计算方式为:
[0056]
source[i,j]=(source[i,j]*metric_mean_target)/metric_mean_source
[0057]
target[i,j]=(target[i,j]*metric_mean_source)/metric_mean_target
[0058]
其中:
[0059]
metric_mean_source=np.mean(source[:,j])
[0060]
metric_mean_source=np.mean(target[:,j])
[0061]
上式source[i,j表示源项目数据中第i条数据实例的第j个度量值,metric_mean_source表示源项目所有数据实例在第j个度量中的均值;同理,target[i,j]表示目标项目数据中第i条数据实例的第j个度量值,metric_mean_target表示目标项目所有数据实例在第j个度量中的均值。
[0062]
步骤2022,用sour1[i,j]表示步骤2021求解得到的所需新的源数据第i个数据实例中的第j个度量值,用metric_mean_source和metric_mean_target表示再次计算处理过后的源数据与目标数据第j个度量的均值,使用权重的思想,让源数据集针对目标数据的分布做了属性值的二次转换,进一步提高了源与目标数据的相似性与契合性,即完成新的源
与目标数据的二轮度量映射。sour1的计算方式为:
[0063]
sour1[i,j]=(sour1[i,j]*metric_mean_target)/metric_mean_source。
[0064]
步骤203,在获取到经过度量补偿技术处理过的样本集后,再利用迁移学习技术tca最小化源与目标数据的数据距离以得到更加相似的数据分布;
[0065]
上述的步骤203中,利用sstca技术改变源与目标数据的分布情况的步骤如下:
[0066]
步骤2031利用步骤202得到经过二轮映射的源与目标数据作为sstca算法的参数,利用迁移成分分析对数据映射再做一次转换
[0067]
步骤2032,将两个域中差异转化成两个域中的距离去计算,利用mmd(最大均值差异)算法量化地衡量。采用核函数将已经量化的距离转化成核函数的学习过程,首先计算自定义的l和h矩阵,其中定义这里的h是一个中心矩阵,n1,n2为源域x
src
和目标域x
tar
的实例个数,x
i
,x
j
表示域中的样本数据,进而计算求得核矩阵k。
[0068]
步骤2033,利用步骤2032计算出的核矩阵k,进而求解(klk μi)
‑1khk前m个特征值,同前文提及,l是mmd算法引进的矩阵,k是利用核函数映射得到的核矩阵,h是中心矩阵,μ为引进的参数,i为算法中引进的中间矩阵。sstca算法计算降维后的矩阵,传入源域xs和目标域xt,以及降维后希望的数据维度dim,得到的新的源数据特征和新的目标数据特征即是源域与数据域的降维后的结果。其中x的行数为原始数据的特征数,列为总的特征数。
[0069]
步骤204,根据步骤203得到的训练样本集与测试样本集,利用决策树技术对数据进行缺陷分类,得到模型的缺陷预测性能。
[0070]
步骤2041对于训练样本集,经过上述属性转换和迁移成分分析操作处理后,得到分布相似且维度降低的缺陷数据,创建相应的决策树分类器对象,利用决策树分类器对目标数据集进行缺陷数据的类别预测;
[0071]
步骤2042对同一目标数据的预测结果由多个不同训练数据训练出来的模型综合决定,对于一个选定的目标数据,用多个不同的训练数据集训练出若干个预测性能不同的分类模型,最后根据多个模型的预测结果的均值作为目标数据的最终预测值。
[0072]
本发明主要针对跨项目缺陷预测中源域目标数据分布差异较大提出的一种解决数据分布差异问题的方法,我们结合迁移学习和属性补偿技术对数据进行处理对属性值进行转换,我们选用了nasa数据集中的5个子集作为实验数据,分别是cm1,jm1,kc1,kc2,pc1,图3展示了实验中用到的数据集的详细信息。
[0073]
为使跨项目缺陷预测模型性能得到提升,本发明提出了一些解决不同项目间数据差异的解决方法。由于不同项目的度量数据分布存在很大的差异,所以本发明利用权重的思想对源与目标数据做了属性转换的操作,使项目间的数据差异降到最小,同时结合了迁移成分分析技术sstca对属性做了二次映射,在对目标数据进行预测时取多个不同性能的分类器预测结果作为模型最终的预测值,很大程度上提高了模型的泛化能力与预测性能。
[0074]
通过图8

图10的折线图可以直观看出。对于4种数据处理的方法,针对所选取的五个数据集,17年提出的用目标数据集适应源数据集分布相对于采用08年利用源数据集适应目标数据集分布的方法在查全率指标上是有一定提高的,即表明该方法针对模型而言可以
预测出更全面的缺陷数据。所以本研究也利用目标数据去适应源数据分布情况的思想,并在此基础上结合sstca基于特征映射的降维方法让测试数据与目标数据属性值保持最大程度的数据相似性,从而提高缺陷预测模型的预测效果,以使得模型预测效果达到最佳。
[0075]
在确定利用目标数据适应源数据数据分布的思想后,本发明针对如何设计合适的权重值让源数据集更加适应目标数据展开了研究,对于属性补偿方法,我们让目标数据适应源数据集分布的同时,也让源数据集做了适应目标数据的二次转换,本文对每种方法针对每一个源与目标数据进行了500次实验,最后以各个不同数据集的实验结果取平均值作为模型的最终性能,图4

图7展示了结合sstca特征映射和属性值转换处理数据分布的查全率,auc值以及查准率。同时作为对比,本文也对08年和17年所用的属性值转换方法进行了类似的实验。
[0076]
经过上述对数据处理方法的选择,对于实验选用的5个数据集进行缺陷数据的预测,应用本发明提出的方法处理源与目标数据的分布差异问题,然后得到数据分布相似的源与目标数据,最后使用以转移数据作为训练数据训练出来的分类器完成对目标数据的预测,此外,为验证本发明所提方法的有效性,设置了多组对比实验,对相同的测试与目标数据集利用不同的数据处理方法进行实验,从auc等指标进行综合对比,实验结果如图4

图7所示。
[0077]
通过观察图8

图10可知,本发明提出的算法能使决策树分类器得出更加精准的缺陷预测效果,这是由于该方法同时结合了源与目标数据的数据分布去训练模型。另一方面,该方法通过迁移成分分析技术利用源项目中数据的类标签信息,最小化源与目标数据在映射空间的数据距离,将源项目的转移数据作为训练数据,即通过属性值转换与基于特征映射的迁移学习技术最大程度保证了源与目标数据的分布相似性,进而大大提升缺陷预测系统的预测效果。由此可见,本研究所提方法能够有效地对基于度量值转换的方法进行改进,改进后的方法能够使预测模型性能有一定幅度的提升。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献