Page 289 - 《软件学报》2021年第10期
P. 289

周杰英  等:融合随机森林和梯度提升树的入侵检测研究                                                      3261


                 6    实验结果分析

                    实验硬件配置为 Intel 四核处理器,主频 2.5GB,8GB 内存,64 位 Windows 10 操作系统.实验在 Anaconda 平
                 台上使用 Python 语言,通过调用 Scikit-learn  [22] 工具包实现.将 RF-GBDT 框架模型与以下 4 种算法进行了对比:
                 Adaboost、随机森林算法、K 最近邻(K-nearest neighbor,简称 K-NN)算法、逻辑回归(logistic regression,简称 LR)
                 算法.
                 6.1   数据预处理

                    在预处理阶段,对数据集进行去除冗余操作,然后对类别特征进行独热编码.为了缩小特征值之间的大小差
                 异,避免较大数量级数据对较小数量级数据造成干扰,保证结果的有效性,对数值型特征进行归一化处理,将所
                 有特征值映射到[0,1]之间.归一化的计算如公式(17)所示:
                                                          X   X
                                                     X      min                                    (17)
                                                         X max    X min
                 其中,X 为某一列特征的值,X max 为特征 X 的最大值,X min 为特征 X 的最小值.最后,将经过独热编码后的类别特征
                 与归一化后的数值特征拼接起来.
                 6.2   特征选择
                    使用 GBDT-RFE 算法进行特征选择,一共有 41 个特征,因此一共运行了 41 轮训练,得到 41 组特征子集.每
                 一轮训练都记录一下训练损失,损失函数采用对数损失(log loss)函数,计算如公式(18)所示:
                                                       1
                                                           N 
                                                            1
                                             L  (, )       K   1 y  log p                       (18)
                                                YP
                                              log      N   i  0  k   0  , ik  , i k
                 其中,
                       N 表示样本的数量,K 表示类别的数量;
                       y i,k 表示第 i 个样本属于 k 类别;
                       p i,k 表示第 i 个样本属于 k 类别的概率;
                       Y 表示经过独热编码的矩阵,大小为 NK,即:如果第 i 个样本属于 k 类别,则 y i,k =1;如果第 i 个样本不属
                        于 k 类别,则 y i,k =0;
                       P 表示概率矩阵,大小为 NK.
                    使用 GBDT-RFE 算法进行特征选择,训练损失的变化情况如图 4 所示.当特征数量大于 12 个特征时,训练
                 损失变化不大,图中的虚线表示最小训练损失所对应的特征子集数量为 20 个.本实验选取 20 个特征作为最优
                 特征进行特征转换,按特征重要性排序的特征子集是:“dbytes”“dmeansz”“synack”“dintpkt”“ct_state_ttl”
                 “sload”“ct_srv_src”“service”“dur”“smeansz”“dloss”“dttl”“sttl”“sbytes”“dload”“ct_dst_sport_ltm”“res_
                 bdy_len”“ct_srv_dst”“ct_dst_src_ltm”和“tcprtt”.

                                                    0.8
                                                    0.7
                                                 损失值   0.6
                                                    0.5
                                                    0.4
                                                    0.3
                                                      0    10      20    30    40
                                                        选择的特征数量
                                                  Fig.4  Training loss change
                                                   图 4   训练损失变化图
                 6.3   特征转换

                    使用随机森林算法进行特征转换.随着树的个数的增加,转换之后的数据也随之变多,GBDT 模型的测试集
   284   285   286   287   288   289   290   291   292   293   294