张康宁,廖光忠
(1.武汉科技大学计算机科学与技术学院,湖北 武汉 430081;2.武汉科技大学智能信息处理与实时工业系统湖北省重点实验室,湖北 武汉 430081)
网络信息时代为人们的生活和工作提供了诸多便利,与此同时网络安全问题也逐渐受到人们的关注.防火墙作为一种传统的网络安全技术,通过在网络边界建立相应的网络通信监控系统来隔离内部和外部网络,以阻挡来自外部的网络入侵.但防火墙是一种被动防护技术,面对日益隐蔽且复杂的网络攻击难以形成有效的保护.网络入侵检测作为一种主动防护手段,通过收集和分析网络行为、安全日志及审计数据等,检测网络中潜在的攻击行为,能够在网络系统受到危害前实现拦截和响应入侵,提供对外部攻击、内部攻击和误操作的实时保护.
机器学习的发展为解决网络入侵提供了广阔的思路.根据检测方法不同,入侵检测一般分为误用检测和异常检测.误用检测根据先验知识对攻击行为进行判断,通过特征库对比识别异常或潜在的入侵威胁,常用方法有专家系统、条件概率等[1].此类方法对已知类型的攻击具有很高的检测精度,但受限于先验知识,对未知的入侵行为无法检测,需要人为更新数据库[2].异常检测[3]则是通过对网络中正常行为的普遍特征进行概括,建立入侵检测模型,当网络中的行为偏离此模型时,被判定为网络入侵行为,生成警告,常用方法有统计异常检测[4]、贝叶斯推理[5]等.此类方法能够对未知的入侵行为进行识别,但受限于网络行为的复杂性及多样性,异常检测模型难以对所有正常行为进行准确的概括,存在误报率高的问题[6].
集成学习作为近些年机器学习领域的研究热点,被越来越多的应用于各种领域.入侵检测作为一个典型的分类问题,已有很多学者将集成学习应用于此类研究.为提高集成学习的检测准确率,要求基分类器应“好而不同”[7],即要求基分类器兼具一定的准确性和多样性.为提高基分类器之间的差异,常用的方法有数据样本扰动、特征属性扰动、输出表示扰动及算法参数扰动.本文将支持向量机(SVM)与Bagging集成学习结合,对Bagging集成的样本扰动方式进行了改进,并结合特征选择算法来增大基分类器之间的差异,提高检测准确率,同时避免了SVM在处理大样本数据时的计算难题.
集成学习的基分类器常采用弱分类器,如神经网络、贝叶斯、决策树等.SVM作为一种强分类器,一般认为进行集成学习的性能提升有限,但由于SVM在应用上的一些缺陷,如最优解计算、参数选择及多分类问题等,使得基于SVM的集成学习具有性能提升的空间.因此,SVM集成已成为机器学习领域的热门研究.
SVM建立在统计学习理论[8-9]的VC维概念和结构风险最小化原理基础上,根据有限样本信息在模型复杂性和学习能力之间寻求折中,以获得好的泛化能力.其基本思想是基于训练集在样本空间中找到一个划分超平面,将不同类别的样本分开.但在样本空间中存在若干超平面能将样本分开,因此需要找到一个最优决策面,使得分类结果的鲁棒性最佳.其具体描述如下:
s.t.yi(wTxi+b)≥1,i=1,2,…,m.
(1)
(1)式为支持向量机的基本型.
求解(1)式,对约束条件添加拉格朗日乘子α(α≥0),将其转化为求解的对偶问题,即:
(2)
解出α后,求出w与b即可得到支持向量机模型
(3)
L.K.Hansen等[10]通过将多个神经网络结合来提高学习器泛化性能的研究,首次提出了集成学习的概念,目前集成学习代表性算法主要有Boosting[11]和Bagging.Boosting是一种迭代算法,通过前一分类器的分类结果来更新后一分类器的样本分布,对弱学习器进行自适应调整,但其采用串行运算,计算复杂度明显提高,难以适应高速网络的实时入侵检测任务.相比Boosting算法,Bagging算法的集成个体之间相互独立,可以并行运算,大大提高了检测效率,具有更加广阔的应用前景.因此,本文采用Bagging-SVM集成学习来进行网络安全的实时入侵检测.
近年来,基于Bagging-SVM的集成学习得到了许多研究者的关注,在很多领域得到了应用,但受限于SVM难以对大规模数据进行有效的处理,集成SVM在入侵检测方面的研究相对较少.目前针对入侵检测通用的数据集为KDD Cup1999,其包含近500万条训练数据和30万条测试数据.为应对此类超大规模数据集,常用的做法是从原始数据集中随机抽取少量样本进行训练和测试.谭爱平等[12]通过随机采样分别从训练集和数据集中抽取29 313和24 974个样本用于实验,但其总量仍只约占原始数据的1/100,大量信息被丢失.付子爔等[13]提出了一种基于增量学习的SVM算法,实现了对入侵数据的动态学习,提高了学习效率,具有一定的应用价值.但是数据增量学习新知识时不可避免的遗忘旧知识,相比整个数据集的学习准确率稍有下降.因此,如何对数据集进行比较完备学习的同时提高学习效率是入侵检测技术具有实际应用价值的前提,而改进取样方式的Bagging-SVM算法可以有效实现上述目标.
集成学习要求基分类器的错误率不能高于50%,即能达到优于各子分类器的结果.利用这一特性,SVM不必寻找最优解即能使集成学习模型达到较好的分类效果,降低了SVM求解二次规划的时间和空间复杂度,也为核函数选择和参数优化提供了方便.但达到上述条件必须保证基分类器之间具有较大的差异性,即集成学习的多样性是保证分类器高准确率和泛化性的前提.
图8a表示当时,交点轴线T-Map的2维空间域,即所有满足的交点轴线映射点的集合。图8中其他2维空间域与图8a中的2维空间域类似,在此不再赘述。综合和的2维空间域,即可获得不同交点轴线偏差的2维坐标波动范围。
为提高集成学习系统的多样性,Bagging集成学习通过Bootstarp[14]方法改变样本分布,即通过对原始样本数据进行有放回的随机采样,使每个分类器之间的样本数据不同,提高集成分类器的性能.通常基分类器的样本总数为原始样本数据的63.2%,对于小样本数据的分类是一个行之有效的方法,但KDD Cup99数据集庞大,63.2%的原始数据对SVM的运算仍然是一个难以完成的任务.
为解决上述问题,同时减少样本信息的丢失,本文对Bagging算法的取样方式进行了改进.假设拟采用的基分类器个数为k,初始化k值,并将样本划分为均等的k份.为避免划分数据集时样本类型分布不均,分别将每类样本平行划分为k份,再进行随机组合.由于各子集之间相互独立,集成系统的多样性得到显著改善.图1为本文采用的样本分割示意图.
图1 样本分割示意图
为提高集成学习系统的多样性,出现了多重扰动机制,即将能够增大集成个体差异性的扰动方法结合,以达到比单一扰动更好的效果.本文采用二重扰动,将特征扰动与样本扰动结合,达到提高集成学习多样性的目的.
本文采用独热编码对字符特征数值化,导致特征维数增加,冗余特征增多,计算成本增大,因此在特征选择前需对特征进行降维处理.采用主成分分析法(PCA)将高维特征映射到低维空间,得到全新的正交特征集合.过程如下:
给定一个m行n列的矩阵X(m为样本数,n为特征维数),计算样本均值公式为
(4)
式中xi为X中第i个样本,i=1,2,…,m.
(5)
则AAT为n阶方阵.假设有一n维非零向量L,使AAT=L,则l和L分别为AAT的特征值和特征向量.将特征向量按对应特征值由大到小排列成矩阵,根据贡献率取前k行组成矩阵P,则特征降至k维后的目标矩阵为
(6)
贡献率是每一特征携带有效信息的数值度量,公式为
(7)
(7)式中lj为第j个特征的特征值,j=1,2,…,n.
图2 不同特征维数下的准确率
为保证较少维数的特征包含较多的信息,进行PCA降维时,通常选取贡献率占总贡献超过90%的前n维特征作为最终的降维结果.为避免经验选取的误差,PCA降维数按照贡献率由大到小选取,由1到46递增,观察测试集的分类结果.图2为10个SVM运行的平均值,当降维至28时,测试样本的准确率较高,此后随着特征维数的增加,准确率趋于平稳.
经PCA降维后,对所得全新的28维特征进行选择,构造不同的特征子集,以提高集成学习的多样性.考虑到实际应用中需对入侵行为作出快速准确的判断,本文基于信息增益(IG)对特征分类能力进行度量,信息增益值表示已知特征X的信息而使得类Y信息不确定性减少的程度.基于信息增益的特征选择是一种典型的过滤式选择方法,其特征选择过程与后续分类器无关,大大降低了计算成本.信息增益(IG)是基于熵理论的评估方法,其描述如下:
设数据集D中包含k个类,第j类占总样本比例为Pj(j=1,2,…,k),则数据集D的经验熵为
(8)
设特征属性A有n个不同的取值{a1,a2,…,an},根据特征A的取值将数据集D划分为n个子集{D1,D2,…,Di,…,Dn},|Di|为第i个子集的样本个数,|Dij|为子集Di中隶属于第j类的样本个数,特征A关于数据集D的经验熵为
(9)
由(8)和(9)式可得特征A对数据集D的信息增益值
IG(D,A)=H(D)-H(D,A).
(10)