基于集成学习的入侵检测模型
2024-01-15李铂初阎红灿
李铂初,阎红灿,2
(1. 华北理工大学 理学院,河北 唐山 063210;2. 河北省数据科学与应用重点实验室,河北 唐山 063210)
引言
随着互联网上的信息数据日益增加,病毒、渗透、网络入侵等网络安全问题也愈发频繁。入侵检测作为保证网络安全的重要手段,可以检测出用户的异常行为,拦截恶意用户的攻击或入侵行为并检测网络中的恶意流量,是网络信息安全的重要技术之一。而在目前网络攻击类型日趋多样、攻击方式逐渐多元化的趋势下,使用人工智能技术进行异常行为检测逐渐成为主流。
针对异常行为检测模型许多专家和学者进行了诸多研究,而在算法改进方面,机器学习算法被广泛应用:周杰英等[1]使用梯度提升决策树进行特征选择,使用随机森林模型进行特征变换。文献[2]通过高斯混合模型将数据聚类,为每个簇训练不同的随机森林分类器。文献[3]使用CART(Classification And Regression Trees)决策树进行特征选择,并使用带有网格追踪法确定的超参数CART决策树进行训练。文献[4]使用极限随机树进行递归特征消除,并使用LightGBM(Light Gradient Boosting Machine)模型进行分类训练。
深度学习方法在入侵检测中也被广泛研究文献[5-6]结合卷积神经网络与长短期记忆网络构建入侵检测模型。文献[7]将注意力机制与LSTM网络结合。文献[8]融合卷积神经网络、Bi-GRU和注意力层,并进行数据扩增测试。文献[9-10]将生成对抗网络GAN(Generative Adversarial Network)[11]思想应用于异常行为检测模型,有效提高了检测精度。
除算法外,对于高维度数据的特征选择也是学者的研究方向之一。如文献[12]使用Kmeans聚类算法生成具有典型数据特征的数据集。文献[13]通过ReliefF、XGBoost和Pearson相关系数计算特征权重,以此删除权重较低的特征。文献[14]运用基于特征值分布的评分系统DSM(distribution-based scoring mechanism)进行特征提取。
不平衡数据集的训练问题也有学者进行了探究,Zhang等人[15]使用SMOTE算法(Synthetic Minority Over-sampling TEchnique)对少数类过采样,并使用高斯混合模型聚类对多数类数据进行欠采样得到平衡的数据集。文献[16]将多分类检测问题转化为多个二分类问题,在每个二分类问题中选择RBBoost[17],RUSBoost[18],SMOTEBoost[19]等不同的采样方法。
针对UNSW-NB15数据集的特点,对UNSW-NB15数据集进行去除冗余数据、选择维度、采样等处理,提出了一种联合深度学习与机器学习的算法,首先通过并行卷积神经网络串联LSTM网络训练出一个模型;之后将其结果与特征选择后的特征拼接;对数据进行采样后放入XGBoost模型进行训练;本模型运用了boosting集成学习的思想,充分结合了深度学习与XGBoost算法的优势,在不同规模、类别数量的数据集上都有良好表现。
1 相关工作
1.1 卷积神经网络
卷积神经网络包括卷积层、池化层、全连接层三个主要部分。卷积层通过卷积核实现从输入数据中提取特征,卷积核的参数通过反向传播进行更新,在训练期间卷积核的权值保持不变。池化层用于降低特征图的维度,减少计算量并增强对输入图像变化的鲁棒性,减少过拟合。全连接层在神经网络分类模型中用于将输入向量转化为最终输出完成分类。
1.2 Bi-LSTM
(1)
1.3 XGBoost算法
XGBoost[20]模型是通过Boosting方式构建的一种提升树模型,是由多个弱分类器形成的一个强分类器,其利用上一颗树预测的残差值生成一颗新树以此提升模型的总体性能。XGBoost算法是梯度提升决策树(Gradient Boosting Decison Tree)即GBDT算法的改进算法,与GBDT相比,XGBoost对损失函数进行二阶泰勒展开,并在使用CART作为基分类器时加入正则化项防止过拟合,同时XGBoost算法支持使用多种类型的基分类器。
XGBoost的目标函数如公式(2)所示:
(2)
(3)
1.4 特征工程
在对数据建立模型进行分析前,首先需要对数据进行特征工程使其标准化、易于建模。特征工程包括数据降维、数据采样等方法。数据降维可以去除冗余变量,提高模型训练速度,主要分为特征选择和特征提取两类。特征选择是提取原数据集的子特征,主要方法有递归特征消除、通过树结构选择重要特征等。特征提取则是将原始数据集变换为一个维度更低的新特征子集,主要有PCA(Principal Component Analysis)、LDA(Linear Discriminant Analysis)等方法。采样方法分为过采样、欠采样以及组合采样三大类。过采样是对少数类样本进行重复抽取或生成类似样本,方法有简单随机过采样、Synthetic Minority Oversampling Technique(SMOTE)、Adaptive Synthetic (ADASYN)[21]等等。欠采样是将多数类样本剔除,主要方法分为从多数类方法中选择数据的简单随机欠采样、NearMiss[22]、ClusterCentroids以及清洗数据的TomekLinks、EditedNearestNeighbours等等。组合采样是将SMOTE与清洗数据的方法结合,去除SMOTE算法生成的与多数类样本重叠的数据;例如SMOTEENN与SMOTETomek[23]算法。
2 数据预处理与模型搭建
2.1 数据集介绍
UNSW-NB15数据集[24]是一个入侵检测领域的数据集,该数据集分为训练集与测试集,其中训练集包含175 341条数据,测试集包含82 332条数据。UNSW-NB15数据集中共有45个特征,包含'Generic'、'Exploits'、'Fuzzers'、'DoS'、'Reconnaissance'、'Analysis'、'Backdoor'、'Shellcode'、'Worms'9个攻击类别以及正常样本'Normal'类,可以进行"正常"与"攻击"的二分类任务和十分类任务。
2.2 数据集预处理
原UNSW-NB15训练集与测试集处理流程如图1所示。由于原数据集中存在数据分布不均衡[25]的情况,首先将其训练集与测试集合并,预处理后按照类别数量的比例重新划分,使得训练集与测试集中各类样本比例相同。
图1 数据处理流程
(1)独热编码
在UNSW-NB15数据集中存在proto,service,state3个字符型属性,需要先将其转为数字型数据才能参与计算,因此将这3列转换为One-Hot(独热)编码形式,转变后的数据共有196维(删除id、二分类标签与多分类标签三维)。
(2)数据标准化
由于UNSW-NB15数据集中各个特征的数值方差较大,为避免模型受到不同规模特征的影响、提高模型收敛速度,将所有数据进行标准化使其映射到[0,1]之间。本文选用最大-最小标准化法,计算公式如下:
(4)
其中X是样本的值,Xmax和Xmin是该特征在所有样本上的最大值和最小值,X'则是归一化后样本的值。
(3)去除冗余数据
在UNSW-NB15数据集中存在部分重复数据,且存在特征相同、类别标签不同的数据;为提升模型训练效果、去除共计40 400个特征相同而所属类别不同的噪声数据。表1中展示了去除噪声数据后的数据集。
表1 去除冗余数据后的数据分布
(4) 数据降维
数据集在进行独热编码后维数较高,因此采用数据降维。选择随机森林、递归特征消除等特征选择方法进行数据降维。为保证数据降维不提前学习到测试集数据特征,本文进行数据降维时只使用训练集数据。
(5) 采样方法
在UNSW-NB15数据集中,同时存在超过万条的类别以及不足一千条的类别,本文对上(过)采样[26]、下(欠)采样[27]与混合采样几种方法进行对比。
2.2 行为检测模型架构
本文构建的入侵检测模型分为2个部分,如图2所示,分别是基于深度学习的并行卷积神经网络连接LSTM模型与XGBoost模型。模型训练流程分为3个步骤:首先通过训练集训练神经网络模型,将训练完成的模型在测试集上进行预测,得到模型对各个分类的概率(类别数*数据个数)。之后构建XGBoost模型输入数据:采用K折交叉验证,将训练集分为K份,由每K-1份训练生成一个神经网络模型,得到最后一份数据对各个分类的预测概率;将K个模型预测得到的结果拼接成训练集结果;之后将原数据与训练集和测试集的预测概率拼接成XGBoost模型的训练集与测试集。最后将拼接成的训练集放入XGBoost模型中进行训练,通过测试集得到预测结果。
图2 CNN-LSTM+XGBoost模型
2.2.1 并行CNN+LSTM模型
检测模型的第一部分使用并行卷积神经网络连接长短期记忆网络LSTM,模型结构与参数如图3所示。具体过程为:首先对数据进行转化,变为可供卷积神经网络输入的三维数据流;输入层获取数据流后,通过并行卷积神经网络进行特征提取,提取到数据不同深度的深层特征;再将不同深度的深层特征拼接传入2层Bi-LSTM网络获取输入的全局特征,最后由全连接层进行分类预测。
图3 CNN+LSTM神经网络模型结构
Stacking集成方法第一层的作用是生成元特征作为第二层的输入,使用第一层可以减少过拟合、提高分类精确度。第一层可以采用一个或多个相同或不同的基分类器,该研究第一层采用的神经网络结构具有较好的分类能力,对不同维度的特征进行训练都有较好效果。
2.2.2 XGBoost模型
检测模型的第二部分是XGBoost算法,经过CNN+LSTM神经网络模型获得预测概率后,将训练集与测试集分别与得到的预测概率特征进行拼接,将得到的训练集放入XGBoost模型进行训练。数据集特征较多的情况下可以进行特征选择来减少特征维度。流程图如图4所示。
图4 XGBoost模型训练流程
XGBoost算法的参数如表2所示。
表2 XGBoost算法参数值
3 实验结果与讨论
3.1 实验环境
本文实验设备为Intel Core i7-10875H CPU,16GB内存以及NVIDIA的 GeForce RTX2060显卡。实验环境采用python3.8编程语言,采用Tensorflow2.4.1、scikit-learn 0.24.1构建模型。
3.2 评估指标
实验采用准确率(accuracy)指标评估模型整体效果,其公式如下:
(5)
由于数据中各类样本数量不均衡,因此全局准确率主要受数量多的数据影响,准确率的高低无法有效反应模型对于少数类样本的分类效果,召回率(recall)、精准率(precision)、F1-score(f1-score)指标可以有效评价模型对于不同类别数据的分类效果。对于每一类样本的recall、precision、f1-score值,其公式如下:
(6)
(7)
(8)
在多分类任务中,TP(true positives)是将本类样本成功预测为本类的数量,TN(true negatives)是将其它类样本预测为其他类的数量,FN(false negatives)是将本类样本预测为其它类的数量,FP(false positives)是将其他类样本预测为本类的数量。
3.3 模型与基准模型对比
(1) 准确率对比:
将本文提出的CNN+LSTM-In-XGBoost模型与Adaboost算法、KNN(K-Nearest Neighbor)算法、GBDT(Gradient Boosting Decision Tree)算法、随机森林算法等常用机器学习、神经网络基准模型进行对比分析,如图5所示,该模型总准确率为91.31,高于其他常用算法。
图5 本文算法与其他算法结果对比
(2)算法对比
将本文算法与XGBoost算法进行对比,比较其在每一类上的f1值,同时将其他算法中对每一类预测的最高值加入比较。图6所示为不同算法对于每一类预测的f1值,该模型对8个少数类的预测准确率最高。证明了本文算法有效改善了原有模型对于少数类别的预测成功率较低问题。
图6 不同算法对在不同类别上的f1-score值
(3)算法加入预测概率特征与原本对比
图7所示为不同算法对加入十维训练准确率特征并进行特征选择后训练的模型与原本模型的结果对比。加入预测特征后的模型准确率平均提升1%,少数类样本预测准确率提升较大,证明了准确率特征对少数类样本的预测起到了作用。
图7 不同算法加入训练准确率特征后的对比
3.4 采样方法对比
图8对比了几种过采样、欠采样以及组合采样方法预测准确率与十类平均f1值。
图8 不同采样方法对比
由图8可知,对于本数据集,过采样效果普遍高于欠采样,猜测为清洗后的数据集中冗余数据较少。与此同时,不采样与简单随机采样也有较好的效果。表3所示为不同采样方法下的平均准确率与召回率值以及五类少数类样本(DoS、Analysis、Backdoor、Shellcode、Worms)的平均预测准确率。
表3 不同采样方法的平均precision与recall值
对比几种采样方法在各类样本上的几项指标可得:选用的12种方法采样中有6种precision值超过0.75,平均recall值在0.7以上,其中过采样方法的平均precision普遍高于其它方法,同时过采样方法的平均precision和recall值较为平均,整体预测效果较好。 InstanceHardnessThreshold采样方法对于所有类样本的平均recall值达到0.88,该采样方法会训练一个分类器,将分类器中预测概率较低的样本移除,因此,对少数类预测准确率达到76.36%,可以成功预测出少数类样本,但该方法也会导致整体准确率降低。
总体而言,过采样能保证整体预测效果提升,欠采样能有效提高少数类预测效果,因此本文选择先将Analysis、Backdoor、Shellcode、Worms几个少数类进行SMOTE过采样,再对Normal、Generic等多数类进行简单随机欠采样。
3.5 数据维度选择
经过数据预处理后的原始数据共有196维,神经网络模型预测得到的特征为10维;为提升模型的训练与预测速度,本文采用随机森林算法对原始数据进行特征选择,与神经网络模型预测得到的10维特征拼接后分别构建模型;由于XGBoost本身为具有判断特征重要性能力的树结构,同时采用XGBoost算法进行特征排名,选出特征训练模型。
图9所示为由随机森林与XGBoost进行特征重要性排名,选择前20、35、50、65维特征同神经网络十维预测结果分别拼接后作为训练集的模型预测结果。对比可知,使用随机森林选择的特征训练出的模型准确率均在91%以上,平均高于XGBoost选择得到的特征0.5%,与使用全部特征相比平均准确率只下降了0.2%,效果最好的50维特征仅下降0.04%。
图9 不同维度数预测结果对比比
4 结论
(1)提出了一种结合卷积神经网络、LSTM网络与XGBoost算法的网络异常行为检测模型,该模型在UNSW-NB15数据集上多分类准确率达到91.31%,在十个个类别上平均f1值为0.80,综合效果高于非集成模型与未使用采样方法的模型。同时证明了数据降维方法在高维度数据中的效果,采用数据降维后,模型在十个类别上平均f1值提升了0.025。
(2)针对多分类网络异常行为检测任务,在观察实验结果后,认为下一步改进计划主要有两点:一是发现DoS类预测准确率较低,DoS类样本中近半数被预测为Exploits类,可以就对于DoS类的预测单独构建模型;二是发现部分数据在多轮实验中均预测到其它类,猜测其标签可能标注错误,证明数据仍有进一步改进的空间。同时如何建立一个实时检测系统,如何对大量数据进行快速检测,将预测模型落实到应用层面也是未来的工作重点。