CN114356641B - 一种增量式的软件缺陷预测方法、***、设备及存储介质 - Google Patents
一种增量式的软件缺陷预测方法、***、设备及存储介质 Download PDFInfo
- Publication number
- CN114356641B CN114356641B CN202210205512.6A CN202210205512A CN114356641B CN 114356641 B CN114356641 B CN 114356641B CN 202210205512 A CN202210205512 A CN 202210205512A CN 114356641 B CN114356641 B CN 114356641B
- Authority
- CN
- China
- Prior art keywords
- base classifier
- training
- sample
- training set
- total
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种增量式的软件缺陷预测方法、***、设备及存储介质,该方法通过获取第一训练集,对第一训练集进行预处理,获得第二训练集;基于第二训练集,构建代价敏感LightGBM模型;将代价敏感LightGBM模型作为基分类器构建增量式预测模型,并计算总训练样本数和总缺陷样本数;根据总训练样本数和总缺陷样本数,计算分类阈值;使用增量式预测模型对待预测样本进行预测,获得最终预测值;基于分类阈值和最终预测值,判断待预测样本的类别。本方法能够在原模型的基础上增加新基分类器,学习新数据的同时,无需重复训练历史样本,并能够降低模型计算量,节省存储空间,提高训练效率,不断完善模型,提高软件缺陷预测的准确率。
Description
技术领域
本发明涉及软件缺陷预测技术领域,具体涉及一种增量式的软件缺陷预测方法、***、设备及存储介质。
背景技术
在信息化时代的今天,软件的规模变得越来越大,软件结构复杂度也在不断提高。为了排查软件缺陷,确保软件正常运行,软件测试成本的占比应该在软件开发成本中超过50%。但在实际开发中,由于时间、成本、人力的限制,软件测试的成本往往占比很低。因此如何合理地分配软件测试资源、如何高质量、高效的进行软件测试就成为了研究人员和软件测试团队所关心的问题。软件缺陷预测可以将软件模块分成有缺陷倾向的软件模块和无缺陷倾向的软件模块。软件测试团队根据有缺陷倾向的软件模块和无缺陷倾向的软件模块,分配有限的测试资源来更密集地测试有缺陷倾向的软件模块,以此帮助软件测试团队更高效地进行软件测试,节省测试成本并及时发现软件缺陷。
由于软件不断迭代更新,进而导致新的软件缺陷数据的不断增加,但针对软件缺陷预测中不断产生的新缺陷样本的学习问题,目前的研究较少。鉴于软件是不断演化并完善的,在软件开发过程中不仅存在着大量历史软件缺陷数据,而且不断产生着新的软件缺陷数据。如果只训练新的软件缺陷数据,就会导致灾难性的历史数据遗忘。如果每次有的软件缺陷数据,就从头开始重新训练模型,就会造成历史样本数据的反复重复学习,不仅浪费大量的训练时间,在存储历史数据时还会浪费大量的存储空间。如果不学习的软件缺陷数据,随着软件不断迭代演化,新的软件缺陷数据不断增加,原有模型的预测性能将大大降低。
此外,实际开发中,有缺陷的模块要远远少于无缺陷的模块,所以会产生类不平衡的问题。类不平衡问题带来的差异意味着软件缺陷预测模型很难正确预测有缺陷类别,并且很可能将有缺陷样本误分类为无缺陷样本,从而导致错失纠正有缺陷模块的机会,会导致缺陷发生在***测试阶段,甚至是软件交付使用时。因此,类不平衡问题使得软件缺陷预测模型预测有缺陷样本的准确率不高。
发明内容
为解决现有技术中存在的问题,本发明提供一种增量式的软件缺陷预测方法、***、设备及存储介质,能够在原模型的基础上增加新基分类器,学习新样本的同时,无需重复训练历史样本,还能够避免遗忘训练历史样本,降低模型计算量,节省存储空间,提高训练效率。此外,在构建增量式预测模型时,通过删除预测准确率低的基分类器,既能保证预测模型的规模不会太大,又能够解决软件开发迭代过程中不断产生的新缺陷样本的学习问题,不断完善模型,提高软件缺陷预测的准确率。
为达到上述目的,本发明的技术方案是这样实现的:
第一方面,本发明实施例提供了一种增量式的软件缺陷预测方法,包括步骤:步骤S100、获取第一训练集,对所述第一训练集进行预处理,获得第二训练集;
步骤S200、基于所述第二训练集,构建代价敏感LightGBM模型;
步骤S300、将所述代价敏感LightGBM模型作为基分类器,基于所述基分类器构建增量式预测模型,以及计算总训练样本数和总缺陷样本数,具体过程包括:
步骤S310、累计获取所述第一训练集的次数;
步骤S320、将每次获取的所述第一训练集进行预处理后,输入至所述代价敏感LightGBM模型中,获取新的基分类器;
步骤S330、将所述新的基分类器加入历史基分类器组中,判断是否要删除所述历史基分类器组中的基分类器,以构建增量式预测模型,以及计算所述总训练样本数和所述总缺陷样本数,判断步骤包括:
步骤S331、根据当前累计获取的所述第一训练集的次数,限定当前基分类器的数量;
步骤S332、当所述历史基分类器组中历史基分类器的数量小于当前基分类器的限定数量时,将新的基分类器直接加入所述历史基分类器组中,获得第一基分类器组,根据所述第一基分类器组训练的训练样本数,计算第一总训练样本数和第一总缺陷样本数;
步骤S333、当所述历史基分类器组中历史基分类器的数量大于或等于当前基分类器的限定数量时,使用所述历史基分类器组中的每个历史基分类器对所述第一训练集进行预测,计算每个历史基分类器预测所述第一训练集的准确率;
将每个所述历史基分类器的所述准确率进行排序,删除预测准确率最小的历史基分类器,获得新的历史基分类器组,将新的基分类器加入所述新的历史基分类器组中,获得第二基分类器组,根据所述第二基分类器组训练的训练样本数,计算第二总训练样本数和第二总缺陷样本数;
步骤S334、计算所述步骤S332获得的所述第一基分类器组或所述步骤S333获得的所述第二基分类器组中各个基分类器的权重;
步骤S335、根据所述步骤S334计算获得的权重,更新所述步骤S332获得的所述第一基分类器组或所述步骤S333获得的所述第二基分类器组中各个基分类器的权重,并将更新完权重的各个基分类器构建成一个增量式预测模型;
步骤S400、根据所述总训练样本数和所述总缺陷样本数,计算分类阈值;
步骤S500、使用所述增量式预测模型对待预测样本进行预测,获得最终预测值;
步骤S600、基于所述分类阈值和所述最终预测值,判断所述待预测样本的类别。
与现有技术相比,本发明第一方面具有以下有益效果:
本方法基于第二训练集,构建代价敏感LightGBM模型;将代价敏感LightGBM模型作为基分类器,基于基分类器构建增量式预测模型,以及计算总训练样本数和总缺陷样本数;根据总训练样本数和总缺陷样本数,计算分类阈值;使用增量式预测模型对待预测样本进行预测,获得最终预测值;基于分类阈值和最终预测值,判断待预测样本为有缺陷样本还是无缺陷样本,获得最终分类结果。本方法基于基分类器构建一种增量式预测模型,用于预测待预测样本,该模型能够在原模型的基础上增加新基分类器,学***衡问题所带来的影响,进一步提高软件缺陷预测的准确率。
进一步,所述对所述第一训练集进行预处理,获得第二训练集,包括:
对所述第一训练集中的各个训练样本进行分类;
删除所有数据项相同且标签相同的训练样本;
对缺失一半或一半以上特征项的训练样本进行删除,对缺失一半以下特征项的训练样本采用均值进行填补缺失的特征项;
对训练样本中特征值连续的特征项进行归一化,获得第二训练集。
进一步,所述基于所述第二训练集,构建代价敏感LightGBM模型,包括:
在LightGBM模型中引入改进的交叉熵损失函数,所述改进的交叉熵损失函数为:
其中,所述ŷ表示训练样本的预测值,所述y表示训练样本的实际值,所述ɑ表示类别权重,所述类别权重表示有缺陷样本和无缺陷样本的比值;
将所述第二训练集输入具备改进的交叉熵损失函数的LightGBM模型中,构建代价敏感LightGBM模型。
进一步,通过如下公式计算分类阈值:
其中,所述T表示分类阈值,所述Nt表示当前训练样本集中的总缺陷样本数,所述Nz表示当前训练样本集中的总训练样本数。
进一步,通过如下公式计算最终预测值:
进一步,通过如下公式判断所述待预测样本的类别:
其中,所述ypred表示最终分类结果,1表示判断所述待预测样本为有缺陷样本,0表示判断所述待预测样本为无缺陷样本,所述YP表示最终预测值,所述T表示分类阈值。
第二方面,本发明实施例提供了一种增量式的软件缺陷预测***,包括:
预处理单元,用于获取第一训练集,对所述第一训练集进行预处理,获得第二训练集;
代价敏感LightGBM模型构建单元,用于基于所述第二训练集,构建代价敏感LightGBM模型;
增量式预测模型构建单元,用于将所述代价敏感LightGBM模型作为基分类器,基于所述基分类器构建增量式预测模型,以及计算总训练样本数和总缺陷样本数;
分类阈值计算单元,用于根据所述总训练样本数和所述总缺陷样本数,计算分类阈值;
最终预测值获取单元,用于使用所述增量式预测模型对待预测样本进行预测,获得最终预测值;
最终分类结果获取单元,用于基于所述分类阈值和所述最终预测值,判断所述待预测样本的类别。
与现有技术相比,本发明第二方面具有以下有益效果:
本***的代价敏感LightGBM模型构建单元基于第二训练集,构建代价敏感LightGBM模型;增量式预测模型构建单元将代价敏感LightGBM模型作为基分类器,基于基分类器构建增量式预测模型,以及计算总训练样本数和总缺陷样本数;分类阈值计算单元根据总训练样本数和总缺陷样本数,计算分类阈值;最终预测值获取单元使用增量式预测模型对待预测样本进行预测,获得最终预测值;最终分类结果获取单元基于分类阈值和最终预测值,判断待预测样本为有缺陷样本还是无缺陷样本,获得最终分类结果。本***的增量式预测模型构建单元基于基分类器构建一种增量式预测模型,用于预测待预测样本,该模型能够在原模型的基础上增加新基分类器,学***衡问题所带来的影响,进一步提高软件缺陷预测的准确率。
第三方面,本发明实施例提供了一种增量式的软件缺陷预测设备,包括至少一个控制处理器和用于与所述至少一个控制处理器通信连接的存储器;所述存储器存储有可被所述至少一个控制处理器执行的指令,所述指令被所述至少一个控制处理器执行,以使所述至少一个控制处理器能够执行如上所述的一种增量式的软件缺陷预测方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如上所述的一种增量式的软件缺陷预测方法。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明一个实施例提供的一种增量式的软件缺陷预测方法的流程图;
图2为本发明一个实施例提供的构建增量式预测模型与计算总训练样本数和总缺陷样本数的流程图;
图3为本发明另一个实施例提供的一种增量式的软件缺陷预测方法的流程图;
图4为本发明一个实施例提供的一种增量式的软件缺陷预测***的结构图。
具体实施方式
下面将结合附图,对本公开实施例的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。需要说明的是,在不冲突的情况下,本公开实施例及实施例中的特征可以相互组合。另外,附图的作用在于用图形补充说明书文字部分的描述,使人能够直观地、形象地理解本公开的每个技术特征和整体技术方案,但其不能理解为对本公开保护范围的限制。
在本发明的描述中,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本发明的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
由于软件是不断演化并完善的,在软件开发过程中不仅存在着大量历史软件缺陷数据,而且不断产生着新的软件缺陷数据。如果只训练新样本数据,就会导致灾难性的历史数据遗忘。如果每次有新样本数据,就从头开始重新训练模型,就会造成历史样本数据的反复重复学习,不仅浪费大量的训练时间,在存储历史数据时还会浪费大量的存储空间。如果不学习新样本数据,随着软件不断迭代演化,新样本数据不断增加,原有模型的预测性能将大大降低。
此外,实际开发中,有缺陷的模块要远远少于无缺陷的模块,所以会产生类不平衡的问题。类不平衡问题带来的差异意味着软件缺陷预测模型很难正确预测有缺陷类别,并且很可能将有缺陷样本误分类为无缺陷样本,从而导致错失纠正有缺陷模块的机会,会导致缺陷发生在***测试阶段,甚至是软件交付使用时。因此,类不平衡问题使得软件缺陷预测模型预测有缺陷样本的准确率不高。
为解决上述问题,本申请通过获取第一训练集,对第一训练集进行预处理,获得第二训练集;基于第二训练集,构建代价敏感LightGBM模型;将代价敏感LightGBM模型作为基分类器,基于基分类器构建增量式预测模型,以及计算总训练样本数和总缺陷样本数;根据总训练样本数和总缺陷样本数,计算分类阈值;使用增量式预测模型对待预测样本进行预测,获得最终预测值;基于分类阈值和最终预测值,判断待预测样本为有缺陷样本还是无缺陷样本,获得最终分类结果。本方法基于基分类器构建一种增量式预测模型,用于预测待预测样本,该模型能够在原模型的基础上增加新基分类器,学***衡问题所带来的影响,进一步提高软件缺陷预测的准确率。
参照图1至图2,本发明实施例提供了一种增量式的软件缺陷预测方法,包括步骤:
步骤S100、获取第一训练集,对第一训练集进行预处理,获得第二训练集。
具体的,本实施例中将每一批次获取的第一训练集称为第一训练集,对第一训练集中的各个训练样本进行分类,本实施例将有缺陷的训练样本标记为1,无缺陷的训练样本标记为0。
删除所有数据项相同且标签相同的训练样本,本实施例将所有数据项相同且标签相同的训练样本称为重复的训练样本,将重复的训练样本删除,能够减少训练模型的计算量,避免重复的样本对训练模型的影响,提高了训练模型的训练效率。
对缺失一半或一半以上特征项的训练样本进行删除,对缺失一半以下特征项的训练样本采用均值进行填补缺失的特征项,本实施例中认为缺失一半或一半以上特征项的训练样本没有训练价值,删除没有训练价值的训练样本,能够减少训练模型的计算量,提高训练模型的训练效率。
对训练样本中特征值连续的特征项进行归一化,获得第二训练集,其中,归一化计算公式如下所示:
其中,x表示每个训练样本的特征值,表示删除重复的训练样本和处理完缺失特征项的训练样后剩余的所有训练样本的特征值的均值,σ表示删除重复的训练样本和处理完缺失特征项的训练样后剩余的所有样本的特征值的标准差。
步骤S200、基于第二训练集,构建代价敏感LightGBM模型。
具体的,由于在训练模型中,无缺陷的训练样本占大多数,无缺陷的训练样本在训练过程中会主导训练模型进行训练,这会影响训练模型预测的准确率,因此,本实施例在LightGBM模型中引入改进的交叉熵损失函数,该改进的交叉熵损失函数为:
其中,ŷ表示训练样本的预测值,y表示训练样本的实际值,ɑ表示类别权重,所述类别权重表示有缺陷样本和无缺陷样本的比值;
将第二训练集输入具备改进的交叉熵损失函数的LightGBM模型中,构建代价敏感LightGBM模型。
本实施例中,LightGBM是梯度提升决策树(GBDT)的最新有效实现,是一种将决策树作为基学习器的集成学习模型, LightGBM通过使用直方图算法、带深度限制的按叶生长策略等改进,显著提高了模型训练速度,在面对大样本、高维度的数据集时具备训练速度快的优势。
通过在LightGBM模型中引入改进的交叉熵损失函数,改进的交叉熵损失函数中的类别权重将有缺陷训练样本的权重放大,例如,当=0.25时,将有缺陷训练样本误分为无缺陷训练样本所产生的损失比将无缺陷训练样本误分为有缺陷训练样本高了3倍,这意味着将有缺陷训练样本误分为无缺陷训练样本会产生更大的代价,也意味着训练模型将更加注重有缺陷训练样本的学***衡问题所带来的影响。
步骤S300、将代价敏感LightGBM模型作为基分类器,基于基分类器构建增量式预测模型,以及计算总训练样本数和总缺陷样本数。
具体的,随着新训练样本的不断增加,训练模型规模也会不断增大,当训练模型过大,会导致训练模型的计算量太大,为了避免训练模型规模的不断增加,需要限制基分类器的数目。通过设定基分类器数目上限,删除预测准确率低的基分类器。既能保证预测模型的规模不会太大,又能提高预测模型的预测准确率,本实施例中的第一训练集就是步骤S100中的第一训练集,参照图2,构建增量式预测模型与计算总训练样本数和总缺陷样本数的过程如下:
步骤S310、累计获取第一训练集的次数,计算公式如下:
其中,ni+1表示当前累计获取的第一训练集的总次数,ni表示历史累计获取的第一训练集的总次数。
步骤S320、将每次获取的第一训练集进行预处理后,输入至代价敏感LightGBM模型中,获取新的基分类器。
步骤S330、将新的基分类器加入历史基分类器组中,判断是否要删除历史基分类器组中的基分类器,以构建增量式预测模型,以及计算总训练样本数和总缺陷样本数,为区分不同情况下获得的总训练样本数和总缺陷样本数,以下引入第一总训练样本数、第一总缺陷样本数、第二总训练样本数以及第二总缺陷样本数,判断步骤包括:
步骤S331、根据当前累计获取的第一训练集的总次数,限定当前基分类器的数量,计算公式如下:
其中,m表示当前基分类器的限定数量,ni+1表示当前累计获取的第一训练集的总次数,40%可通过实验获得。
步骤S332、当历史基分类器组中历史基分类器的数量小于当前基分类器的限定数量时,将新的基分类器直接加入历史基分类器组中,获得第一基分类器组,根据该第一基分类器组训练的训练样本数,计算第一总训练样本数和第一总缺陷样本数,计算公式如下:
其中,NZ表示当前训练样本集中的总训练样本数,即,第一总训练样本数,Na表示历史训练样本集中的总训练样本数,N0表示新的基分类器中训练的训练样本数。
其中,Nt表示当前训练样本集中的总缺陷样本数,即,第一总缺陷样本数,Nd表示历史训练样本集中的总缺陷样本数,Nd0表示新的基分类器中训练的有缺陷训练样本数。
步骤S333、当历史基分类器组中历史基分类器的数量大于或等于当前基分类器的限定数量时,使用历史基分类器组中的每个历史基分类器对第一训练集进行预测,计算每个历史基分类器预测第一训练集的准确率,计算公式如下:
其中,NT表示正确预测第一训练集的数目,N0表示第一训练集的总数。
将每个历史基分类器的准确率进行排序,删除预测准确率最小的历史基分类器,获得新的历史基分类器组,将新的基分类器加入新的历史基分类器组中,获得第二基分类器组,根据该第二基分类器组训练的训练样本数,计算第二总训练样本数和第二总缺陷样本数,计算公式如下:
其中,NZ表示当前训练样本集中的总训练样本数,即,第二总训练样本数,Na表示历史训练样本集中的总训练样本数,N0表示新的基分类器中训练的训练样本数,Nk表示预测准确率最小的历史基分类器训练的训练样本数。
其中,Nt表示当前训练样本集中的总缺陷样本数,即,第二总缺陷样本数,Nd表示历史训练样本集中的总缺陷样本数,Nd0表示新的基分类器中训练的有缺陷训练样本数,Ndk表示预测准确率最小的历史基分类器训练的有缺陷训练样本数。
步骤S334、计算步骤S332获得的第一基分类器组或步骤S333获得的第二基分类器组中各个基分类器的权重,计算公式如下:
其中,Ni表示第i个基分类器训练的训练样本数,NZ表示总的训练样本数。
步骤S335、根据步骤S334计算获得的权重,更新步骤S332获得的第一基分类器组或步骤S333获得的第二基分类器组中各个基分类器的权重,并将更新完权重的各个基分类器构建成一个增量式预测模型;
本实施例借助集成学习的思想来构建增量式预测模型,该增量式预测模型不仅能够保留历史基分类器组,还使得该增量式预测模型能够通过新的基分类器训练新样本,避免了重复学习历史训练样本,并且该增量式预测模型限定了基分类器的数量,避免增量式预测模型规模的不断增加,减少增量式预测模型的计算量,提高训练效率,因此,该增量式预测模型能不断的完善更新,更加符合实际应用。
步骤S400、根据总训练样本数和总缺陷样本数,计算分类阈值。
具体的,在现有技术中二分类器的分类阈值一般为0.5,这意味着训练模型认为有缺陷的训练样本和无缺陷的训练样本的概率一样。但在实际软件缺陷预测样本集中存在类不平衡问题,即,有缺陷的训练样本和无缺陷的训练样本的数量相差较大,如果使用等于0.5的分类阈值,会导致将有缺陷的训练样本预测为无缺陷的样本的概率大大增加,从而降低了训练模型预测的准确率。为解决此问题,本实施例设计的分类阈值计算公式如下:
其中,T表示分类阈值,Nt表示当前训练样本集中的总缺陷样本数,NZ表示当前训练样本集中的总训练样本数。
本实施例使用阈值移动方法,通过改变分类阈值的取值,使得待预测样本预测结果更加倾向于有缺陷的样本,降低软件预测中类不平衡问题所带来的影响,提高预测模型预测的准确率。
步骤S500、使用增量式预测模型对待预测样本进行预测,获得最终预测值。
具体的,通过增量式预测模型对待预测样本进行预测,获得最终预测值,其中,最终预测值的计算公式如下:
其中,Yp表示最终预测值,ki表示第i个基分类器的权重,yi表示第i个基分类器的预测值,预测值的范围为[0,1]。
步骤S600、基于分类阈值和最终预测值,判断待预测样本的类别。
具体的,基于分类阈值和最终预测值,判断待预测样本的类别,判断待预测样本的类别的计算公式如下:
其中,ypred表示最终分类结果,1表示判断待预测样本为有缺陷样本,0表示判断待预测样本为无缺陷样本,Yp表示最终预测值,T表示分类阈值。
为了便于本领域技术人员理解,以下提供一组最佳实施例,随着软件不断演化完善,不断产生一批新的软件缺陷训练样本,参照图3,本实施例将每一批次产生的所有新的软件缺陷训练样本称为第一训练集。对第一次产生的新的软件缺陷训练样本记为第一训练集1,第二次产生的新的软件缺陷训练样本记为第一训练集2,以此类推,第n次产生的新的软件缺陷训练样本记为第一训练集n。
对每批次的第一训练集进行预处理,例如,对第一训练集i进行预处理的过程为:
对第一训练集i中的各个训练样本进行分类,本实施例将有缺陷的训练样本标记为1,无缺陷的训练样本标记为0。
删除所有数据项相同且标签相同的训练样本,本实施例将所有数据项相同且标签相同的训练样本称为重复的训练样本,将重复的训练样本删除,能够减少训练模型的计算量,避免重复的样本对训练模型的影响,提高了训练模型的训练效率。
对缺失一半或一半以上特征项的训练样本进行删除,对缺失一半以下特征项的训练样本采用均值进行填补缺失的特征项,本实施例中认为缺失一半或一半以上特征项的训练样本没有训练价值,删除没有训练价值的训练样本,能够减少训练模型的计算量,提高训练模型的训练效率。
对训练样本中特征值连续的特征项进行归一化,获得第二训练集i。
本实施例在LightGBM模型中引入改进的交叉熵损失函数, 将获得的第二训练集i输入具备改进的交叉熵损失函数的LightGBM模型中,构建代价敏感LightGBM模型i。
将构建好的代价敏感LightGBM模型i作为新的基分类器加入原预测模型中,该原预测模型有一个或一个以上的基分类器,判断是否要删除原预测模型中的基分类器,以构建增量式预测模型,以及计算总训练样本数和总缺陷样本数,判断过程没有在图3中标出,为区分不同情况下获得的总训练样本数和总缺陷样本数,以下引入第一总训练样本数、第一总缺陷样本数、第二总训练样本数以及第二总缺陷样本数,判断过程为:
步骤S10、根据当前累计获取的第一训练集的次数,限定当前基分类器的数量;
步骤S20、当原预测模型中基分类器的数量小于当前基分类器的限定数量时,将新的基分类器直接加入原预测模型中,获得第一新预测模型,根据第一新预测模型训练的训练样本数,计算第一总训练样本数和第一总缺陷样本数;
步骤S30、当原预测模型中基分类器的数量大于或等于当前基分类器的限定数量时,使用原预测模型中的每个基分类器对第一训练集进行预测,计算每个基分类器预测所述第一训练集的准确率;
将每个基分类器的准确率进行排序,删除预测准确率最小的基分类器,获得新的原预测模型,将新的基分类器加入新的原预测模型中,获得第二新预测模型,根据第新二预测模型训练的训练样本数,计算第二总训练样本数和第二总缺陷样本数;
步骤S40、计算步骤S20获得的第一新预测模型或步骤S30获得的第二新预测模型中各个基分类器的权重;
步骤S50、根据所述步骤S40计算获得的权重,更新步骤S20获得的第一新预测模型或步骤S30获得的第二新预测模型中各个基分类器的权重,并将更新完权重的各个基分类器构建成一个增量式预测模型。
本实施例获取待预测样本,将待预测样本输入增量式预测模型中获得最终预测值,根据上述获得的总训练样本数和总缺陷样本数计算分类阈值,将最终预测值与分类阈值进行比较获得最终预测结果,该最终预测结果为判断待预测样本为有缺陷样本或判断待预测样本为无缺陷样本。
参照图4,本发明实施例还提供了一种增量式的软件缺陷预测***,包括:预处理单元100,用于获取第一训练集,对第一训练集进行预处理,获得第二训练集;
代价敏感LightGBM模型构建单元200,用于基于第二训练集,构建代价敏感LightGBM模型;
增量式预测模型构建单元300,用于将代价敏感LightGBM模型作为基分类器,基于基分类器构建增量式预测模型,以及计算总训练样本数和总缺陷样本数;
分类阈值计算单元400,用于根据总训练样本数和总缺陷样本数,计算分类阈值;
最终预测值获取单元500,用于使用增量式预测模型对待预测样本进行预测,获得最终预测值;
最终分类结果获取单元600,用于基于分类阈值和最终预测值,判断待预测样本为有缺陷样本还是无缺陷样本,获得最终分类结果。
需要说明的是,由于本实施例中的一种增量式的软件缺陷预测***与上述的一种增量式的软件缺陷预测方法基于相同的发明构思,因此,方法实施例中的相应内容同样适用于本***实施例,此处不再详述。
本发明实施例还提供了一种增量式的软件缺陷预测设备,包括:至少一个控制处理器和用于与至少一个控制处理器通信连接的存储器。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实现上述实施例的一种增量式的软件缺陷预测方法所需的非暂态软件程序以及指令存储在存储器中,当被处理器执行时,执行上述实施例中的一种增量式的软件缺陷预测方法,例如,执行以上描述的图1中的方法步骤S100至步骤S600。
以上所描述的***实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个控制处理器执行,可使得上述一个或多个控制处理器执行上述方法实施例中的一种增量式的软件缺陷预测方法,例如,执行以上描述的图1中的方法步骤S100至S600的功能。
通过以上的实施方式的描述,本领域技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现。本领域技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(ReadOnly Memory ,ROM)或随机存储记忆体(Random Access Memory ,RAM)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上是对本发明的较佳实施进行了具体说明,但本发明并不局限于上述实施方式,熟悉本领域的技术人员在不违背本发明精神的共享条件下还可作出种种等同的变形或替换,这些等同的变形或替换均包括在本发明权利要求所限定的范围内。
Claims (9)
1.一种增量式的软件缺陷预测方法,其特征在于,包括步骤:
步骤S100、获取第一训练集,对所述第一训练集进行预处理,获得第二训练集;
步骤S200、基于所述第二训练集,构建代价敏感LightGBM模型;
步骤S300、将所述代价敏感LightGBM模型作为基分类器,基于所述基分类器构建增量式预测模型,以及计算总训练样本数和总缺陷样本数,具体过程包括:
步骤S310、累计获取所述第一训练集的次数;
步骤S320、将每次获取的所述第一训练集进行预处理后,输入至所述代价敏感LightGBM模型中,获取新的基分类器;
步骤S330、将所述新的基分类器加入历史基分类器组中,判断是否要删除所述历史基分类器组中的基分类器,以构建增量式预测模型,以及计算所述总训练样本数和所述总缺陷样本数,判断步骤包括:
步骤S331、根据当前累计获取的所述第一训练集的次数,限定当前基分类器的数量;
步骤S332、当所述历史基分类器组中历史基分类器的数量小于当前基分类器的限定数量时,将新的基分类器直接加入所述历史基分类器组中,获得第一基分类器组,根据所述第一基分类器组训练的训练样本数,计算第一总训练样本数和第一总缺陷样本数;
步骤S333、当所述历史基分类器组中历史基分类器的数量大于或等于当前基分类器的限定数量时,使用所述历史基分类器组中的每个历史基分类器对所述第一训练集进行预测,计算每个历史基分类器预测所述第一训练集的准确率;
将每个所述历史基分类器的所述准确率进行排序,删除预测准确率最小的历史基分类器,获得新的历史基分类器组,将新的基分类器加入所述新的历史基分类器组中,获得第二基分类器组,根据所述第二基分类器组训练的训练样本数,计算第二总训练样本数和第二总缺陷样本数;
步骤S334、计算所述步骤S332获得的所述第一基分类器组或所述步骤S333获得的所述第二基分类器组中各个基分类器的权重;
步骤S335、根据所述步骤S334计算获得的权重,更新所述步骤S332获得的所述第一基分类器组或所述步骤S333获得的所述第二基分类器组中各个基分类器的权重,并将更新完权重的各个基分类器构建成一个增量式预测模型;
步骤S400、根据所述总训练样本数和所述总缺陷样本数,计算分类阈值;
步骤S500、使用所述增量式预测模型对待预测样本进行预测,获得最终预测值;
步骤S600、基于所述分类阈值和所述最终预测值,判断所述待预测样本的类别。
2.根据权利要求1所述的增量式的软件缺陷预测方法,其特征在于,所述对所述第一训练集进行预处理,获得第二训练集,包括:
对所述第一训练集中的各个训练样本进行分类;
删除所有数据项相同且标签相同的训练样本;
对缺失一半或一半以上特征项的训练样本进行删除,对缺失一半以下特征项的训练样本采用均值进行填补缺失的特征项;
对训练样本中特征值连续的特征项进行归一化,获得第二训练集。
7.一种增量式的软件缺陷预测***,其特征在于,包括:
预处理单元,用于获取第一训练集,对所述第一训练集进行预处理,获得第二训练集;
代价敏感LightGBM模型构建单元,用于基于所述第二训练集,构建代价敏感LightGBM模型;
增量式预测模型构建单元,用于将所述代价敏感LightGBM模型作为基分类器,基于所述基分类器构建增量式预测模型,以及计算总训练样本数和总缺陷样本数,具体过程包括:
步骤S310、累计获取所述第一训练集的次数;
步骤S320、将每次获取的所述第一训练集进行预处理后,输入至所述代价敏感LightGBM模型中,获取新的基分类器;
步骤S330、将所述新的基分类器加入历史基分类器组中,判断是否要删除所述历史基分类器组中的基分类器,以构建增量式预测模型,以及计算所述总训练样本数和所述总缺陷样本数,判断步骤包括:
步骤S331、根据当前累计获取的所述第一训练集的次数,限定当前基分类器的数量;
步骤S332、当所述历史基分类器组中历史基分类器的数量小于当前基分类器的限定数量时,将新的基分类器直接加入所述历史基分类器组中,获得第一基分类器组,根据所述第一基分类器组训练的训练样本数,计算第一总训练样本数和第一总缺陷样本数;
步骤S333、当所述历史基分类器组中历史基分类器的数量大于或等于当前基分类器的限定数量时,使用所述历史基分类器组中的每个历史基分类器对所述第一训练集进行预测,计算每个历史基分类器预测所述第一训练集的准确率;
将每个所述历史基分类器的所述准确率进行排序,删除预测准确率最小的历史基分类器,获得新的历史基分类器组,将新的基分类器加入所述新的历史基分类器组中,获得第二基分类器组,根据所述第二基分类器组训练的训练样本数,计算第二总训练样本数和第二总缺陷样本数;
步骤S334、计算所述步骤S332获得的所述第一基分类器组或所述步骤S333获得的所述第二基分类器组中各个基分类器的权重;
步骤S335、根据所述步骤S334计算获得的权重,更新所述步骤S332获得的所述第一基分类器组或所述步骤S333获得的所述第二基分类器组中各个基分类器的权重,并将更新完权重的各个基分类器构建成一个增量式预测模型;
分类阈值计算单元,用于根据所述总训练样本数和所述总缺陷样本数,计算分类阈值;
最终预测值获取单元,用于使用所述增量式预测模型对待预测样本进行预测,获得最终预测值;
最终分类结果获取单元,用于基于所述分类阈值和所述最终预测值,判断所述待预测样本的类别。
8.一种增量式的软件缺陷预测设备,其特征在于:
包括至少一个控制处理器和用于与所述至少一个控制处理器通信连接的存储器;所述存储器存储有可被所述至少一个控制处理器执行的指令,所述指令被所述至少一个控制处理器执行,以使所述至少一个控制处理器能够执行如权利要求1至6任一项所述的增量式的软件缺陷预测方法。
9.一种计算机可读存储介质,其特征在于:所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1至6任一项所述的增量式的软件缺陷预测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210205512.6A CN114356641B (zh) | 2022-03-04 | 2022-03-04 | 一种增量式的软件缺陷预测方法、***、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210205512.6A CN114356641B (zh) | 2022-03-04 | 2022-03-04 | 一种增量式的软件缺陷预测方法、***、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114356641A CN114356641A (zh) | 2022-04-15 |
CN114356641B true CN114356641B (zh) | 2022-05-27 |
Family
ID=81094940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210205512.6A Active CN114356641B (zh) | 2022-03-04 | 2022-03-04 | 一种增量式的软件缺陷预测方法、***、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114356641B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115617694B (zh) * | 2022-11-30 | 2023-03-10 | 中南大学 | 基于信息融合的软件缺陷预测方法、***、设备及介质 |
CN115629995B (zh) * | 2022-12-21 | 2023-03-14 | 中南大学 | 基于多依赖lstm的软件缺陷定位方法、***及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008584A (zh) * | 2019-04-02 | 2019-07-12 | 广东石油化工学院 | 一种基于GitHub的半监督异构软件缺陷预测算法 |
CN111597122A (zh) * | 2020-07-24 | 2020-08-28 | 四川新网银行股份有限公司 | 一种基于历史缺陷数据挖掘的软件故障注入方法 |
CN111679971A (zh) * | 2020-05-20 | 2020-09-18 | 北京航空航天大学 | 一种基于Adaboost的软件缺陷预测方法 |
CN113127342A (zh) * | 2021-03-30 | 2021-07-16 | 广东电网有限责任公司 | 基于电网信息***特征选择的缺陷预测方法及装置 |
CN113781485A (zh) * | 2021-11-12 | 2021-12-10 | 成都数联云算科技有限公司 | 一种pcb缺陷类别的智能检测方法、装置、电子设备及介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012116208A2 (en) * | 2011-02-23 | 2012-08-30 | New York University | Apparatus, method, and computer-accessible medium for explaining classifications of documents |
CN114064459A (zh) * | 2021-10-25 | 2022-02-18 | 西安理工大学 | 基于生成对抗网络和集成学习的软件缺陷预测方法 |
-
2022
- 2022-03-04 CN CN202210205512.6A patent/CN114356641B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008584A (zh) * | 2019-04-02 | 2019-07-12 | 广东石油化工学院 | 一种基于GitHub的半监督异构软件缺陷预测算法 |
ZA202100183B (en) * | 2019-04-02 | 2021-08-25 | Univ Guangdong Petrochem Tech | Github-based semi-supervised heterogeneous software defect prediction algorithm |
CN111679971A (zh) * | 2020-05-20 | 2020-09-18 | 北京航空航天大学 | 一种基于Adaboost的软件缺陷预测方法 |
CN111597122A (zh) * | 2020-07-24 | 2020-08-28 | 四川新网银行股份有限公司 | 一种基于历史缺陷数据挖掘的软件故障注入方法 |
CN113127342A (zh) * | 2021-03-30 | 2021-07-16 | 广东电网有限责任公司 | 基于电网信息***特征选择的缺陷预测方法及装置 |
CN113781485A (zh) * | 2021-11-12 | 2021-12-10 | 成都数联云算科技有限公司 | 一种pcb缺陷类别的智能检测方法、装置、电子设备及介质 |
Non-Patent Citations (1)
Title |
---|
《基于代价敏感支持向量机的软件缺陷预测研究》;任胜兵;《计算机工程与科学》;20181121;1787-1795页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114356641A (zh) | 2022-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114356641B (zh) | 一种增量式的软件缺陷预测方法、***、设备及存储介质 | |
CN107832581B (zh) | 状态预测方法和装置 | |
CN113670610B (zh) | 基于小波变换与神经网络的故障检测方法、***及介质 | |
CN111275660B (zh) | 一种平板显示器缺陷检测方法及装置 | |
CN111882033B (zh) | 一种基于Keras的区域民航主被动碳排放预测方法 | |
CN107977748B (zh) | 一种多变量扭曲时间序列预测方法 | |
CN114398049A (zh) | 一种离散制造车间数字孪生模型自适应动态更新方法 | |
CN112990587B (zh) | 一种对台区用电进行精准预测的方法及***、设备、介质 | |
CN112070103B (zh) | 通过微波链路网格化自适应可变尺度反演大气能见度的方法 | |
CN114821852A (zh) | 基于特征金字塔的电网缺陷深度识别巡查机器人控制*** | |
CN112527572A (zh) | 磁盘故障预测方法、装置、计算机可读存储介质及服务器 | |
CN114564513A (zh) | 基于神经网络的海雾预测方法、装置、设备及存储介质 | |
CN112101313B (zh) | 一种机房机器人巡检方法及*** | |
CN112434600A (zh) | 一种无人机巡检方法及*** | |
CN111948561A (zh) | 基于实测大数据和人工智能学习算法的电池寿命预测方法 | |
CN115907079B (zh) | 一种基于注意力时空图卷积网络的空域交通流量预测方法 | |
CN111401551A (zh) | 基于强化学习的弱监督自学习方法 | |
CN116522065A (zh) | 一种基于深度学习的磨煤机健康度评估方法 | |
CN116431346A (zh) | 一种用于电子设备主存储器容量的补偿方法 | |
CN113283804B (zh) | 一种风险预测模型的训练方法和*** | |
CN116176860B (zh) | 一种燃油***测试方法、***、设备及可读存储介质 | |
CN117713688B (zh) | 光伏组件在多朝向及倾角下的低效识别与电量提升方法 | |
CN114692724B (zh) | 数据分类模型的训练方法、数据分类方法和装置 | |
JP7314723B2 (ja) | 画像処理システム、及び画像処理プログラム | |
CN113806895A (zh) | 基于连续学习的输电线路销钉级缺陷识别模型调优方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |