论文部分内容阅读
随着科技的发展软件应用越来越广泛,人们对软件的依赖程度也越来越来大,同时伴随而来的软件安全问题也越来越受到大家的重视。其中软件漏洞是软件的首要安全隐患也是影响软件稳定性和有效性的主要因素。预测软件漏洞与缺陷成为了解决安全和稳定性问题的当务之急,因此受到了广泛的关注,吸引了一大批的研究者。同时机器学习的发展为软件漏洞与缺陷预测提供了新的方法,基于机器学习的代码漏洞预测成为了研究的热点。本文主要研究了代码度量方法与特征选择方法,以及类别不平衡问题在代码漏洞预测中的影响和软件漏洞预测中迁移学习问题,主要研究内容及成果分为以下三部分:(1)类别不平衡问题对软件漏洞预测模型的性能影响分析。提出一种类别不平衡对代码漏洞预测模型的影响分析方法,通过smote方法与随机欠采样的方法构建了不同不平衡数据集,对比不同算法在此数据集族的预测性能。最后得出随机森林与k近邻算法在不平衡数据集的预测性能较为稳定,能够容忍一定的不平衡率,其中随机森林稳定性最好。同时,通过实验验证了smote方法与随机欠采样的方法处理不平衡数据提升模型性能的有效性。(2)代码漏洞与缺陷的特征选择与度量方法分析。提出了一种特征选择和评价两种不同度量特征的方法,基于核主成分分析的特征选择过程。根据不同核函数来选择不同维度的特征,然后通过模型训练验证和评价代码它们的分类性能。对比两种度量方式及不同核函数在其上的作用效果,最终表明,基于面向对象的度量方法Chidamber&Kemerer比面向过程的度量方法McCabe&Halsted效果更好,他们在主成分分中用线性核函数来进行特征变换能达到最好的效果。(3)基于特征的迁移学习预测模型研究。提出了一种基于特征的迁移学习方法。通过主成分分析方法将不同数据集的特征之间建立对应关系,分别取不同维度的特征数。对比模型在不同维度的特征的性能效果。经过实验验证,这种基于主成分分析的特征迁移学习方法具有一定的可行性,可以达到较好的效果。