, , , ,
(1.石家庄铁道大学 信息科学与技术学院,河北 石家庄 050043;2.河北省科学院 应用数学研究所,河北 石家庄 050081)
截至2016年6月,我国网民规模达7.10亿,互联网普及率达到51.7%[1]。网络的快速发展给社会带来巨大的进步,但是其安全问题也造成了巨大的损失,如何保证网络的安全一直是人们关注的焦点。网络安全是由防护、检测、反应和恢复4 个层次构成的一种综合防御体系[2]。入侵检测(Intrusion detection)作为防御体系的第二道防线,它是防火墙的合理补充,帮助系统应对网络攻击,是网络安全防护的重要技术之一。现有的入侵检测方法主要有以下几种:贝叶斯网络、马尔科夫模型、人工免疫原理、人工神经网络、支持向量机、极限学习机以及级联入侵检测等[3]。其中人工神经网络因其具有独特的结构,非线性模拟能力、强大的学习能力和自适应能力,在入侵检测系统中得到广泛应用。
虽然神经网络功能强大,在入侵检测的应用中仍然存在一些缺点。比如文献[4]采用改进的BP神经网络用于入侵检测,虽然利用可变学习速率算法、动量和批处理技术来提高网络的性能,但是数据的维数是复杂多变的,如果数据维数过高的话会导致整个网络的计算复杂度大幅度增加。又比如文献[5]利用遗传算法来解决神经网络收敛速度慢和陷入局部最优的问题,但是遗传算法搜索问题的解空间的大小跟网络参数的个数有关,这无疑会增加网络的训练时间,另外遗传算法处理高纬度的数据具有局限性。深度学习的出现使得解决复杂攻击数据有了新的解决思路,其通过组合低层数据特征形成更加抽象的高层特征来表示属性或者类别[6],不同于浅层神经网络,深度学习有多达5~6层,甚至10多层的神经网络结构。比如文献[7]采用了深度学习中的自编码网络模型实现对网络特征的提取,通过softmax分类器对特征数据进行分类。虽然保证了识别率,但是由于深度学习独特的网络结构,其训练速度比较慢。
针对以上问题,提出一种基于主成分分析和概率神经网络入侵检测方法。首先使用PCA对数据进行特征降维,消除冗余信息;然后使用概率神经网络(PNN)建立入侵检测模型;其次,使用粒子群算法(PSO)优化概率神经网络的参数;最后使用KDD99数据集对该模型进行测试。
主成分分析(PCA)是统计学中对数据分析的有力工具,将高维数据集变换到低维空间,保留最多的原始数据信息[8]。PCA的基本原理如下:假设空间中存在p个具有相关性的变量,通过线性组合等方法消除其相关性,使其变成一组线性无关的变量,新变量要尽可能准确地反映原始变量的信息而且新变量的个数要少于原始变量。在这里用方差来度量信息,通常线性组合的方法有很多种,为了准确反映原始变量的信息,将方差最大的那组线性组合作为第一主成分,以此类推分别建立第二、三等主成分。需要注意的是,各个主成分之间是线性无关的。具体步骤如下:
第一步:将样本数据组成的矩阵进行标准化,目的是消除量纲对数据的干扰
(1)
第二步:计算协方差矩阵CX
(2)
第三步:采用雅克比方法计算协方差矩阵的特征值(λ1,λ2,…,λp)与相应的特征向量a1,a2,…,ap;
第四步:选择重要的主成分,并计算主成分的贡献率η和累计贡献率∑η
(3)
(4)
第五步:根据累计贡献率,一般累计贡献率大于85%以上就可以满足需求,这时取前k个特征值对应的特征向量(a1,a2,…,ak)组成变换矩阵Q(p×k)。
第六步:计算降维后的新样本矩阵Y。
(5)
图1 概率神经网络结构
概率神经网络是由径向基神经网络发展而来的一种前馈型神经网络,其理论依据是贝叶斯最小风险规则(贝叶斯决策理论)[9]。不同于传统神经网络的Sigmoid函数,它通常采用高斯函数作为网络的激活函数。其层次模型,由输入层、模式层、求和层、输出层共4层组成。网络的基本结构如图1所示。
输入层将样本数据输入到网络中,其神经元的个数同样本数据的维数相等。模式层神经元个数等于样本数据的总数目。假设样本数据为X(x1,x2,…,xn),模式层的第i个神经元与输入层的权值矩阵为Wi则该神经元的输出si为
(6)
式中,δ是一个很重要的参数,称为扩散常数或者散布常数。这个参数需要在实验中进行调整,过大或者过小都会影响网络的性能。
求和层单元只和属于某个类别的神经元相连,并将其概率累加并传到输出层。输出层的每个神经元对应一种类别,它根据求和层传来的各个类别的概率密度函数,将概率密度函数最大的那个神经元输出为1,其它神经元输出为0,输出为1的神经元对应的类别即为网络识别出的类。
粒子群优化算法(PSO)是一种进化计算技术(Evolutionary Computation),1995 年由Eberhart 博士和Kennedy 博士提出[10]。该算法是一种群智能算法,它通过研究鸟群搜索食物过程中的行为,从中发现个体与群体之间存在的协作和信息共享的规律,并利用这种规律对问题的解空间进行搜索,以求获得最优解。
粒子群算法是一种并行算法,具有容易实现、精度高、收敛快等优点。针对研究问题的解空间,粒子群算法首先在该空间内初始化一些随机解,这些解就是一些粒子,粒子的状态包括粒子的速度和位置两个方面。然后使用适应度函数评价粒子所处位置是否最优,使用两个全局变量pbest和gbest来记录粒子个体和群体所寻找过的最优位置。对于每个粒子,计算其适应值,若优于pbest就将其作为pbest,若优于gbest就将其作为gbest, 接着更新粒子的速度和位置。粒子速度和位置的更新规则如下
Vi=wVi+c1×c1×rand()×(pbesti-xi)+c2×rand()×(gbesti-xi)
(7)
xi=xi+Vi
(8)
式中,Vi是粒子的速度;rand()是介于0和1之间的随机数;xi是粒子的当前位置。c1和c2是学习因子 。
如果粒子的速度或者位置超出搜索的范围就将其设定为最大速度或者边界位置。粒子更新完毕后如果没有找到满足要求的最优解就继续迭代搜索。搜索最优解的停止条件一般选为最大迭代次数或者粒子群搜索到的最优位置满足预定最小适应阈值。
图2 基于PCA的概率神经网络入侵检测模型
基于以上所做的工作,提出了一种基于PCA的概率神经网络入侵检测模型(PCA-PNN)。如图2所示。
该模型首先利用PCA对训练数据和测试数据进行降维,在降维的时候先对训练数据进行降维,然后用降维产生的降维矩阵乘以测试数据就可以对测试数据进行降维,以保证新的训练数据和测试数据处在同一个基中;接着将数据输入到PNN网络中进行训练,采用粒子群算法对PNN网络的散布常数Spread进行优化,最后测试PNN网络的性能。
采用的实验工具是Matlab R2010a,为了衡量算法的优劣,将未经过粒子群算法优化和特征降维的PNN网络作为对比。为评价上文提出的入侵检测模型,选用KDD99 数据集。该数据集是由麻省理工学院Lincoln 实验室仿真美国空军局域网环境建立的网络测试数据集,包含约500 万条网络连接记录,除了正常的数据之外,还有Dos、R2L、U2R和Probe 4个大类的攻击数据。在研究中通常使用该数据集中的10%训练数据集和10%测试数据集[11]。定义了几个检测指标,分别是:
检测时间,完成预测所需的时间;
检测精度,被正确分类的数据占总检测数据的比例;
检测率,被正确分类的入侵数据占总入侵数据的比例;
误报率,正常数据中被错误分类的数据占总正常数据的比例。
为了模拟真实的网络环境,分别在训练集和数据集的正常数据和4大类的攻击数据中随机取了10 000条数据,其中正常数据占了96%,具体数据的分布见表1所示。
实验预处理:每个样本有42个特征,其中有些是字符型的特征,因此必须要对样本进行预处理,将不同的字符型的数据替换为不同的数字。比如在网络服务类型这项中令aol=1,auth=2,bgp=3,courier=4,以此类推。然后使用Matlab将样本数据的排列顺序打乱。接着将样本中表示类别的特征提取出来,作为标签数据,最后对样本数据进行L2范数归一化。
表1 实验数据
数据降维:使用PCA算法对数据进行降维。在PCA中,原始数据矩阵被转换到新的矩阵中,这个新的矩阵的维度按照每个特征的贡献率从左到右排列。新矩阵中每个维度的贡献率见表2所示。
一般来说达到85%以上就能够很好地包含所有的信息,本文将累计贡献率设为98%,取维度为6。在降维的时候,要将训练集和测试集降到基相同的向量空间内。
表2 PCA分析结果
表3 实验参数
然后对网络模型进行测试,并计算出上述的检测指标。对比实验的具体结果见表4所示。
表4 实验结果
在未优化的网络中,散布常数的上述取值是在众多的逐个尝试中取得的最好结果。从实验结果中可以看出,使用粒子群算法对PCA-PNN网络进行优化,能够找到散布常数的最优值,从而提高网络的性能,而且检测时间明显比未经过降维的网络短,因为降低数据的维度之后网络的运算负担就会减小很多,从而提高效率。从精确度、检测率和误报率这3个指标来看,虽然PCA方法尽可能地保留了原始数据的完整性,仍然还是有一些信息的损失,因此其性能比优化的传统PNN网络稍弱一些。
由于入侵数据在总的数据中只占了很小的比例,在未优化的PNN中,趋向于将数据分类到正常数据中,因此其检测入侵数据的检测率不高,但是误报率低。优化的PCA-PNN比起传统的PNN网络来说,无论是性能还是检测时间都有明显的优势。
针对神经网络在入侵检测的应用中存在入侵数据冗余信息多,数据量大,训练时间长,易陷入局部最优等问题,提出了一种基于PCA的概率神经网络入侵检测方法。该方法通过PCA消除了数据的冗余,降低了数据的维度,缩短了网络训练的时间,使用粒子群算法提高了概率神经网络的性能。实验结果表明,将主成分分析的方法和粒子群优化算法与概率神经网络结合是有效的,具有一定的推广意义。但是本文是在公开数据集上所做的实验,实际网络环境中的数据比数据集更加真实,也更加复杂。因此,下一步的工作是将该方法运用到真实的网络中,通过在网络中得到的反馈来改进该方法。
[1]中国互联网络信息中心. 第38次中国互联网络发展状况统计报告[EB/OL].[2016-8-3].http://www.cnnic.net.cn/hlwfzyj/hlwxzbg/hlwtjbg/201608/t20160803_54392.htm.
[2]卿斯汉, 蒋建春, 马恒太, 等. 入侵检测技术研究综述[J]. 通信学报,2004,7:19-29.
[3]方向, 王丽娜, 贾颖. 智能化入侵检测算法研究综述[J]. 通信技术,2015,12:1321-1328.
[4]丁玲, 赵小刚. 改进BP神经网络用于入侵检测[J]. 微计算机信息,2012,3:131-132,84.
[5]沈夏炯, 王龙, 韩道军. 人工蜂群优化的BP神经网络在入侵检测中的应用[J]. 计算机工程,2016,2:190-194.
[6]尹宝才, 王文通, 王立春. 深度学习研究综述[J]. 北京工业大学学报,2015,1:48-59.
[7]李春林, 黄月江, 王宏, 等. 一种基于深度学习的网络入侵检测方法[J]. 信息安全与通信保密,2014,10:68-71.
[8]苑津莎, 尚海昆. 基于主成分分析和概率神经网络的变压器局部放电模式识别[J]. 电力自动化设备,2013,6:27-31.
[9]蒋芸,陈娜,明利特, 等. 基于Bagging的概率神经网络集成分类算法[J]. 计算机科学,2013,5:242-246.
[10] Kennedy J. Small worlds and mega-minds: effects of neighborhood topology on particle swarm performance[M]// Evolutionary Computation, 1999. CEC 99. Proceedings of the 1999 Congress on[C]. Washington USA: IEEE, 1999.1945-1950.
[11]张新有, 曾华燊, 贾磊. 入侵检测数据集KDD CUP99研究[J]. 计算机工程与设计,2010,22:4809-4812,4816.