一种基于集成剪枝的软件缺陷数据集分类方法

未命名 08-14 阅读:80 评论:0


1.本发明涉及集成学习、剪枝、遗传算法和软件缺陷预测具体地,涉及把进化聚类应用的集成剪枝方法中。


背景技术:

2.由于科技的快速发展和互联网的普及,导致海量、高速、多样化的数据不断产生、积累和传播的现象。大数据的快速积累和处理使得数据逐渐成为企业和组织中重要的资产,能够为企业和组织提供更多的商业价值。通过对大数据的分析和挖掘,可以发现隐藏在数据中的规律和趋势,从而做出更加明智的决策。
3.单一的学习算法或模型在面对复杂的数据时可能存在一定的局限性,如过拟合、欠拟合、高偏差或高方差等。这可能导致预测性能不理想或无法满足实际需求。集成学习通过将多个学习算法或模型组合起来,集成学习可以通过共同决策、投票、加权等方式获得更为准确和稳健的预测结果。集成学习可以充分利用不同模型之间的互补性,从而提高模型的泛化能力、降低模型的过拟合风险,同时也能够在处理大规模数据和复杂任务时提供更好的性能。
4.集成剪枝是一种将集成学习和模型剪枝技术相结合的方法,旨在通过去除集成模型中的冗余和不必要的部分,从而提高模型的预测性能和模型的解释性。
5.在实际应用中,随着数据规模和模型复杂度的不断增加,模型的解释性和可解释性成为越来越重要的需求。复杂的集成模型可能在预测性能上表现出色,但其对于模型内部的决策过程和特征重要性的解释性较差,这对于一些对模型解释性有要求的场景,如金融、医疗、法律等领域,可能存在限制。因此,需要一种方法来在保持预测性能的同时,提高模型的解释性和可解释性,降低大数据处理对能源的过分消耗。


技术实现要素:

6.在实际应用中,模型的泛化性能和稳健性是至关重要的。复杂的集成模型可能存在过拟合、泛化能力下降和对输入数据的高度敏感性等问题。通过剪枝集成模型,可以去除冗余和不必要的模型部分,从而减小模型的复杂度,提高模型的泛化性能和稳健性,从而节约计算机对电力的消耗和达到保护计算机存储器件的目的。
7.为了实现上述目的,本发明的技术方案为:
8.一种基于集成剪枝的软件缺陷数据集分类方法,其特征在于:包括以下步骤:
9.(1)加载软件缺陷数据集信息(2)使用bootstrap方法得到不同的训练集,将所有的数据集用于训练不同的基分类器(3)对于验证集的生成,使用knn算法获得在训练集上与测试集相似的数据集作为验证集,并得到每个分类器的性能(4)进化聚类算法的数据集构成,使用每个基分类器对验证集的置信度构成数据集(5)使用进化聚类方法得到全局最优的聚类结果,将所有的基分类器进行分组(6)根据精度最大原则,从每个分组中选择基分类器。减少集成学习在软件缺陷数据集上的运行时间和内存的需要,提高对未知软件缺陷数
据的适应能力。
10.进一步,所述步骤(1)加载输入的软件缺陷数据集,首先判断该数据集是否是分类问题数据集,然后对该数据集的实例信息,特征数信息,和类别信息进行统计。最后根据one-hot编码对字符类型的类别转换为数字类型。
11.根据权利要求1所述的一种基于集成剪枝的软件缺陷数据集分类方法,其特征在于,所述步骤(2)根据基分类器数量,使用bootstrap取样获得不同子训练集用于训练不同的基分类器,并保证基分类器之间的多样性。
12.进一步,所述步骤(3)验证集的生成和获得基分类器性能的步骤如下:
13.步骤3.1:设置knn算法的超参数,用以得到合适数量的验证集实例。
14.步骤3.2:使用测试集作为knn算法的训练集,并将训练好的knn算法用于测试原始训练集,得到训练集中存在重复实例,去除重复,该数据集即为基分类器的验证集
15.步骤3.3:得到所有的基分类器的验证集后,每个基分类器用于预测验证集,计算其精度,并将精度降序排序,选择前50%的基分类器用于分组。
16.进一步,所述步骤(4)进化聚类数据集构成步骤如下:
17.步骤4.1:获得所有基分类器在验证集上的置信度分数,在验证集上,假设有n个样本,且标签个数为m,对于一个基学习器w在验证集上的分数结构假设有n个样本,且标签个数为m,对于一个基学习器w在验证集上的分数结构其中表示基学习器w为第i个样本属于第j个标签的概率。此时每个分数构成为一个二维数组,然后通过转换,变成一个大小相同的一维数组。
18.步骤4.2:转化为一维数据后,将所有的基分类器的置信度拼接为一个二维数组,此时的二维数据即为进化聚类算法的数据集。
19.进一步,所述步骤(5)使用进化聚类方法得到全局最优聚类结果步骤如下:
20.步骤5.1:设定进化聚类算法超参数,如人口数为200,迭代次数为200,变异概率为0.5%。
21.步骤5.2:种群的初始化,使用k-means方法对聚类数据集进行训练和预测,k-means得到的聚类结果作为一个个体的染色体。然后在此基础上,使用随机函数,随机选择位置,随机改变其簇类结果。此时得到的种群中,个体染色体存在较大差别,保证了初始种群的多样性。
22.步骤5.3:对于种群个体适应度计算,这里采用监督分类器计算每个个体的适应度。选择一定数量的训练集来训练每个监督分类器,计算每个监督分类器在测试集上的f1分数,并求平均值,该平均值就会作为该个体的适应度。
23.步骤5.4:计算完成初始种群个体的适应度后,使用竞标赛算子选择父母一代。
24.步骤5.5:在使用单点交叉算子用于父母个体,生成的新个体具有父母的特征,同时在更好适应度的条件下,有可能产生更优秀的后代。
25.步骤5.6:完成单点交叉后,使用交换变异算子,提高进化聚类算法的搜索能力和效果。
26.步骤5.7:完成三个操作算子后,按照设定的迭代次数淘汰选择个体,并从中选择适应度最大的个体。
27.步骤5.8:得到全局适应度最大的个体,按照这个聚类结果,将所用参与进化聚类
算法数据集组成的基分类器进行分组。
28.进一步,所述步骤(6)根据精度最大原则从每个组中选择基分类器步骤如下:
29.步骤6.1:首先从第一个组中选择在验证集上精度最大基分类器,加入集成剪枝模型。
30.步骤6.2:对于第二组的基分类器选择使用顺序正向选择方法。把第二组的每个基分类器和集成剪枝模型中的基分类器进行融合,选择集成精度最大基分类器。对所有的分组进行同样的操作。
31.步骤6.3:如果遍历完所有分组后,集成剪枝模型中的基分类器数量仍不满足集成剪枝数量,重新从第一组开始遍历,直到满足剪枝数量要求。
32.本发明的技术效果为:
33.1.通过集成剪枝技术,可以显著减少集成学习模型在软件缺陷数据集上的基分类器数量。这对于移动设备或资源有限的环境中部署模型非常有用,因为可以减少模型的存储需求和推理时的计算开销,由此带来降低计算机数据运行对电力的大量消耗和保护计算机的存储器件。
34.2.提高集成学习模型的泛化性能。剪枝可以消除模型中的过拟合问题,从而提高模型的泛化能力和对未知软件缺陷数据的适应能力。
35.3.降低集成学习模型的计算开销:通过剪枝,可以减少集成学习模型的参数量和计算量,从而降低模型的计算开销,节约能源,使得模型更适用于资源有限的环境。
36.4.本发明能够减少集成学习在软件缺陷数据集上的运行时间和内存的需要,并能够在剪枝的情况下和原来集成方法性能相近甚至可以有所提高。
附图说明
37.图1为本发明的总体系统功能图;
38.图2为本发明的数据预处理;
39.图3为本发明的遗传算法数据集构成流程图;
40.图4为本发明的进化聚类方法流程图;
41.图5为本发明的人口适应度计算流程图;
42.图6为本发明的贪心算法流程图;
具体实施方式
43.以下将结合附图所示的各实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
44.如图1所示,一种基于集成剪枝的软件缺陷数据集分类方法,其中包括:录入软件缺陷数据集、数据集分为训练集和测试集、使用knn获得验证集、选择精度排序前50%的基分类器、组成进化聚类算法的数据集、训练进化聚类方法得到全局适应度最大的聚类结果并将所有基分类器进行分组和从每个分组中选择最具有代表性的基分类器。
45.本发明的方法主要包括以下几个部分:
46.1.软件缺陷数据集预处理
47.对于录入的软件缺陷数据集,首先使用one-hot方法把数据集中字符类别转换为数字类别。转换完成后,把软件缺陷数据集切分为训练集和测试集。对于训练集,使用bootstrap取样方法,得到多个不同子训练集。对于测试集,把测试集作为knn算法的训练集,用于获得测试集在训练集上的邻居实例,并将所有的邻居实例组合成为验证集。过程如图2所示,具体步骤如下:
48.第一步:在解析完成软件缺陷数据集后,处理数据集中存在的缺失值,并将字符类别转换为数字类别;
49.第二步:采用可放回的取样方法,为每个基分类器生成训练集;
50.第三步:对于验证集的组成,使用knn算法。将测试集作为knn算法的训练集,训练好的knn算法用于预测训练集,得到测试集实例在训练集上的邻居,并将所有的邻居合并为验证集;
51.2.进化聚类方法的数据集构成
52.对于训练好基分类器,得到每个基分类器在验证集上的精度,选择部分精度最大的基分类器。对于选择好的基分类器,获得每个基分类器在验证集上的置信度,并将其组成数据集。其过程如图3所示,具体步骤如下:
53.第一步:计算每个基分类器在验证集上的精度,按照精度降序排序,选择前50%的基分类器加入集合q中;
54.第二步:获得集合q中所有基分类器在验证集上的置信度,此时每个基分类器的置信度构成为一个二维数组,将其转化为一个一维数组。
55.第三步:在把所有基分类器转化为一维数组后,将其拼接为一个二维数组,该二维数组即为进化聚类算法的数据集;
56.3.进化聚类获得全局最优聚类结果
57.使用进化聚类方法,通过种群初始化,人口评估,父母选择,对每个个体进行交叉,变异,最后按照设定的迭代次数运行,选择适应度最大人口染色体。其过程如图4所示,具体步骤如下:
58.第一步:设定进化聚类算法超参数,如人口数,迭代次数,变异率等;
59.第二步:种群初始化,使用k-means算法加随机函数,得到多个不同的人口染色体,并保证人口之间的多样性;
60.第三步:人口适应度评估,采用多个监督分类器共同计算适应度。将原始进化聚类方法数据集和人口的染色体拼接在一起,形成一个分类数据集。对于该数据集,选择其中的50%作为训练集,50%作为测试集。训练完成多个监督分类器,计算每个监督分类器在测试集上的f1分数,把所有监督分类器的f1分数相加求均值,该均值即为人口的适应度分数,其方法如图5所示;
61.第四步:计算所有人口的适应度分数,使用竞标赛算子选择父母一代,并在父母一代的人口上使用交叉,变异操作,生成新的一代人口;
62.第五步:按照设定次数,迭代淘汰,选择人口,最后得到一个全局适应度分数最大的人口,该人口染色体即为最后的聚类结果;
63.4.基分类器选择
64.在得到聚类结果后,将所有的基分类器进行分组,从每个分组中选择基分类器,使
用穷举的方法,花费时间过多,这里选择使用贪心方法从每一个分组中选择基分类器。其过程如图6所示,具体步骤如下:
65.第一步:根据得到的最优聚类结果,获得每一个簇,根据每个簇中的下标,把对应的基分类器进行分组;
66.第二步:从第一个簇中选择精度最大的基分类器加入集合e中;
67.第三步:从剩下每个分组中选择和e中所有基分类器集成精度最大的基分类器加入集合e中;
68.第四步:将满足数量要求的集合e中的基分类器,使用大多数投票的结合方法预测软件缺陷实例;
69.本发明能够减少集成学习在软件缺陷数据集上的运行时间和内存的需要,并能够在剪枝的情况下和原来集成方法性能相近甚至可以有所提高。
70.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
71.尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

技术特征:
1.一种基于集成剪枝的软件缺陷数据集分类方法,其特征在于:包括以下步骤:(1)加载软件缺陷数据集信息;(2)使用bootstrap方法得到不同的训练集,将所有的数据集用于训练不同的基分类器;(3)对于验证集的生成,使用knn算法获得在训练集上与测试集相似的数据集作为验证集,并得到每个分类器的性能;(4)进化聚类算法的数据集构成,使用每个基分类器对验证集的置信度构成数据集;(5)使用进化聚类方法得到全局最优的聚类结果,将所有的基分类器进行分组;(6)根据精度最大原则,从每个分组中选择基分类器,减少集成学习在软件缺陷数据集上的运行时间和内存的需要,提高对未知软件缺陷数据的适应能力。2.根据权利要求1所述的一种基于集成剪枝的软件缺陷数据集分类方法,其特征在于,所述步骤(1)加载输入的软件缺陷数据集,首先判断该数据集是否是分类问题数据集,然后对该数据集的实例信息,特征数信息,和类别信息进行统计,最后根据one-hot编码对字符类型的类别转换为数字类型。3.根据权利要求1所述的一种基于集成剪枝的软件缺陷数据集分类方法,其特征在于,所述步骤(2)根据基分类器数量,使用bootstrap取样获得不同子训练集用于训练不同的基分类器,并保证基分类器之间的多样性。4.根据权利要求1所述的一种基于集成剪枝的软件缺陷数据集分类方法,其特征在于,所述步骤(3)验证集的生成和获得基分类器性能的步骤如下:步骤3.1:设置knn算法的超参数,用以得到合适数量的验证集实例;步骤3.2:使用测试集作为knn算法的训练集,并将训练好的knn算法用于测试原始训练集,得到训练集中存在重复实例,去除重复,该数据集即为基分类器的验证集;步骤3.3:得到所有的基分类器的验证集后,每个基分类器用于预测验证集,计算其精度,并将精度降序排序,选择前50%的基分类器用于分组。5.根据权利要求1所述的一种基于集成剪枝的软件缺陷数据集分类方法,其特征在于,所述步骤(4)进化聚类数据集构成步骤如下:步骤4.1:获得所有基分类器在验证集上的置信度分数,在验证集上,假设有n个样本,且标签个数为m,对于一个基学习器w在验证集上的分数结构有n个样本,且标签个数为m,对于一个基学习器w在验证集上的分数结构其中表示基学习器w为第i个样本属于第j个标签的概率;此时每个分数构成为一个二维数组,然后通过转换,变成一个大小相同的一维数组;步骤4.2:转化为一维数据后,将所有的基分类器的置信度拼接为一个二维数组,此时的二维数据即为进化聚类算法的数据集。6.根据权利要求1所述的一种基于集成剪枝的软件缺陷数据集分类方法,其特征在于,所述步骤(5)使用进化聚类方法得到全局最优聚类结果步骤如下:步骤5.1:设定进化聚类算法超参数,如人口数为200,迭代次数为200,变异概率为0.5%;步骤5.2:种群的初始化,使用k-means方法对聚类数据集进行训练和预测,k-means得到的聚类结果作为一个个体的染色体;然后在此基础上,使用随机函数,随机选择位置,随机改变其簇类结果;此时得到的种群中,个体染色体存在较大差别,保证了初始种群的多样
性;步骤5.3:对于种群个体适应度计算,这里采用监督分类器计算每个个体的适应度,选择一定数量的训练集来训练每个监督分类器,计算每个监督分类器在测试集上的f1分数,并求平均值,该平均值就会作为该个体的适应度;步骤5.4:计算完成初始种群个体的适应度后,使用竞标赛算子选择父母一代;步骤5.5:在使用单点交叉算子用于父母个体,生成的新个体具有父母的特征,同时在更好适应度的条件下,有可能产生更优秀的后代;步骤5.6:完成单点交叉后,使用交换变异算子,提高进化聚类算法的搜索能力和效果;步骤5.7:完成三个操作算子后,按照设定的迭代次数淘汰选择个体,并从中选择适应度最大的个体;步骤5.8:得到全局适应度最大的个体,按照这个聚类结果,将所用参与进化聚类算法数据集组成的基分类器进行分组。7.根据权利要求1所述的一种基于集成剪枝的软件缺陷数据集分类方法,其特征在于,所述步骤(6)根据精度最大原则从每个组中选择基分类器步骤如下:步骤6.1:首先从第一个组中选择在验证集上精度最大基分类器,加入集成剪枝模型;步骤6.2:对于第二组的基分类器选择使用顺序正向选择方法,把第二组的每个基分类器和集成剪枝模型中的基分类器进行融合,选择集成精度最大基分类器,对所有的分组进行同样的操作;步骤6.3:如果遍历完所有分组后,集成剪枝模型中的基分类器数量仍不满足集成剪枝数量,重新从第一组开始遍历,直到满足剪枝数量要求。

技术总结
本发明公开了一种基于集成剪枝的软件缺陷数据集分类方法,该框架包括:加入需要分类的软件缺陷数据集,然后根据bootstrap取样方法,取样多次,对多个基学习器进行训练,再使用KNN算法在验证集上找到测试集的邻居重新构成验证集。把得到的基学习器用于预测验证集,获得每一个基学习器的精度,排序,选择前50%的基学习器。最后使用遗传算法得到一个全局最好的个体,在每一个簇中筛选基学习器。本发明基于遗传算法原理的剪枝框架,从而可以减少集成学习在软件缺陷数据集上的时间,内存成本。在集成学习和剪枝算法有着良好的应用的前景。集成学习和剪枝算法有着良好的应用的前景。集成学习和剪枝算法有着良好的应用的前景。


技术研发人员:徐超
受保护的技术使用者:江苏大学
技术研发日:2023.05.23
技术公布日:2023/8/13
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐