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 表示经过独热编码的矩阵,大小为 NK,即:如果第 i 个样本属于 k 类别,则 y i,k =1;如果第 i 个样本不属
于 k 类别,则 y i,k =0;
P 表示概率矩阵,大小为 NK.
使用 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 模型的测试集