system: [SYSTEM]

user: 4. 基于WIG-GA特征选择方法 N-gram模型提取的字节特征较多维度较大 [ 8 ] ，大量的高维度特征会造成分类器的分类性能降低、分类精度下降等很多问题，因此对提取的字节特征进行降维，选出能够代表分类空间的最优特征子集是非常必要的。目前常用的特征选择方法有信息增益(IG)、特征权(TS)、文档频率(DF)等，这些方法虽然能通过对特征属性的删减达到降维的目的，但是可能会使特征空间丢失掉原来特征集所包含的全部信息。最优特征子集的选择问题实质上是一个特征组合的寻优问题，遗传算法(GA)，也被称为进化算法，是一种受进化论启发，通过模拟自然进化过程搜索最优解的算法。遗传算法在组合优化问题中得到了很好的应用，也引起了很多学者的关注，文献 [ 9 ] 针对遗传算法在组合优化问题中提出了几种不同的适应度函数的构造方法。本文提出一种基于引入频率权重因子的信息增益和遗传算法相结合的特征选择方法(introduced frequency weight factor information gain with genetic algorithm， WIG-GA)，将遗传算法作为搜索策略，结合引入频率权重因子的信息增益算法作为评价函数，经过选择、交叉、变异操作，实现特征维度缩减，选取出最有效的特征子集，供分类器学习与预测。 基于WIG-GA算法的特征选择算法流程如下图1所示： 4.1. 引入频率权重因子的信息增益算法(WIG) 信息增益(information gain， IG)是特征选择中的一个评价标准，表示在一定条件下信息不确定性减少的程度，也就是说如果一个特征能够为分类带来信息越多，那么这个特征的信息增益值就越大。其定义如下： I G ( M ， Y ) = H ( M ) − H ( M | Y ) (1) 其中M为训练样本数据集，Y为某一分类特征， H ( M ) 为训练样本数据集的信息熵， H ( M | Y ) 为在特征Y给定的条件下M样本数据集的条件熵， I G ( M ， Y ) 为训练样本数据集M的信息熵与在特征Y条件下的训练样本数 据集M的条件熵的差值。 图1. 特征选择流程 在恶意代码检测中，设训练样本数据集的个数为M，样本包含c个类别，每一类所包含的样本个数分别为( x 1 ， x 2 ， x 3 ， ⋯ ， x c )，即 ∑ i = 1 c x i = M ，则该样本数据集 的信息熵为： H ( M ) = − ∑ i = 1 c x i M log 2 x i M (2) 设在训练样本数据集中，特征Y的值可以取n个，分别为( b 1 ， b 2 ， b 3 ， ⋯ ， b n )，则特征Y把样本数据集分( y 1 ， y 2 ， y 3 ， ⋯ ， y n )个子集，即 ∑ j = 1 n y j = M ，则训练样本数据集M在特征Y下的条件熵为： H ( M | Y ) = − ∑ j = 1 n y j M ∑ i = 1 c y i j y j log 2 y i j y j (3) 将样本数据集M的信息熵(2)和样本数据集M在特征Y下的条件熵(3)带入(1)式得： I G ( M ， Y ) = − ∑ i = 1 c x i M log 2 x i M + ∑ j = 1 n y j M ∑ i = 1 c y i j y j log 2 y i j y j (4) 根据上述公式计算，如果该特征的信息增益值越大，则该特征对区别样本数据集的能力越强。但是信息增益的计算是基于训练数据集的样本数量，也就是仅仅考虑了特征属性在样本数据集出现与否，而没有考虑该特征在样本数据集出现的次数。比如说特征属性 Y 1 和特征属性 Y 2 都在 X c 类中出现而且在样本训练集其他类别中很少出现或者没有出现，在这种情况下，如果包含特征属性 Y 1 和特征属性 Y 2 的样本训练集个数一样或者差不多，那么根据公式(4)计算出来的特征属性 Y 1 和特征属性 Y 2 的信息增益值是一样的或者近似。但是在实际数据中，不同类别的恶意代码和正常代码中字节特征出现的次数差别是非常大的，因此本文把特征属性在类别出现的次数引入到信息增益的计算中。 设在训练样本中，有特征属性集( Y 1 ， Y 2 ， Y 3 ， ⋯ ， Y n )，在 类中任一样本 T k ( 1 ≤ k ≤ m ) ，其中m为类 X c 中样本的总个数，特征属性 Y i 出现的次数为 f i k ( Y i ) ，则特征属性 Y i 在类别 X c 中出现的次数标准化后的权重用 λ c i 表示如下： λ c i = ∑ k = 1 m f i k ( Y i ) − min 1 ≤ t ≤ n ( f i k ( Y t ) ) max 1 ≤ t ≤ n ( f i k ( Y t ) ) − min 1 ≤ t ≤ n ( f i k ( Y t ) ) (5) 然后针对不同的训练数据集中恶意代码类别和正常代码中样本个数的差异，本文才用归一量化的方法来消除这种差异带来的影响。 λ = λ c i / ∑ i = 1 n   λ c i 2 (6) 然后在(4)式的基础上引入(6)式，得到改进的信息增益算法如下所示： I G ( M ， Y ) = − ∑ i = 1 c x i M log 2 x i M + λ ( ∑ j = 1 n y j M ∑ i = 1 c y i j y j log 2 y i j y j ) (7) 4.2. 基于WIG-GA算法的特征选择方案 遗传算法借鉴生物界的自然选择和进化论思想，通过遗传操作实现个体之间的信息交换，是一种被广泛应用于处理复杂以及非线性问题的自适应搜索算法。最优特征子集的选择实际上是组合优化问题，遗传算法在组合优化问题中得到广泛应用。本文提出的WIG-GA特征选择算法，以遗传算法作为特征组合的搜索策略，引入频率权重因子的信息增益作为特征子集的评估函数。 4.2.1. 个体编码与初始种群的产生 在遗传算法的使用中，不能对解空间的实际参数进行直接操作，因此需要对解空间的所有可行解进行编码。在本文中特征只存在选中与不选中两种情况，所以本文选择二进制编码的形式对特征属性集进行编码。 设特征集 F = ( f 1 ， f 2 ， f 3 ， ⋯ ， f n ) ，总长度为n，经过编码后的二进制基因位序列 S = ( s 1 ， s 2 ， s 3 ， ⋯ ， s n ) ， s i 的取值为{0，1}，如果特征被选中则 s i 的取值为1，如果没有被选中则 s i 的取值为0，每一个特征子集都是种群的一个个体。例如有4个特征( v 1 ， v 2 ， v 3 ， v 4 )， S = ( 0 ， 1 ， 1 ， 0 ) ，则被选中的特征为( v 2 ， v 3 )。初始种群通过随机的方式产生。 4.2.2. 适应度评估函数设计 遗传算法仅通过适应度函数对种群中的个体进行评估，依据评价函数的值来确定哪个个体可以被遗传到下一代，哪个个体会在遗传的过程中被淘汰。本文用引入频率因子的信息增益算法作为个体特征子集的评价标准，通过后续的选择、交叉、变异等遗传操作以及种群的不断迭代，当达到最大的迭代次数或者连续3代个体平均适应度不再发生变化的时候，选取最后一代中适应度最好的个体，解码后即为选择出的最优特征子集。 设种群中个体S，结合公式(7)引入频率权重因子的IG算法，则个体S的改进平均信息增益值为： I G avg = ∑ i = 1 n   c o d e ( s i ) ∗ I G ( s i ) ∑ i = 1 n   c o d e ( s i ) (8) 其中n为子集所包含的特征个数， c o d e ( s i ) 表示子集中特征 s i 的二进制编码值， I G ( s i ) 表示子集中特征 s i 的改进信息增益值。 除此之外，特征的选择个数也是一个重要的约束条件，能代表空间解能力的特征子集所包含的个数越少越好，所以本文引入惩罚函数 Φ ( x ) = r ∗ u s i ，其中r为惩罚系数， u s i 为子集中的特征个数。结合(8)式作为最终的评价函数： E ( x ) = I G avg − Φ ( x ) (9) 4.2.3. 遗传操作 遗传算法根据每一代种群中个体的评价函数值，对其通过遗传操作逐步寻找最优子集。每一代种群都需要通过选择、交叉、变异之后才能得到下一代。 1) 选择算子的设计 选择算子的目的是为了让评价高的特征子集能够被保存下来，评价低的特征子集不被保存到下一代。本文通过计算每个特征子集的适应度函数值，然后把适应度值进行排序，通过蒙特卡罗(Monte Carlo)选择方法，选出下一代的种群。在这种方法中，每个特征子集选中的概率与其适应度值成正比。设某个特征子集的适应度值为 E ( S i ) ，特征子集的个数为n，则选择概率为： P = E ( S i ) ∑ i = 1 n   E ( S i ) (10) 2) 交叉算子和变异算子的设计 交叉算子通过替换重组两个父代的基因，生成结构更复杂的子代基因。不仅可以提高全局搜索能力，还可以保持个体的多样性。变异算子通过改变某些基因座上的值，当遗传算法到达最优子集的临近域的时候，可以通过变异算子提高布局搜索能力。本文采用单点交叉与单点变异的方法进行选择后的遗传操作。交叉概率 P c 和变异概率 P m 对算法的搜索性能有很大的影响。概率越大新的特征子集产生越快，但是如果概率过于大，适应度强的特征子集又容易被破坏掉。本文采用自适应的交叉概率和变异概率， P c 和 P m 为： P c = { P c 1 − ( P c 1 − P c 2 ) ( E ′ − E avg ) E max − E avg ，         E ≥ E avg P c 1 ，                                                                             E ′ < E avg (11) P m = { P m 1 − ( P m 1 − P m 2 ) ( E max − E ) E max − E avg ，       E ≥ E a v g P m 1 ，                                                                             E < E a v g (12) 其中 E ′ 是要交叉的父代特征子集中比较大的评价函数值，E是要发生变异的特征子集的评价函数值， E max 和 E avg 是当代全体中评价函数的最大值和平均值。 4.2.4. 算法描述 本文特征选择算法如下所示，其中输入特征集F，初始特征集的大小M，评价函数E，适应度变化阈值d，惩罚系数r，交叉参数 P c 1 ， P c 2 ，变异参数 P m 1 ， P m 2 ，T为最大的迭代次数。输出能够代表特征空间的最优特征子集。