1.一种面向软件缺陷类分布不平衡的规则学习分类器集成方法,其特征在于,其包括如下步骤:步骤S1:采用主成分分析法从软件模块所包含的原始特征中提取最有效特征,具体包括如下步骤:步骤S101:构建软件缺陷数据集矩阵XN×M,所述矩阵的行数N表示所述软件缺陷数据集中样本的个数,所述矩阵的列数M表示每个所述样本的特征数目;
步骤S102:按列计算所述矩阵XN×M的均值,从而得到均值矩阵 并将所述矩阵XN×M中的每一行元素均减去所述均值矩阵 得到样本HN×M,并对其进行中心化;
步骤S103:计算中心化后的样本HN×M的协方差矩阵HHT,并对所述协方差矩阵HHT进行特征值分解,求得对应的M个特征向量ω,然后将M个特征值λ进行降序排序,排序结果为λ1≥λ2≥...≥λM,最后,设定一个阈值为0.95,通过计算贡献率 确定满足贡献率不小于所述阈值的数值d,取最大的d个特征值所对应的特征向量ω1,ω2,...,ωd,得到投影矩阵W*=(ω1,ω2,...,ωd),所述d为通过主成分分析法进行特征选择后的维度;
步骤S2:执行ADASYN过采样和无放回随机采样相结合的组合采样方法,包括以下具体步骤:步骤S201:从所述软件缺陷数据集中选取的样本中构造一个含有0和1两个类别的训练数据集D,其中包括m个所述样本{xi,yi},i=1,2,...,m,其中xi为n维空间的一个样本,yi∈{0,1}为所述样本xi的标签,yi=0代表为少数类,yi=1为多数类,其中m0和m1分别代表少类和多类样本数量;
步骤S202:计算类不平衡度l=m0/m1,式中l∈(0,1];
步骤S203:计算需要合成的所述少类样本总量G:G=(m1-m0)×β,式中β∈[0,1]为系数;
步骤S204:找出每个所述少类别样本xi的K近邻,并计算:Γi=Δi/K,i=1,2,...,m,其中Δi是xi的K近邻中多类样本的数目,因此,Γi∈(0,1];
步骤S205:根据 正则化Γi,则 为概率分布,并且
步骤S206:计算每个所述少类样本xi需要合成的样本数目: 并从每个所述少类样本xi的K近邻中随机选择一个少类样本xj,合成gi个新的少类样本,所述合成新的少类样本为Sz=xi+(xj-xi)×λ,λ∈[0,1]为随机数;
步骤S207:将所述合成新的少数类样本添加到所述训练数据集D中;
步骤S208:利用无放回随机采样,设定采样率,降低采样容量,提取更小的数据集D1;
步骤S3:对处理后的数据选取基于规则学习的基分类器进行集成,构建软件缺陷预测模型,包括以下具体步骤:步骤S301:采用规则学习的基分类器,包括以下具体步骤:
步骤S3011:根据类的出现频率进行递增排序;
步骤S3012:清空规则集,然后向规则集添加前件,直到规则集可以扩展到覆盖整个数据集为止;
步骤S3013:进行规则剪枝,利用数值C判断是否到达到了最精简的规则,当C不再变大时,停止剪枝;所述数值C为:所述公式中,hk是规则所覆盖的样本个数,hp是没有被覆盖样本个数;
步骤S302:进行集成,包括以下具体步骤:
步骤S3021:设T为需要进行集成的基分类器个数,并将基分类器分为k组,Ii为第i组迭代终止标志变量,在进行集成时,T个基分类器最多迭代T轮,Ii计算公式如下:步骤S3022:将所述训练数据集D1={(x1,y1),(x2,y2),...,(xa,ya)}中的每个样本的权重均设置为1,形成数据集S′,当每个基分类器组迭代终止时,对S′中的数据重新进行服从连续泊松分布的权重设置且进行归一化处理,再进行下一个基分类器组的迭代;在每次基分类器迭代中,每个基分类器的误差为 基分类器对最终组合分类模型的输出权重设为βt(t=1,...,T),根据εt每次取值范围的不同,分为3种情况:若εt>0.5,则直接将所述分类器舍弃,并对所述训练数据集S′进行服从连续泊松分布的权重设置且进行归一化处理,进入下一个基分类器组,直至εt≤0.5;
若εt=0,则βt=10-10,并再对所述训练数据集S′进行服从连续泊松分布的权重设置且进行归一化处理,再进入下一个基分类器组;
若0<εt≤0.5,则设置 对S′中的每个样本,被错误分类的样本的权重除以2εt,被正确分类的样本乘以2(1-εt),但最小权重为10-8,最终的分类函数为:
2.根据权利要求1所述的面向软件缺陷类分布不平衡的规则学习分类器集成方法,其特征在于,所述步骤2中所述的ADASYN过采样和无放回随机采样相结合的组合采样方法的采样率设定为[0.7,1.0],步长为0.1。
3.根据权利要求1所述的面向软件缺陷类分布不平衡的规则学习分类器集成方法,其特征在于,所述步骤S3021中的所述迭代次数T的设定为[10,30],步长为10。