发明名称 基于最大互信息和改进Adaboost的软件缺陷数据特征选择方法
摘要 本发明公开了一种基于最大互信息和改进Adaboost的软件缺陷数据特征选择方法,可用于指导面向软件缺陷数据的特征选择,包括以下步骤:A.从软件数据集中获取数据,对数据进行预处理,包括对数据做标签处理和根据已有经验知识将软件特征分成三类;B.迭代训练弱分类器,每次迭代选择出最优弱分类器及选择出候选最优特征,根据互信息理论,计算该候选最优特征与目标特征子集中相同类别的特征间的最大相关性,根据条件判断是否将其加入目标特征子集;利用改进的Adaboost样本更新策略更新样本权重;最终输出目标特征子集及强分类器。本发明克服软件特征间的相关性,去除冗余特征,并解决了分类时软件缺陷数据的不平衡性,对于检测少数类(有缺陷的模块)具有很好的性能。
申请公布号 CN105760303A 申请公布日期 2016.07.13
申请号 CN201610124371.X 申请日期 2016.03.04
申请人 中国石油大学(华东) 发明人 李克文;邹晶杰
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 代理人
主权项 基于最大互信息和改进Adaboost的软件缺陷数据特征选择方法,其特征在于,主要包括以下两个步骤:A.从软件数据集中获取数据,对数据进行预处理(1)数据包括软件特征集、软件模块,将软件模块数据分为训练集和测试集以备训练和测试;本发明采用十次交叉验证,将数据集分成十份,其中九份做训练,一份做准确度测试;并将数据做标签处理;(2)根据已有知识将特征集分类,得到三个特征集,分别是LOC类,McCabe类和Halstead类;B.根据最大互信息理论与改进的Adaboost进行面向软件缺陷数据的特征选择(1)初始化样本权重{D<sub>1</sub>(i)}及目标特征子集S<maths num="0001"><math><![CDATA[<mrow><msub><mi>D</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mi>n</mi></mfrac></mrow>]]></math><img file="FDA0000934893920000011.GIF" wi="211" he="91" /></maths><img file="FDA0000934893920000012.GIF" wi="142" he="53" />其中,n为样本个数;(2)当t=1…to T,执行以下步骤:(a)在基于权重的训练集上,训练弱分类器<img file="FDA0000934893920000013.GIF" wi="208" he="88" />根据分类错误率ε<sub>t</sub>挑选出最优的弱分类器,即选出候选最优特征ε<sub>t</sub>=ΣD<sub>t</sub>(i)I[h<sub>t</sub>(x<sub>i</sub>)≠y<sub>i</sub>](b)判断候选最优特征f属于何种软件特征,L类,M类还是H类;然后根据互信息理论计算候选最优特征f与目标子集S中与f属于相同类别的特征间的最大相关性max‑cor;max‑cor=max(MI(f,f<sub>p</sub>))其中,f<sub>p</sub>∈S,且f<sub>p</sub>和f是同类别软件特征,MI为两个变量间的互信息,如下公式:<maths num="0002"><math><![CDATA[<mrow><mi>M</mi><mi>I</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mi>l</mi><mi>o</mi><mi>g</mi><mfrac><mrow><mi>p</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow><mrow><mi>p</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mi>p</mi><mrow><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mrow></mfrac></mrow>]]></math><img file="FDA0000934893920000021.GIF" wi="546" he="117" /></maths>其中,p(x)和p(y)为x和y的边缘分布概率,p(x,y)是x和y的联合分布概率;(c)根据步骤(b)中得到的最大相关性max‑cor,与设定的阈值β进行比较;当max‑cor小于阈值β时,将候选最优特征f加入目标特征子集S,并从特征集F中删除f,同时根据ε<sub>t</sub>计算弱分类器的加权系数α<sub>t</sub>,将此轮得到的弱分类器h<sub>t</sub>累加至上一轮获得的强分类器H<sub>t‑1</sub>(x),得到H<sub>t</sub>(x),继续执行步骤(d),过程如下:F=F‑{f};S=S+{f};<maths num="0003"><math><![CDATA[<mrow><msub><mi>&alpha;</mi><mi>t</mi></msub><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mi>l</mi><mi>n</mi><mrow><mo>(</mo><mfrac><mrow><mn>1</mn><mo>-</mo><msub><mi>&epsiv;</mi><mi>t</mi></msub></mrow><msub><mi>&epsiv;</mi><mi>t</mi></msub></mfrac><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000934893920000022.GIF" wi="412" he="96" /></maths>H<sub>t</sub>(x)=H<sub>t‑1</sub>(x)+α<sub>t</sub>h<sub>t</sub>;当max‑cor小于阈值β时,只将f从特征集F中删除,过程如下,然后返回至步骤(a);F=F‑{f};(d)按以下策略,更新样本权重{D<sub>t+1</sub>(i)}<img file="FDA0000934893920000031.GIF" wi="1845" he="1568" /><maths num="0004"><math><![CDATA[<mrow><msub><mi>D</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><msub><mi>D</mi><mi>t</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow><msub><mi>Z</mi><mi>t</mi></msub></mfrac><mo>&times;</mo><msup><mi>e</mi><mrow><msqrt><mn>2</mn></msqrt><msub><mi>&alpha;</mi><mi>t</mi></msub></mrow></msup><mo>;</mo></mrow>]]></math><img file="FDA0000934893920000032.GIF" wi="491" he="102" /></maths>(3)输出最终强分类器H(x)及目标特征子集S。
地址 266580 山东省青岛市黄岛区长江西路66号