1.一种基于类不平衡学习算法的软件缺陷预测方法,其特征在于,包含如下步骤:步骤1)划分训练集和测试集;
将软件中的每个模块作为一个样本,将全部样本组合为原始数据集T,其中有缺陷的类别是少数类,表示为T+,无缺陷的类别是多数类,表示为T‑;使用SWIM过采样方法合成少数类样本,得到新的少数类TSWIM+=SWIM(T+),合并新的少数类和原始多数类得到新的数据集TNEW=(TSWIM+∪T‑);使用十折交叉验证法将数据集划分为训练集和测试集;
步骤2)初始化样本权重;
每个样本均有一个初始权重,其中少数类样本的权重要大于多数类样本的权重,从而增加分类器对少数类样本的重视程度;假设训练集中共有n个样本,Wm(i)表示第m次训练时i第i个样本的权重,C表示第i个样本在代价矩阵中的误分类代价,那么样本i的初始权重W1(i)用公式(1)计算得出;
步骤3)计算少数类的误分类代价;
使用代价矩阵分别给予多数类样本和少数类样本不同的误分类代价,使少数类的误分类代价要高于多数类的误分类代价,即更严厉的惩罚把少数类样本误分的弱分类器;在代价矩阵中,样本分类正确时的误分类代价为0,也就是代价矩阵的主对角线上的元素为0,多数类样本的误分类代价设为1,少数类样本的误分类代价大于1;具体数值由类不平衡算法根据当前的数据集计算得出,该算法即为自适应代价矩阵调整策略,具体为:
3‑1.使用十折交叉验证法将步骤1中的训练集划分为训练集和验证集;
3‑2.将少数类样本的误分类代价初始化为1,再使用网格搜索算法逐渐增加少数类样本的误分类代价,最高为10,步长为0.1;
3‑3.使用弱分类器训练3‑1中的训练集,根据3‑2中每一次产生的新的少数类误分类代价调整模型;
3‑4.使用3‑1中的验证集对3‑3中建立的每一个模型进行验证,选择分类准确率最高的模型所对应的少数类误分类代价作为此次自适应代价矩阵调整策略的结果;
步骤4)训练弱分类器Gm;
m
步骤5)计算弱分类器Gm的分类错误率err;
步骤6)计算分类器Gm的权重αm;
步骤7)更新样本权重Wm+1;
每一轮过后,都会根据弱分类器的预测结果来调整样本权重,对于预测错误的样本就增加其权重,使得下一轮预测时分类器更加关注这些预测错误的样本,并且,根据代价矩阵预测错误的少数类样本要比预测错误的多数类样本增加更多的权重;另外,对于预测正确的样本就减小其权重;Zm表示归一化因子,cost(i,j)表示在代价矩阵中将第i类样本预测为第j类样本的代价,actual(i)表示样本xi的真实类别,predicted(i)表示样本xi的预测类别;权重更新用公式(4)计算;
步骤8)重复步骤4)至步骤7),直至训练出K个弱分类器;
步骤9)投票选择最小的总代价所对应的类别,作为对样本x的预测类别。
2.根据权利要求1所述的一种基于类不平衡学习算法的软件缺陷预测方法,其特征在于步骤4)所述的训练弱分类器Gm的具体为:使用步骤1)中的训练集配合本轮的样本权重Wm(i)训练弱分类器Gm。
3.根据权利要求1所述的一种基于类不平衡学习算法的软件缺陷预测方法,其特征在于步骤5)所述的计算弱分类器Gm的分类错误率的具体实施如下:m
设err代表分类器Gm的分类错误率,Gm(xi)代表弱分类器Gm对第i个样本xi的预测类别,yi表示样本xi的真实类别;I(·)是一个指示函数,在·为真时取值为1,为假时取值为0;则弱分类器Gm的分类错误率用公式(2)计算;
4.根据权利要求1所述的一种基于类不平衡学习算法的软件缺陷预测方法,其特征在于步骤6)所述的计算分类器Gm的权重αm的具体为:根据分类器Gm的分类错误率可以计算该分类器的权重αm,分类器权重代表此分类器在最后投票时的话语权;权重αm可由公式(3)计算得出,
5.根据权利要求1所述的一种基于类不平衡学习算法的软件缺陷预测方法,其特征在于步骤9)所述的投票的具体实施如下:综合K个弱分类器的投票结果,得到一个复合分类器H;对测试集样本x预测其所属类j别;H (x)表示将样本预测为第j类时所有弱分类器的总代价,可由公式(5)计算得到;最后会选择最小的总代价所对应的类别,作为对样本x的预测类别;