![](https://csdnimg.cn/release/download_crawler_static/86300555/bg5.jpg)
1312
Journal of Software 软件学报 Vol.30, No.5, May 2019
Table 1 Relationship between traditional machine learning methods
and different types of transfer learning methods
表 1 传统机器学习方法和不同类别迁移学习方法的关系
机器学习方法 源领域数据和目标领域数据 源领域任务和目标领域任务
传统机器学习方法 相同 相同
归纳迁移学习 相同/不同但相关 不同但相关
直推式迁移学习 不同但相关 相同
无监督迁移学习 相同/不同但相关 不同但相关
2 基于特征迁移和实例迁移的缺陷预测方法 FeCTrA
本节首先介绍基于特征迁移和实例迁移的跨项目预测方法 FeCTrA 的研究动机,然后对 FeCTrA 方法的整
体框架进行描述,最后对框架内的特征间相关性和特征分布相似性的度量方法进行介绍.
2.1 研究动机
软件缺陷预测基于项目的历史数据构建模型,然后对新的软件模块进行缺陷预测.但在实际软件开发过程
中,新开发的项目可能没有充足的训练数据,或者一些遗留项目因为特殊原因而无法获得足够多的训练数据.因
此,构建一个具有良好性能的缺陷预测模型变得异常困难.于是,迁移学习被引入到软件缺陷预测研究中,借助
源项目中的历史标记数据以解决目标项目训练实例过少的问题.然而,由于源项目和目标项目之间存在较大的
数据分布差异,使得在源项目数据上构建的缺陷预测模型并不能保证在目标项目上取得良好的预测性能.一方
面,从特征角度而言,源项目中并不是所有的特征都与目标项目具有相似的分布,只有分布相似的特征才能辅助
目标项目构建性能良好的缺陷预测模型;另一方面,从实例角度而言,源项目数据和目标项目数据本身源于不同
的项目,因此通常情况下,源项目中的数据与目标项目数据的分布具有差异性.针对该问题,研究人员分别从特
征迁移或者实例迁移的角度展开研究
[6−8,12−14,36,38]
,并取得了一定成果,这充分证明了从特征迁移和实例迁移角
度尝试缩小源项目与目标项目之间数据分布差异性的可行性.然而,目前取得的效果并不令人十分满意.为此,
我们提出了两阶段跨项目缺陷预测方法 FeCTrA,该方法通过同时考虑特征迁移和实例迁移,旨在缩小两个项目
的数据分布差异性.在特征迁移阶段中,通过聚类分析,可以识别并移除无关特征和冗余特征;在实例迁移阶段
中,依据目标项目中仅有的少量标记数据,借助 TrAdaBoost 方法
[47]
,从源项目中选出与目标项目数据分布更相
近的实例,从而解决训练数据不足的问题.
2.2 方法框架
FeCTrA 方法的框架如图 1 所示,该方法包含两个阶段:特征迁移阶段和实例迁移阶段.
• 在特征迁移阶段,为了能够迁移有效的特征信息,FeCTrA方法首先移除源项目数据中的类标信息,然后
将源项目和目标项目数据进行合并;随后,对合并后的数据集基于特征进行聚类分析,从而把高度相关
的特征聚集到同一个簇中;然后计算每一个特征在源项目数据和目标项目数据之间分布的相似性,以
此作为排序依据,并对每一个簇中的特征进行降序排列;最后,从每一个簇中选取排名靠前的特征作为
最终需要迁移的特征.
• 在实例迁移阶段,删除源项目和目标项目中不必要的特征,仅保留特征迁移阶段选出的特征和源项目
的类标特征;然后,利用 TrAdaBoost 方法
[47]
,从源项目中选出与目标项目分布相似的数据来构建训练数
据集,并通过 Boost 方法不断迭代,增强基分类器的分类能力,得到若干基分类器,从而构成一个基于集
成学习方式的跨项目缺陷预测模型.