本发明属于软件缺陷预测领域,尤其涉及一种基于语义属性子集划分与度量匹配的异质缺陷预测方法及系统。
背景技术:
在信息飞速发展的今天,生活中几乎离不开各式各样的软件。行业数据显示,过去40年来,各种系统和应用程序软件的体积正在以指数形式增长。伴随而来的软件缺陷预测环境也是呈增量变化的,主要表现在两个方面:(1)软件开发呈现增量过程;(2)未知样本经过测试验证后,带标签样本数目呈现增量。而所谓的软件缺陷,指的是软件模块中的缺陷。通过预测有缺陷的模块会使得项目管理人员以及项目开发人员重点关注那些容易产生产品质量问题的模块,从而节约测试以及维护成本,节省开发迭代的周期时长。而在实际项目生产过程中,历史数据与目标数据往往来自于不同的源,两者之间是异质的,不仅度量属性不同,度量个数也不同,要找到相同度量属性相同度量个数的源数据难之又难。如果直接对不同维度的数据进行迁移投影等操作,又会丧失模型预测结果的可解释性,只能通过预测结果得知该目标数据有缺陷,而不能得知哪一方面有缺陷。通过上述分析,现有技术存在的问题及缺陷为:现有的常用方法存在异质数据处理同维数据后丢失原始数据的可解释性,以及不同类型度量随意匹配造成预测模型的过拟合等问题。
解决以上问题及缺陷的难度为:
属性拆分单元的构建依据,度量匹配的阈值选取以及可解释性追溯模块的构建等问题。
解决以上问题及缺陷的意义为:
能够良好的解决关于异质数据处理问题,提高模型的鲁棒性,并对预测结果进行可解释性追溯。
技术实现要素:
针对现有技术存在的问题,本发明提供了一种基于语义属性子集划分与度量匹配的异质缺陷预测方法及系统。
本发明是这样实现的:
一种基于语义属性子集划分与度量匹配的异质缺陷预测方法,其特征在于,包括:
利用属性拆分单元工具划分属性子集,并对数据进行预处理;
对预处理后的数据进行同类型属性子集间的度量匹配;
利用机器学习和集成学习方法建立异质缺陷预测模型;
基于建立异质缺陷预测模型的预测目标数据集是否存在缺陷,并进行可解释性追溯。
在上述基于语义属性子集划分与度量匹配的异质缺陷预测方法,所述利用属性拆分单元工具划分属性子集及数据预处理过程为:
步骤2.1、利用属性拆分单元,将原始数据拆分为5种类型的属性子集,分别为属性子集loc、属性子集mccabe、属性子集halstead、属性子集ck和属性子集other,其中对于任意一种软件缺陷数据集,必有属性子集loc;
步骤2.2、得到属性子集后,对于源数据集与目标数据集共有的属性子集,并为一个执行单元,执行之后的操作;对于非共有的属性子集,分别为源数据集和目标数据集构建各自独有的属性度量集s-specific和t-specific,然后将其并为一个执行单元,执行之后的操作。
在上述基于语义属性子集划分与度量匹配的异质缺陷预测方法,同类型属性子集间的度量匹配的过程为:
步骤3.1、对于共有属性子集所在的执行单元,根据语义对源数据集与目标数据集的度量进行配对;此时会出现三种情况:情况一,一对一的匹配;此时源数据集与目标数据集在某度量上均有唯一稳定的表达指标,匹配上的度量对是一对一的;情况二,多对一的匹配;此时源(目标)数据中某含义的度量有多个表达指标,但目标(源)数据集仅有唯一表达度量,匹配的度量对是多对一的,此时需要按照非共有属性子集所在执行单元中所采用的度量匹配方法进行匹配,将度量对从多对一转化成一对一;情况三,通过上述两种情况转化后,仍然匹配不上的度量;此时对这些度量进行舍弃;
步骤3.2、对于非共有属性子集所在的执行单元,执行以下四个步骤:第一步,确定特征选择阈值;在此执行单元内,从源数据集和目标数据集中选取度量个数较少的数目作为特征选择阈值;第二步,利用特征选择技术计算相应的特征值,并使用排序过滤原则,选取排名在阈值前的特征作为可匹配的度量;第三步,利用软件缺陷预测中常用的度量匹配方法对可匹配的度量进行匹配,根据不同的数据集设置经验阈值,选取达到阈值的匹配对作为候选度量对;第四步,候选度量对中,每一对皆有一个权重值,根据最大加权二分匹配原则,对所有可能的匹配结果进行计算,选取总权重值最大的匹配结果作为最终的度量对。
在上述基于语义属性子集划分与度量匹配的异质缺陷预测方法,所述步骤3.2中特征选择的计算公式具体如下:
(1)信息增益:
ig(a)=h(y)-h(y|a)
h(y|a)=-∑a∈a∑y∈yp(a,y)logp(y|a)
其中ig(a)表示信息增益,h(x)表示对于某一个特征x,x的取值范围可能为{x1,x2,...,xn},计算每一个值的条件熵再取平均所得的信息熵,h(y|a)表示在给定特征a的情况下,目标列的熵的值;
(2)relieff方法的算法步骤及计算公式:
输入:数据集d,样本抽样次数为m,特征权重阈值为δ,最近邻样本个数为k;
输出:各个特征的特征权重t;
a、将特征权重全部置零,t为空集;
b、对于每一个i,从0到m采取如下步骤:
a)从d中随机选择样本r;
b)从r的同类样本集中找打r的k个最近邻hj(j=1,2,...,k),从每一个不同的样本集中找出k个最近邻mj(c);
c、对于每一个特征a,a从1到n,执行如下步骤:
a)计算
b)直到计算完每一个特征,循环结束;其中diff(a,r,h)表示样本r和样本h在特征a上的差,mj(c)表示类c中第j个最近邻样本;
(3)增益率:
其中,ig指信息增益,si(y,a)指分裂信息度,用来衡量特征分裂数据的广度和均匀程度,其定义如下:
式中,从y1到ym是特征a的值分割形成的m个样例子集。
在上述基于语义属性子集划分与度量匹配的异质缺陷预测方法,所述步骤3.2中度量匹配的计算公式具体如下:
(1)基于百分数位的匹配:
上述式子表示源中第i个度量与目标中第j个度量的匹配值,其中spij(n)表示在n等分时源项目中第i个度量与目标项目中第j个度量所对应的属性值中较小的值,bpij(n)表示在n等分时,源项目中第i个度量与目标项目中第j个度量所对应的属性值中较大的值;于是,最终的匹配值计算公式为:
(2)基于kolmogorov-smirnov测试的匹配:
mij=pij
式中pij表示源项目中第i个度量指标和目标项目中第j个度量指标在ks检验下的p值,并以此作为这两个度量间的匹配值分数;
(3)基于spearman相关性的匹配:
mij=cij
式中cij表示源项目中第i个度量指标和目标项目中第j个度量指标在斯皮尔曼相关性分析下的相关系数值,并以此作为这两个度量间的匹配值分数。
在上述基于语义属性子集划分与度量匹配的异质缺陷预测方法,所述异质缺陷预测模型的构建过程为:
步骤6.1、对多个共有属性子集所在执行单元得到的度量匹配对集合p1至pm,(其中,1<=m<5),以及非共有属性子集所在执行单元得到的度量匹配对集合p,使用常用机器学习模型训练得到与所匹配度量相对应的分类器;
步骤6.2、利用集成学习的方法,对每一个基分类器分配一个线性的权重,使得所有基分类器的权重之和为1;
步骤6.3、在框架中设置超参数α和β,分别表示每一次训练结束时所有基分类器的排名和权重变化值向量,对所有基分类器的权重按照排名和权重变化值向量进行再分配,使得下一次集成学习的结果更偏向于性能优秀的基分类器。
在上述基于语义属性子集划分与度量匹配的异质缺陷预测方法,所述可解释性追溯的过程为:
步骤7.1、最终的预测模型由多个带权重的基分类器构成,权重越大的基分类器,其所代表的属性子集对目标数据集的影响越大;其中,每一个拥有可执行单元的属性子集都将对应一个基分类器;
步骤7.2、根据最终的权重排名,可以推断出属性子集对目标模型的影响程度,明确异质缺陷预测中更应该重视哪些方面的缺陷,从而科学合理地进行人力物力的分配,起到节约开发成本的作用。
一种实施基于语义属性子集划分与度量匹配的异质缺陷预测方法的系统,其特征在于,包括:
属性子集划分模块,通过利用属性拆分单元工具划分属性子集,并对数据进行预处理;
度量匹配模块,进行同类型属性子集间的度量匹配;
异质缺陷预测模型构建模块,通过利用机器学习和集成学习方法,建立异质缺陷预测模型;
可解释性追溯模块,预测目标数据集是否存在缺陷,并进行可解释性追溯。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:
本发明在异质软件缺陷预测过程中,能很好地解决异质数据间度量不同度量个数不同等问题,且构建的异质缺陷预测模型拥有很好的扩展性和鲁棒性,并能对预测结果进行可解释性追溯。
附图说明
图1是本发明实施例提供的基于语义属性子集划分与度量匹配的异质缺陷预测系统的流程图。
图2是本发明实施例提供的基于语义属性子集划分与度量匹配的异质缺陷预测方法及系统结构示意图;
图3是本发明实施例提供的属性拆分单元行为模式图。
图4是异质预测模型构建过程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。图中:1、属性子集划分模块;2、度量匹配模块;3、异质缺陷预测模型构建模块;4、可解释性追溯模块。
本发明实施例提供的基于语义属性子集划分与度量匹配的异质缺陷预测方法及系统,包括以下步骤:
利用属性拆分单元工具划分属性子集,并对数据进行预处理;
对预处理后的数据进行同类型属性子集间的度量匹配;
利用机器学习和集成学习方法建立异质缺陷预测模型;
基于建立异质缺陷预测模型的预测目标数据集是否存在缺陷,并进行可解释性追溯。
利用属性拆分单元工具划分属性子集及数据预处理过程为:
步骤2.1、利用属性拆分单元,将原始数据拆分为5种类型的属性子集,分别为属性子集loc、属性子集mccabe、属性子集halstead、属性子集ck和属性子集other,其中对于任意一种软件缺陷数据集,必有属性子集loc;
步骤2.2、得到属性子集后,对于源数据集与目标数据集共有的属性子集,并为一个执行单元,执行之后的操作;对于非共有的属性子集,分别为源数据集和目标数据集构建各自独有的属性度量集s-specific和t-specific,然后将其并为一个执行单元,执行之后的操作。
同类型属性子集间的度量匹配的过程为:
步骤3.1、对于共有属性子集所在的执行单元,根据语义对源数据集与目标数据集的度量进行配对;此时会出现三种情况:情况一,一对一的匹配;此时源数据集与目标数据集在某度量上均有唯一稳定的表达指标,匹配上的度量对是一对一的;情况二,多对一的匹配;此时源(目标)数据中某含义的度量有多个表达指标,但目标(源)数据集仅有唯一表达度量,匹配的度量对是多对一的,此时需要按照非共有属性子集所在执行单元中所采用的度量匹配方法进行匹配,将度量对从多对一转化成一对一;情况三,通过上述两种情况转化后,仍然匹配不上的度量;此时对这些度量进行舍弃;
步骤3.2、对于非共有属性子集所在的执行单元,执行以下四个步骤:第一步,确定特征选择阈值;在此执行单元内,从源数据集和目标数据集中选取度量个数较少的数目作为特征选择阈值;第二步,利用特征选择技术计算相应的特征值,并使用排序过滤原则,选取排名在阈值前的特征作为可匹配的度量;第三步,利用软件缺陷预测中常用的度量匹配方法对可匹配的度量进行匹配,根据不同的数据集设置经验阈值,选取达到阈值的匹配对作为候选度量对;第四步,候选度量对中,每一对皆有一个权重值,根据最大加权二分匹配原则,对所有可能的匹配结果进行计算,选取总权重值最大的匹配结果作为最终的度量对。
步骤3.2中特征选择的计算公式具体如下:
(1)信息增益:
ig(a)=h(y)-h(y|a)
h(y|a)=-∑a∈a∑y∈yp(a,y)logp(y|a)
其中ig(a)表示信息增益,h(x)表示对于某一个特征x,x的取值范围可能为{x1,x2,...,xn},计算每一个值的条件熵再取平均所得的信息熵,h(y|a)表示在给定特征a的情况下,目标列的熵的值;
(2)relieff方法的算法步骤及计算公式:
输入:数据集d,样本抽样次数为m,特征权重阈值为δ,最近邻样本个数为k;
输出:各个特征的特征权重t;
a、将特征权重全部置零,t为空集;
b、对于每一个i,从0到m采取如下步骤:
c)从d中随机选择样本r;
d)从r的同类样本集中找打r的k个最近邻hj(j=1,2,...,k),从每一个不同的样本集中找出k个最近邻mj(c);
c、对于每一个特征a,a从1到n,执行如下步骤:
c)计算
d)直到计算完每一个特征,循环结束;其中diff(a,r,h)表示样本r和样本h在特征a上的差,mj(c)表示类c中第j个最近邻样本;
(3)增益率:
其中,ig指信息增益,si(y,a)指分裂信息度,用来衡量特征分裂数据的广度和均匀程度,其定义如下:
式中,从y1到ym是特征a的值分割形成的m个样例子集。
步骤3.2中度量匹配的计算公式具体如下:
(1)基于百分数位的匹配:
上述式子表示源中第i个度量与目标中第j个度量的匹配值,其中spij(n)表示在n等分时源项目中第i个度量与目标项目中第j个度量所对应的属性值中较小的值,bpij(n)表示在n等分时,源项目中第i个度量与目标项目中第j个度量所对应的属性值中较大的值;于是,最终的匹配值计算公式为:
(2)基于kolmogorov-smirnov测试的匹配:
mij=pij
式中pij表示源项目中第i个度量指标和目标项目中第j个度量指标在ks检验下的p值,并以此作为这两个度量间的匹配值分数;
(3)基于spearman相关性的匹配:
mij=cij
式中cij表示源项目中第i个度量指标和目标项目中第j个度量指标在斯皮尔曼相关性分析下的相关系数值,并以此作为这两个度量间的匹配值分数。
异质缺陷预测模型的构建过程为:
步骤6.1、对多个共有属性子集所在执行单元得到的度量匹配对集合p1至pm,(其中,1<=m<5),以及非共有属性子集所在执行单元得到的度量匹配对集合p,使用常用机器学习模型训练得到与所匹配度量相对应的分类器;
步骤6.2、利用集成学习的方法,对每一个基分类器分配一个线性的权重,使得所有基分类器的权重之和为1;
步骤6.3、在框架中设置超参数α和β,分别表示每一次训练结束时所有基分类器的排名和权重变化值向量,对所有基分类器的权重按照排名和权重变化值向量进行再分配,使得下一次集成学习的结果更偏向于性能优秀的基分类器。
可解释性追溯的过程为:
步骤7.1、最终的预测模型由多个带权重的基分类器构成,权重越大的基分类器,其所代表的属性子集对目标数据集的影响越大;其中,每一个拥有可执行单元的属性子集都将对应一个基分类器;
步骤7.2、根据最终的权重排名,可以推断出属性子集对目标模型的影响程度,明确异质缺陷预测中更应该重视哪些方面的缺陷,从而科学合理地进行人力物力的分配,起到节约开发成本的作用。
本发明还涉及一种实施基于语义属性子集划分与度量匹配的异质缺陷预测方法的系统,包括:
属性子集划分模块,通过利用属性拆分单元工具划分属性子集,并对数据进行预处理;
度量匹配模块,进行同类型属性子集间的度量匹配;
异质缺陷预测模型构建模块,通过利用机器学习和集成学习方法,建立异质缺陷预测模型;
可解释性追溯模块,预测目标数据集是否存在缺陷,并进行可解释性追溯。
为验证本发明提出的一种基于语义属性子集划分与度量匹配的异质缺陷预测方法及系统的软件缺陷预测技术能够高效地预测项目中是否有缺陷,实验依次选择morph、nasa、softlab、aeeem和relink作为目标数据,并且每次实验重复20次,其预测性能指标取平均值,最终得到5组结果,并将其与现有的异质缺陷预测方法作比较,结果如下表,其中加粗的数字表示该方法的性能是最好的:
结果显示,本发明中的方法在总体上显著优于其它方法,如下表:
显然,本发明的上述实施例仅仅是为清楚地说明本发明技术方案所作的举例,而并非是对本发明的具体实施方式的限定。凡在本发明权利要求书的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
1.一种基于语义属性子集划分与度量匹配的异质缺陷预测方法,其特征在于,包括:
利用属性拆分单元工具划分属性子集,并对数据进行预处理;
对预处理后的数据进行同类型属性子集间的度量匹配;
利用机器学习和集成学习方法建立异质缺陷预测模型;
基于建立异质缺陷预测模型的预测目标数据集是否存在缺陷,并进行可解释性追溯。
2.如权利要求1所述基于语义属性子集划分与度量匹配的异质缺陷预测方法,其特征在于,所述利用属性拆分单元工具划分属性子集及数据预处理过程为:
步骤2.1、利用属性拆分单元,将原始数据拆分为5种类型的属性子集,分别为属性子集loc、属性子集mccabe、属性子集halstead、属性子集ck和属性子集other,其中对于任意一种软件缺陷数据集,必有属性子集loc;
步骤2.2、得到属性子集后,对于源数据集与目标数据集共有的属性子集,并为一个执行单元,执行之后的操作;对于非共有的属性子集,分别为源数据集和目标数据集构建各自独有的属性度量集s-specific和t-specific,然后将其并为一个执行单元,执行之后的操作。
3.如权利要求1所述基于语义属性子集划分与度量匹配的异质缺陷预测方法,其特征在于,同类型属性子集间的度量匹配的过程为:
步骤3.1、对于共有属性子集所在的执行单元,根据语义对源数据集与目标数据集的度量进行配对;此时会出现三种情况:情况一,一对一的匹配;此时源数据集与目标数据集在某度量上均有唯一稳定的表达指标,匹配上的度量对是一对一的;情况二,多对一的匹配;此时源(目标)数据中某含义的度量有多个表达指标,但目标(源)数据集仅有唯一表达度量,匹配的度量对是多对一的,此时需要按照非共有属性子集所在执行单元中所采用的度量匹配方法进行匹配,将度量对从多对一转化成一对一;情况三,通过上述两种情况转化后,仍然匹配不上的度量;此时对这些度量进行舍弃;
步骤3.2、对于非共有属性子集所在的执行单元,执行以下四个步骤:第一步,确定特征选择阈值;在此执行单元内,从源数据集和目标数据集中选取度量个数较少的数目作为特征选择阈值;第二步,利用特征选择技术计算相应的特征值,并使用排序过滤原则,选取排名在阈值前的特征作为可匹配的度量;第三步,利用软件缺陷预测中常用的度量匹配方法对可匹配的度量进行匹配,根据不同的数据集设置经验阈值,选取达到阈值的匹配对作为候选度量对;第四步,候选度量对中,每一对皆有一个权重值,根据最大加权二分匹配原则,对所有可能的匹配结果进行计算,选取总权重值最大的匹配结果作为最终的度量对。
4.如权利要求3所述基于语义属性子集划分与度量匹配的异质缺陷预测方法,其特征在于,所述步骤3.2中特征选择的计算公式具体如下:
(1)信息增益:
ig(a)=h(y)-h(y|a)
h(y|a)=-∑a∈a∑y∈yp(a,y)logp(y|a)
其中ig(a)表示信息增益,h(x)表示对于某一个特征x,x的取值范围可能为{x1,x2,...,xn},计算每一个值的条件熵再取平均所得的信息熵,h(y|a)表示在给定特征a的情况下,目标列的熵的值;
(2)relieff方法的算法步骤及计算公式:
输入:数据集d,样本抽样次数为m,特征权重阈值为δ,最近邻样本个数为k;
输出:各个特征的特征权重t;
a、将特征权重全部置零,t为空集;
b、对于每一个i,从0到m采取如下步骤:
a)从d中随机选择样本r;
b)从r的同类样本集中找打r的k个最近邻hj(j=1,2,...,k),从每一个不同的样本集中找出k个最近邻mj(c);
c、对于每一个特征a,a从1到n,执行如下步骤:
a)计算
b)直到计算完每一个特征,循环结束;其中diff(a,r,h)表示样本r和样本h在特征a上的差,mj(c)表示类c中第j个最近邻样本;
(3)增益率:
其中,ig指信息增益,si(y,a)指分裂信息度,用来衡量特征分裂数据的广度和均匀程度,其定义如下:
式中,从y1到ym是特征a的值分割形成的m个样例子集。
5.如权利要求1所述基于语义属性子集划分与度量匹配的异质缺陷预测方法,其特征在于,所述步骤3.2中度量匹配的计算公式具体如下:
(1)基于百分数位的匹配:
上述式子表示源中第i个度量与目标中第j个度量的匹配值,其中spij(n)表示在n等分时源项目中第i个度量与目标项目中第j个度量所对应的属性值中较小的值,bpij(n)表示在n等分时,源项目中第i个度量与目标项目中第j个度量所对应的属性值中较大的值;于是,最终的匹配值计算公式为:
(2)基于kolmogorov-smirnov测试的匹配:
mij=pij
式中pij表示源项目中第i个度量指标和目标项目中第j个度量指标在ks检验下的p值,并以此作为这两个度量间的匹配值分数;
(3)基于spearman相关性的匹配:
mij=cij
式中cij表示源项目中第i个度量指标和目标项目中第j个度量指标在斯皮尔曼相关性分析下的相关系数值,并以此作为这两个度量间的匹配值分数。
6.如权利要求1所述基于语义属性子集划分与度量匹配的异质缺陷预测方法,其特征在于,所述异质缺陷预测模型的构建过程为:
步骤6.1、对多个共有属性子集所在执行单元得到的度量匹配对集合p1至pm,(其中,1<=m<5),以及非共有属性子集所在执行单元得到的度量匹配对集合p,使用常用机器学习模型训练得到与所匹配度量相对应的分类器;
步骤6.2、利用集成学习的方法,对每一个基分类器分配一个线性的权重,使得所有基分类器的权重之和为1;
步骤6.3、在框架中设置超参数α和β,分别表示每一次训练结束时所有基分类器的排名和权重变化值向量,对所有基分类器的权重按照排名和权重变化值向量进行再分配,使得下一次集成学习的结果更偏向于性能优秀的基分类器。
7.如权利要求1所述基于语义属性子集划分与度量匹配的异质缺陷预测方法,其特征在于,所述可解释性追溯的过程为:
步骤7.1、最终的预测模型由多个带权重的基分类器构成,权重越大的基分类器,其所代表的属性子集对目标数据集的影响越大;其中,每一个拥有可执行单元的属性子集都将对应一个基分类器;
步骤7.2、根据最终的权重排名,可以推断出属性子集对目标模型的影响程度,明确异质缺陷预测中更应该重视哪些方面的缺陷,从而科学合理地进行人力物力的分配,起到节约开发成本的作用。
8.一种实施如权利要求1~7任意一项所述基于语义属性子集划分与度量匹配的异质缺陷预测方法的系统,其特征在于,包括:
属性子集划分模块,通过利用属性拆分单元工具划分属性子集,并对数据进行预处理;
度量匹配模块,进行同类型属性子集间的度量匹配;
异质缺陷预测模型构建模块,通过利用机器学习和集成学习方法,建立异质缺陷预测模型;
可解释性追溯模块,预测目标数据集是否存在缺陷,并进行可解释性追溯。
技术总结