本站小编为你精心准备了网络勘测论文:网络系统异样勘测方式参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
作者:向直扬朱俊平单位:西北农林科技大学信息工程学院
改进的SOINN算法
SOINN是用于机器人工程的联想记忆神经网络,实现了在线的拓扑结构学习。最初SOINN是一个双层的竞争神经网络结构,存在着诸如难于决定何时停止第一层网络的训练,并开始第二层训练等问题。增强的SOINN,即ESOINN引入了单层网络的结构,同时引入了新的参数。2011年Shen提出改进的SOINN(以下简称为ISOINN),减少了参数数目。
改进的SOINN以序列的方式读取训练数据,然后维持节点集合N以及一些连接这些节点的边用来表示数据的拓扑结构。当读取一个新样本时,将经过三个步骤的处理:首先将其进行类间插入或类内插入;然后,如果学习已经进行了λ次,则进行噪音删除;最后进行节点编组。
1类间插入和类内插入在进行类内插入之后,将连接获胜者和其邻居的所有边的年龄加1,如果一条边的年龄大于指定的最大年龄age_max时,删掉这条边。
2噪音删除
在接受了λ个样本之后,进行噪音删除。删除的方法是删掉N中邻居的数目小于2的点。在实验的过程中发现,如果将算法加上额外的噪音删除,将大大提高训练的分类器的分类效果。具体的做法是,在最后一轮噪音删除中,删掉累积点数小于λ的点,理由有两点:(1)这些点是在最后一轮训练时候刚刚到来的,因此是孤立点;(2)这些点代表的类型的数目太少。
3节点编组
在噪音删除之后,ISOINN算法对节点进行编组。为了表示节点的拓扑结构,引入了一个密度的概念,节i的密度iD的计算方法如(7)式:(7)式中||iN是节点i邻居节点的数目。根据点的密度的定义,定义边的密度为其连接的两个点中密度较小的点的密度。算法1总结了节点编组的方法。
4使用ISOINN训练网络数据分类器
ISOINN的训练结果是子簇的中心点,已及这些点归属于哪个组的信息。从训练结构中构造网络数据分类器的方法为:将点的数目最多的组中所有点标记为正常,其他组中的点标记为异常。这样做的理由是,网络中的正常应用的种类和数据(对于使用入侵检测的度量方法来说)内容相似,且数据量较多。对于待分类的样本,利用公式(1)来寻找其最近邻居,将样本用其最近邻居的标记来标记。这样就构建了一个对于网络数据的最近邻分类器。
使用数据精简的方法加速网络数据的训练
通常在网络入侵检测的数据集“10%KDDCup99”上训练神经网络分类器的时候,需要超过一天的时间。训练速度过慢,对于在线训练的异常检测系统是不能接受的,因为这意味着高的丢包率。因此提出使用数据精简的方法来加速ISOINN的训练。将要讨论的数据精简方法包括三种:随机子集选取(RandomSubsetSelection,简写为RSS),基于k-means聚类的方法,和基于主成分分析(PCA)的方法。在接下来的实验中,将比较这三种方法的加速效果。RSS方法可以看做是简单的下采样,另外两种方法则要复杂一些,有更坚实的理论基础。
1基于k-means聚类的数据精简
此方法的灵感来自于用于数据流聚类的k-means。用于流聚类的k-means使用滑动窗口的方式,首先对每个窗口内的样本聚类,获得聚类中心,然后再对这些聚类中心进行聚类。提出的方法与流聚类的k-means不同的是,当获得了窗口内的聚类中心之后,不是进行存储,而是直接将其用于ISOINN的训练。这样直接用于ISOINN的训练的样本数目就能减少。记滑动窗口的大小为w,数据精简率为reduct_rate,则基于k-means的数据精简方法为:每读取了w个样本之后,对其进行k-means聚类,聚类中心数目为reduct_rate×w。将聚类中心作为精简之后的数据。
2基于主成分分析的数据精简
PCA是一种利用统计学理论,选取具有最大方差的数据成分的方法。它是一种通过线性变换,在尽量不损失数据中有效信息的情况下,降低数据维数的方法。
PCA目前被广泛应用于机器学习领域的数据降维。在提出的方法中使用PCA进行数据精简。精简的方式同基于k-means的数据精简方法一样,使用滑动窗口的方法。每当获得了维数为n的w个样本之后。对数据进行一次精简。算法2总结了使用PCA进行数据精简的方法。这个算法可以从w个样本中,获得精简率为reduct_rate的数据。
特征
选取与k-means这样的聚类算法一样,ISOINN需要计算样本与样本之间的距离。而网络入侵检测的测试数据集属性较多,这就带来了维度诅咒的问题。
可以采用特征选取的方法来解决维度诅咒的问题。使用Adaboost进行特征选取。Adaboost结合DecisionStump的方法,已经被证明适合于网络入侵检测问题,这是一种贪心算法,其基本思想是将若干个弱分类器结合为一个强分类器,并采取迭代的方法实现这个组合,每次选取对于提高分类准确率贡献最高的那个弱分类器。弱分类器DecisionStump是单节点的决策树,最终权值较高的DecisionStump相对应的属性,优先选择。
基于ISOINN的异常检测框架
图1给出了基于ISOINN的,在线无监督学习的网络入侵检测方法框架。特征选取过程的输入是经过处理的用于入侵检测的数据,输出经过筛选的,保留部分属性的数据;数据精简的过程与在线聚类的过程同时进行。在经过适当时间的训练之后,就可以停止训练,并得到一个针对网络数据的最近邻分类器。利用这个分类器,对之后到达的网络数据进行分类,从中发现网络入侵。
实验结果
实验所使用的平台环境为:处理器IntelCorei32.4GHz双核,存储器2GB,操作系统为64位linux。
1KDDCup99数据集
尽管KDDCup99数据集有一些不足,但是它仍被广泛应用于入侵检测算法的性能测试。其数据是从一个模拟的军事网络中,经过9个星期的采集而来,其中包括24种攻击类型。这些攻击类型分为4类:DOS,R2L,U2R和网络嗅探。实验中采用10%KDDCup99数据集,这是个更加简要,也更有挑战性的数据集。在下载数据中,除开一条格式错误的记录,总共包含了494020条记录,其中396743条为攻击记录。
2特征选取结果
使用Weka作为工具。Weka中包含了Adaboost算法。实验中使用了Weka3.6版本,Adaboost的参数为软件默认设置。针对所有的数值类型属性进行选取,结果选中了其中7个:count,dst_bytes,hot,src_bytes,dst_host_srv_serror_rate,dst_host_same_src_port_rate,dst_host_srv_diff_host_rate。训练的时间为227.5秒。
3ISOINN的参数选取
实验采用网格搜索的方法来进行参数选取。因为单次训练的时间较长,往往耗时超过一天。为了缩短搜索时间,并保持较好的搜索效果,采用如下的方法:(1)将数据集进行20%的下采样;(2)仅使用特征选取中权值最高的4个属性;(3)在对每个参数组合进行评估时,使用2序交叉验证。在搜索之前,需要对数据进行的对数变换,并针对每个属性的标准化。将α设置为无穷大,最大年龄age_max的搜索范围是100~1000,每100搜索一次;另一参数λ的搜索范围是20~120,每10搜索一次。评估指标是分类准确率。网格搜索的结果如图2所示。图中准确率所构成的平面有大量的平坦区域,说明将ISOINN应用于网络入侵检测的问题时,其性能是稳定的。参数λ取值较大的时候,网络的训练耗时较长。综合考虑准确率与训练时间与准确率,选取参数组合为:age_max=600,λ=30,α=∞。
4实验结果
对比入侵检测算法的评估指标主要为两项:检测率与误警率。检测率计算方法为,检测率=准确检测到的入侵数目/总共的入侵数目,误警率的计算方法为,误警率=被误报为入侵的数目/正常记录数目。实验中,数据精简部分的参数设置为:reduct_rate=0.33,w=reduct_rate/λ=90,并且将基于PCA的数据精简的参数k设为1。数据精简部分与ISOINN均用python与numpy实现,其中k-means的实现使用了scipy科学计算库。测试中使用了特征选取的7个特征,经过了对数变换,并且针对每个属性进行了标准化。
程序的运行没有使用任何的硬件加速。实验对比结果如表4所示。为了与现有文献中的方法的效果对比,表3中列出了一些现有方法的效果。实验结果表明,(1)在ISOINN的训练加速方面,使用k-means进行数据精简的方法对于加速训练最有利。使用RSS也能达到很好的效果,其原因可能是数据集本身是过采样的。使用PCA进行数据精简的方法对于减少训练时间同样有效,但此方法由于提高了对于网络入侵的灵敏度,造成了较高的误警率。(2)总的来说基于ISOINN与数据精简的网络异常检测方法,在保证较高检测率的前提下,降低了训练时间。
结论与未来工作
提出了基于改进的SOINN与数据精简的网络异常检测方法。在该方法中,随机子集选取,k-means聚类和主成分分析法被用于减少训练数据样本数目,从而减少训练时间;改进的SOINN被用于在线地,无监督地训练网络数据分类器。实验结果表明,此方法达到了减少对网络数据分类器进行无监督地,在线地训练的时间的目的。提出的方法存在的问题之一是在训练过程中使用了特征选取,这相当于使用了有监督的度量学习(metriclearning)。为了不使用特征选取而又能完成针对高维数据的入侵检测,可能的改进方法是使用集成(ensemble)学习。