1.一种结合神经网络的双集成软件缺陷预测方法,其特征在于,包括如下步骤:步骤1,将数据集按照9:1的比例划分训练集和测试集,使用贪心前向选择方法,对训练集进行特征选择,以得到最佳特征子集;
步骤2,使用交叉验证的方法以及得到的特征子集对数据集进行训练,分别建立七个不同的集成基分类器;
步骤3,使用stacking集成方法,将七个不同分类模型的输出当作训练集送入到神经网络模型中训练,建立双集成缺陷预测模型;
步骤4,使用最终得到的模型对测试集中的数据进行缺陷预测;根据所得到的预测结果,与现有的集成缺陷预测模型进行比较,验证提出的方法的有效性;
所述步骤1中获取最佳特征子集的具体实现包括如下步骤:
步骤1.1,使用贪心前向选择方法,AUC分数为标准,首先获得最高分类性能的特征并将其添加到保留的特征子集中,同时将AUC分数以及对应的特征子集保存在scores和features_select_list中;
步骤1.2,遍历数据集余下的特征,依次与保留的特征子集中的特征进行组合,找出获得最高分类性能的特征组合,如步骤1.1进行添加及保存;
步骤1.3,重复1.2步骤,并设置阈值k,当特征子集的数量达到k时停止遍历,缩短特征选择时间;
步骤1.4,从特征子集列表features_select_list中选择具有最大AUC分数对应的特征子集为该数据集的最佳特征子集;
所述步骤2的具体实现包括如下步骤:
步骤2.1,使用10倍交叉验证的方法训练数据集,即将训练集分为10份,依次选择1份作为验证集,其余9份作为训练集,便可根据该方法产生的10种不同数据集分别建立10个子分类器;
步骤2.2,根据步骤2.1得到的10个子分类器,每个子分类器输出的是预测软件组件属于缺陷类的概率,由各个子分类器在验证集上的结果,计算并保存各个子分类器的权重;
步骤2.3,根据获得的10个子分类器以及权重,基分类器取各个子分类器的加权平均结果,建立集成随机森林分类器;
步骤2.4,重复以上步骤,依次获得七个不同的集成基分类器,分别是支持向量机分类器、多项贝叶斯分类器、贝叶斯分类器、随机森林分类器、梯度增加分类器、随机梯度下降分类器、逻辑回归分类器;
所述步骤3的具体实现包括如下步骤:
步骤3.1,获取训练集中N条数据在七个基分类器中的预测结果,即N*7维的数据;
步骤3.2,构建神经网络模型,使用4层全连接层,输入层主要是将分类器输出的结果进行合并送入到网络中;前3层的激活函数使用ReLU函数,最后一层的激活函数使用sigmod函数,各隐藏层使用dropout策略,避免模型训练出现过拟合;
步骤3.3,使用stacking集成方法,将步骤3.1获得的数据输入到神经网络的模型中进行训练,获得最终的双集成缺陷预测模型。