一般而言,类不平衡问题将会提高预测准确的难度。然而,在软件缺陷预测中,一直都面临着缺陷模块远少于无缺陷模块的情况。虽然近年来的许多方法,诸如SMOTE、ADASYN,都能通过创造新的少数类实例样本来平衡类的分布,但是,这些方法生成的新实例大多是之前少数类实例的复制,或者是临近关系。这就导致了少数类样本的单一性。
在《MAHAKIL: Diversity Based Oversampling Approach to Alleviate the Class Imbalance Issue in Software Defect Prediction》一文中提出的MAHAKIL重采样方法很好的解决了新样本多样性的问题,而且能有效地提升模型的预测能力。
一般的重采样之后,数据分布会如下图中的(b),新样本分布在少数类附近;经过MAHAKIL 重采样后,数据分布如下图中的(c),新样本在少数类边界内均匀分布。
主要流程
在MAHAKIL 中,主要通过模拟遗传学中的繁殖过程,来产生新的样本。简要过程可分为三个阶段:
phase 1: 将少数类样本从需要处理的数据集中分离出来,记为 bin b i n ,对于 bin b i n 中每一个少数类样本,计算其马氏距离(Mahalanobis distance)。
d2=(x−μ)TS−1(x−μ) d 2 = ( x − μ ) T S − 1 ( x − μ )
其中 S=1N∑Ni=1(xi−X¯)T