基于改进SMOTE的半监督极限学习机缺陷预测

2022-01-09 06:25陆子豪荆晓远
计算机技术与发展 2021年12期
关键词:学习机样本预测

陆子豪,荆晓远

(1.南京邮电大学 计算机学院,江苏 南京 210003;2.南京邮电大学 自动化学院,江苏 南京 210003)

0 引 言

软件缺陷预测是当下软件工程领域最热门的研究主题之一。它吸引了众多专家学者的目光。静态软件缺陷预测主要是通过机器学习的方法对已提取的软件特征进行学习从而训练出一个可靠的分类模型就软件项目是否有缺陷进行分类[1-5]。近几年很多知名的分类方法被提出来,包括决策树、朴素贝叶斯(NB)[6]、支持向量机(SVM)[7]、神经网络[8]、集成学习等[9]。这些方法均已被应用在软件缺陷预测领域。研究人员对项目样本进行标记通常需要耗费大量的时间和精力,所以在实际应用中难获得充足的有标记样本来训练可靠的预测模型。为解决这一问题,半监督学习[10]被引入到软件缺陷预测中,并被大量学者研究。此外项目数据的类不平衡问题[11]也一直困扰着研究者,使用类不平衡的数据训练得到的预测模型不能很好地对少数类样本进行分类,严重影响预测性能。

另一方面现有的缺陷预测方法大多需要通过多次迭代调整神经网络参数来构筑最终的预测模型,此类方法时间开销比较大。2006年Huang等人[12]提出了一种基于单层前馈神经网络的机器学习方法,该方法具有训练速度快、泛化能力强的优点。该方法近几年也被应用到了软件缺陷预测领域。后续Huang等人[13]又提出了半监督极限学习机并取得了不错的效果。虽然半监督极限学习机具有泛化性强、鲁棒性高、训练速度快等优点,但是由于其网络结构限制,不能获得很好的特征表示。因此文中引入栈式去噪自编码器[14]改进特征学习效果。文中提出了一种基于改进SMOTE[15]的半监督极限学习机的方法用于软件缺陷预测。该方法使用K-means和SMOTE综合过采样有效缓解了训练样本类不平衡对分类效果的影响。使用半监督极限学习机充分利用少量有标记样本和大量无标记样本来解决有标记样本不充足的问题,并且一定程度上弥补了极限学习机特征学习上的不足。

1 相关工作

软件缺陷预测可以无需人为干预地对那些有缺陷可能性的软件模块进行判定。在有标记样本不充足的背景下,为了充分利用少量的有标记样本和大量的无标记样本,研究人员提出了一些半监督学习方法。例如:Lu等人提出了基于适应性过拟合(FTF)[16]的半监督算法。Catal等人分析了四种半监督分类算法,他们指出当有缺陷的样本有限时推荐使用LDS[10]来进行缺陷预测。Ma等人针对缺陷预测中存在的类不平衡问题提出了一种RusTri[17]方法,对原始训练样本进行下采样处理并在三重训练算法的每一轮训练中更新训练集。Thung等人提出了一种主动半监督缺陷预测方法ASDP[18],ASDP会主动选择一小部分多样且有用的缺陷样本进行标记,并在预测模型学习中充分利用标记和未标记的样本。在软件缺陷预测的实际应用中,经常遇到数据分布不均衡的问题。专家学者为了从数据层面解决这个问题,提出了SMOT算法。该算法的核心思想是复制若干少数类样本以让少数类样本的数量和多数类样本数量相当,从而缓解不平衡问题。文中使用了基于SMOTE的改进方法。

2 基于K-means和SMOTE的半监督栈式去噪自编码器极限学习机(KSDASSELM)

文中提出的方法主要分为两大步骤:首先使用基于K-means和SMOTE的综合过采样方法对原始数据集进行处理以缓解数据集原有的类不平衡问题,然后使用半监督栈式去噪自编码器极限学习机为数据集构建模型并对测试集分类。

2.1 基于K-means和SMOTE的不平衡学习

此阶段主要分为三步。

第一步:先对训练集数据进行K-means(K均值)聚类。这是一种主流的迭代方法,可用来查找欧几里得空间中出现的数据中的自然存在的簇。它主要通过不断重复两条指令来运行:首先将样本分配给k个质心中距该样本最近的那个质心(初始化时会随机指定k个质心)。其次重新计算质心位置。如果新的质心和上一轮产生质心间距离变化小于某阈值则表示算法收敛。该算法可以保证在有限次迭代运算后收敛得到局部最优解。

第三步:过采样,在过滤后的簇中使用SMOTE过采样。每个簇需要生成的样本个数为[sampling weight(f)×n],其中n为达到完全平衡时生成的少数类样本个数。接着,SMOTE在簇中随机选择一个少数类样本a并寻找距离a最近的另一个少数类样本b。然后在a到b的路径上随机安插生成的新样本。不断重复一至三步直至生成完n个样本。

2.2 半监督栈式去噪自编码器极限学习机

文中的半监督极限学习机利用了流行正则化,在缺少有标记样本时利用无标记样本来提高分类的准确性。给出的目标函数见公式(1):

(1)

其中,β是输出权重,Ci是惩罚因子,用来调整模型的预测性能和泛化能力,ei是第i个样本的输出结果与预期结果之差;L∈R(l+u)×(l+u)是利用有标记样本和无标记样本构建的拉普拉斯算子,另外F∈R(l+u)×n0是网络的输出矩阵且它的第i行等于f(xi),λ是一个权衡参数,h(xi)是隐藏层的输出向量。

(2)

然后,公式(3)计算目标函数关于β的梯度。

(3)

最后令梯度为0,使用公式(4)求得β的解。

(4)

如果有标记样本的数量少于隐藏层神经元的个数,则使用公式(5)计算求解β。

(5)

其中,Il+u是维度为l+u的单位矩阵。

算法流程如图1所示。

图1 算法流程

3 实验与结果分析

本节将提出的方法与LDS、RusTri和ASDP这三个基线方法进行对比。

3.1 数据集

使用了AEEEM和NASA两个数据集。数据集的详细信息如表1所示。

表1 数据集

使用F-measure和AUC两个综合评价指标(表2定义了混淆矩阵)。

表2 混淆矩阵

准确率代表的是所有被判定为无缺陷的模块中实际上无缺陷的模块所占的比例。

召回率代表的是被正确判定为无缺陷的样本在所有实际无缺陷样本中占的比例。

准确率和召回率不能单独地充分反映模型的性能,因此使用F-measure作为综合评判标准。

依据上述混淆矩阵,预测率(PD)定义为:PD=TP/(TP+FN);误报率(PF)定义为:PF=FP/(FP+TN)。使用PD和PF可绘制ROC曲线。AUC(area under roc curve)是ROC曲线与坐标轴围成的面积。预测模型性能越好,面积越接近1。

3.2 实验结果

在NASA和AEEEM数据集上的实验结果如表3和表4所示。可以观察到,与基线方法相比,文中方法获得了更高的AUC和F-measure。另外文中方法在AUC和F-measure的平均值上也高于基线方法。统一测试分析如表5所示,可以看出文中方法相比基线方法在大多数项目中预测效果提升明显。

表3 AUC结果汇总

表4 F-measure结果汇总

表5 文中方法优于/持平/劣于基准方法的项目个数

4 结束语

提出了一种基于改进SMOTE的不平衡处理方法和搭载栈式去噪自动编码器半监督学习机的软件缺陷预测模型,有效缓解了不平衡问题并且充分利用了无标记数据。通过在AEEEM和NASA两个数据集上的大量实验表明,与基线方法相比,文中方法获得了更好的预测性能。后续将会对半监督极限学习机进行改进,以进一步提升预测精度和模型训练效率。

猜你喜欢
学习机样本预测
选修2—2期中考试预测卷(B卷)
选修2—2期中考试预测卷(A卷)
警惕平板学习机骗局
“机”关
规划·样本
随机微分方程的样本Lyapunov二次型估计
基于支持向量机的测厚仪CS值电压漂移故障判定及处理
《福彩3D中奖公式》:提前一月预测号码的惊人技巧!
“官员写作”的四个样本
从学习机到上网本