基于卡方检验和LDOF算法的入侵检测方法及系统与流程

文档序号:18106603发布日期:2019-07-06 11:41阅读:222来源:国知局
基于卡方检验和LDOF算法的入侵检测方法及系统与流程

本公开属于入侵检测领域,尤其涉及一种基于卡方检验和ldof算法的入侵检测方法及系统。



背景技术:

本部分的陈述仅仅是提供了与本公开相关的背景技术信息,不必然构成在先技术。

入侵检测是一种主动的网络安全措施,它不仅可以通过监测网络实现对内部攻击、外部攻击和误操作的实时保护,有效地弥补防火墙的不足,而且还能结合其它网络安全产品,对网络安全进行全方位的保护,具有主动性和实时性的特点,是防火墙重要的和有益的补充。它通过从计算机网络或计算机系统的关键点收集数据并进行分析,从中发现网络或系统中是否有违反安全策略的行为和攻击的迹象。

离群点挖掘是数据挖掘技术的一个分支。离群点挖掘是对数据集中一种挖掘较小模式的方法,其挖掘的目的是挖掘大数据集中那些偏离多数数据的异常数据,这些少数的异常数据可能就代表是不正常行为。离群点挖掘的一个重要应用领域,就是应用到入侵检测技术当中。基于离群点挖掘的入侵检测技术能自动的检测出异常数据或入侵行为,不需要依靠人工检测。基于离群点挖掘的入侵检测技术能很好的检测出异常数据。

1)基于统计离群点挖掘,其优点是有坚实的概率论理论支撑,根据概率模型可以揭示离群点的含义等。发明人发现,离群点挖掘也存在着缺点,一是该算法不合适数据未知分布的情况,二是不适合于多维数据集。

2)基于深度的离群点挖掘能很好的处理数据未知分布的情况,但发明人发现,对于高维数据则处理效率比较低。

3)基于聚类的离群点挖掘的优点则是可以同时发现簇和离群点,发明人发现,聚类算法的主要目的是为了发现簇,因此对离群点挖掘的效率较低,同时在聚类的过程中离群点很容易影响聚类的过程,从而导致聚类的不准确。

4)基于距离的离群点挖掘它能很好的处理高维数据,发明人发现,其时间复杂度很高,不能处理稀疏数据,挖掘结果对参数选取很敏感,不能挖掘局部离群点。

5)基于密度的离群点挖掘不仅可以检测到全局离群点还可以检测到局部离群点,发明人发现,仍存在着参数的选择问题和算法的复杂度比较高等问题。



技术实现要素:

为了解决上述问题,本公开的第一个方面提供一种基于卡方检验和ldof算法的入侵检测方法,其通过卡方检验进行特征选择来降低入侵监测数据集的维度,达到降低计算成本和提高算法精度的目的。

为了实现上述目的,本公开采用如下技术方案:

一种基于卡方检验和ldof算法的入侵检测方法,所述入侵检测方法基于spark平台运行;所述入侵检测方法包括:

使用卡方检验算法对原始入侵检测数据集进行特征选择;

对特征选择后的入侵检测数据集进行归一化处理;

采用ldof算法寻找归一化的入侵检测数据集中n个最大的ldof因子,这n个ldof因子对应的n个数据对象被判定为异常数据;其中,n为正整数。

为了解决上述问题,本公开的第二个方面提供一种基于卡方检验和ldof算法的入侵检测系统,其通过卡方检验进行特征选择来降低入侵监测数据集的维度,达到降低计算成本和提高算法精度的目的。

为了实现上述目的,本公开采用如下技术方案:

一种基于卡方检验和ldof算法的入侵检测系统,所述入侵检测系统基于spark框架构建;所述入侵检测系统,包括:

特征选择模块,其用于使用卡方检验算法对原始入侵检测数据集进行特征选择;

归一化模块,其用于对特征选择后的入侵检测数据集进行归一化处理;

ldof因子计算模块,其用于采用ldof算法寻找归一化的入侵检测数据集中n个最大的ldof因子,这n个ldof因子对应的n个数据对象被判定为异常数据;其中,n为正整数。

为了解决上述问题,本公开的第三个方面提供一种计算机可读存储介质,其通过卡方检验进行特征选择来降低入侵监测数据集的维度,达到降低计算成本和提高算法精度的目的。

为了实现上述目的,本公开采用如下技术方案:

一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述所述的基于卡方检验和ldof算法的入侵检测方法中的步骤。

为了解决上述问题,本公开的第四个方面提供一种spark平台,其通过卡方检验进行特征选择来降低入侵监测数据集的维度,达到降低计算成本和提高算法精度的目的。

为了实现上述目的,本公开采用如下技术方案:

一种spark平台,包括分布式服务器集群,每个分布式服务器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述所述的基于卡方检验和ldof算法的入侵检测方法中的步骤。

本公开的有益效果是:

(1)本公开首先使用卡方检验对入侵检测数据集进行特征选择然后得到特征选择后的数据集,然后对特征选择后的数据集进行归一化处理,得到最终的数据集,其次将最终的数据集传给ldof算法,让其作为算法的输入之一,最终得到检测结果,本公开的该方法从头到位全部是基于spark大数据平台。

(2)由于ldof算法能很好地检测出局部离群点和全局离群点,所以它也能很好的检测出各种类型的异常数据,同时卡方检验和spark大数据平台都能有效地降低算法的计算成本,并能基于spark大数据平台可以处理海量数据,所以本公开法既能有效地检测异常数据,并且还能很好的处理海量数据。

附图说明

构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。

图1是本公开实施例提供的一种基于卡方检验和ldof算法的入侵检测方法流程图。

图2是本公开实施例提供的通过对离群点数据集进行聚类判断异常数据的示意图。

图3是本公开实施例提供的特征选择前的数据集合。

图4是本公开实施例提供的特征选择后的数据集合。

图5是本公开实施例提供的一种基于卡方检验和ldof算法的入侵检测系统结构示意图。

具体实施方式

下面结合附图与实施例对本公开作进一步说明。

应该指出,以下详细说明都是例示性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

术语解释:

(1)rdd(resilientdistributeddatasets),弹性分布式数据集,是分布式内存的一个抽象概念,rdd提供了一种高度受限的共享内存模型,即rdd是只读的记录分区的集合,只能通过在其他rdd执行确定的转换操作(如map、join和groupby)而创建,然而这些限制使得实现容错的开销很低。对开发者而言,rdd可以看作是spark的一个对象,它本身运行于内存中,如读文件是一个rdd,对文件计算是一个rdd,结果集也是一个rdd,不同的分片、数据之间的依赖、key-value类型的map数据都可以看做rdd。

(2)spark是ucberkeleyamplab(加州大学伯克利分校的amp实验室)所开源的类hadoopmapreduce的通用并行框架,spark,拥有hadoopmapreduce所具有的优点;但不同于mapreduce的是——job中间输出结果可以保存在内存中,从而不再需要读写hdfs,因此spark能更好地适用于数据挖掘与机器学习等需要迭代的mapreduce的算法。

(3)ldof则是一种的较新的离群点挖掘算法,它不仅能很好的处理高维数据,并能同时检测局部离群点和全局离群点,还能比较好的处理稀疏数据,对于数据未知分布的情况也能比较好的处理。

ldof算法是kezhang在2009年所提出的一种新的离群点挖掘算法。ldof算法采用基于密度的离群点挖掘的思想,采用了以距离为度量标准的方法,同时结合了knn算法和lof算法的优点,定义了一个新的离群因子ldof,算法按ldof离群因子的大小进行排列,以top-n的方式输出n个最大的ldof离群因子,则该n个离群因子所对应的n个数据对象则被当做离群对象输出。

ldof算法描述如下:

假设qp是数据对象p的k个最近邻点的集合(不包含数据对象p)。

定义1:数据对象p的k个最近邻到数据对象p的平均距离,即qp内所有点a到数据对象p的平均距离,记作l1,具体的公式如下:

定义2:数据对象p的内部距离,即qp内所有数据对象e和r之间的平均距离,记作l2,具体的公式如下:

定义3:数据对象p的局部距离离群因子可以表示为数据对象p的k个最近邻到数据对象p的平均距离比上数据对象p的内部距离,即l1/l2,具体可以用公式表示如下:

ldof算法的优点:

1)能同时检测局部离群点和全局离群点。

2)能比较好的处理稀疏数据。

3)对于数据分布未知的情况也能很好的处理。

因为ldof算法有着上述的优点,所以将ldof算法应用到入侵检测领域能更好的检测出异常数据。

图1是本公开实施例提供的一种基于卡方检验和ldof算法的入侵检测方法流程图。

如图1所示,本实施例的一种基于卡方检验和ldof算法的入侵检测方法,所述入侵检测方法基于spark平台运行;所述入侵检测方法包括:

s101:使用卡方检验算法对原始入侵检测数据集进行特征选择。

为了解决ldof算法所存在的时间复杂度较高以及需要遍历整个数据集,非常浪费计算成本的问题,现有的基于剪枝操作的ldof算法,其中心思想主要是通过聚类的方法来对离群点数据集进行聚类。根据聚类算法的特性,将数据集具有相似特征的数据聚拢在一起形成簇,然后删除这些簇并保留剩余数据点为候选集,最后在候选集上执行ldof算法。

正如图2所示,a,b,c,d四个数据点为异常数据点,在进行聚类时,a数据点很有可能会被“误认为”为正常数据而被删减掉。虽然这种做法虽然精简了数据集,提升了ldof算法的执行速度,但是在剪枝的过程中难免会剪掉一些像a数据点这样的异常数据。而在入侵检测应用场景中,这种操作是不可取的,一旦将某些异常数据剪掉,不处理或将其归为正常数据,这将会对计算机系统带来不可估计的后果。

为了解决这个问题,本实施例将从特征选择的角度去解决这个问题,不通过剪枝操作,而通过特征选择算法来降低入侵监测数据集的维度,达到降低计算成本和提高算法精度的目的,并且不会误删掉一些异常数据。

由于入侵检测数据维度较高并且数据量大,这会导致ldof算法运行时间过长等问题,所以为了解决这些问题,本实施例采用ldof算法来作为入侵检测技术中的技术核心,并引入了卡方检验和spark大数据平台来解决上述问题。

特征选择能够去除一些不相关、冗余、“表达能力差”的特征,从而达到减少特征个数、减少运行时间和提高算法的运行时间等。图3和图4分别为特征选择前和特征选择后的数据集合,其中m是从n个特征中通过特征选择算法选出的最具有“表达力”的m个特征,并且m<n。从数据集的角度来看,通过特征选择数据集从n列减少到了m列,数据量得到了下降,计算成本也随之降低。从特征的角度来看,特征从n个缩减到了m个,去除了一些冗余的属性,选出的m个特征则是更具有“表达力”的,因而算法的精确度也会随之增加。

卡方检验是一种比较常用的特征选择方法。卡方检验即x2值描述了自变量与因变量之间的相关程度。其中x2越大,表示实际与期望差距越大,两个变量之独立性越小,也就是越相关,x2越小,表示实际与期望的情况近似,那么独立性越大,相关性越小。所以可以使用x2值来做特征选择等相关的工作。

具体公式如下:

其中a为实际频数,t为理论频数,x2为卡方值。选出相关性大的一些特征作为特征选择后的数据集。

具体地,步骤s101中,使用卡方检验算法对原始入侵检测数据集进行特征选择的过程为:

s1011:原始入侵检测数据集被加载为rdd并分为多个数据块,每个数据块对应一个分区;

s1012:分别计算每个分区的卡方值,筛选出排在前m的卡方值对应的数据块作为原始入侵检测数据集的特征,进而得到特征选择后的入侵检测数据集;其中,m为正整数。

本实施例利用卡方检验对特征进行评价打分,选出“表达力”强的特征并删掉一些冗余特征;得到特征选择后的数据集并将其输送给ldof算法。

s102:对特征选择后的入侵检测数据集进行归一化处理。

数据归一化是数据预处理阶段常做的一种工作。一些分类器需要计算样本之间的距离(欧氏距离),例如knn等。这时,如果一个特征的值域范围非常大,则距离计算就主要取决于这个特征,从而很容易导致分类器的分类精度降低。对于ldof算法来说,其寻找最近邻的过程主要是根据数据对象间欧氏距离的大小来判断,如果不对数据进行归一化处理的话很容易会导致算法在寻找最近邻时发生误差,从而导致最终检测结果发生误差。

本实施例使用min-max标准化方法进行归一化处理。min-max标准化方法是对原始数据进行线性变换,使得结果落到[0,1]区间。其转换函数如下:

其中:min为样本数据的最小值,max为样本数据最大值,x为转换前的样本数据,x*为转换后的样本数据。

s103:采用ldof算法寻找归一化的入侵检测数据集中n个最大的ldof因子,这n个ldof因子对应的n个数据对象被判定为异常数据;其中,n为正整数。

在具体实施中,步骤s103的过程为:

s1031:将特征选择后的入侵检测数据集复制成两份,一份为训练集,另一份为测试集;

s1032:将训练集加载到rdd中的训练数据块rddtrain,作为训练数据对象;

将测试集加载到rdd的测试数据块rddtest,作为测试数据对象;

s1033:利用broadcast广播算子将训练数据对象和k值广播到spark平台集群中各个节点中;

s1034:遍历测试数据对象,循环计算测试数据对象到训练数据对象的距离,得到每条数据对象的k近邻并将其统计排序;

s1035:根据每条数据对象的k近邻,计算每条数据对象的ldof因子;

s1036:根据top-n原则,输出最大的n个ldof因子,这n个ldof因子对应的n个数据对象被判定为异常数据。

对于单机版的ldof算法来说,当数据量到达几千条以后,不仅需要占用很多的内存资源并且算法的运行时间也会非常的长,严重影响了算法的执行效率。而将算法进行并行化后就可以很好的解决这个问题。目前市面上最流行两个大数据处理平台为hadoop和spark。hadoop虽然有着很好的计算能力但是需要与磁盘进行多次的交互,影响了算法的执行效率。而spark平台是基于内存计算的,不受限于磁盘,大大减少了与磁盘交互所耗费的时间,提升了算法的执行效率。所以为了提高算法的执行效率,本实施例将优化后的ldof算法与spark框架相结合。

本实施例的基于卡方检验和ldof算法的入侵检测方法分为两个阶段,第一阶段任务是特征选择计算卡方值的过程,第二阶段任务是寻找k近邻计算ldof因子的过程,最后经过并行化后,本实施例的入侵检测方法能更好地去处理大量数据。

图5是本公开实施例提供的一种基于卡方检验和ldof算法的入侵检测系统结构示意图。

如图5所示,本实施例的一种基于卡方检验和ldof算法的入侵检测系统基于spark框架构建;所述入侵检测系统,包括:

(1)特征选择模块,其用于使用卡方检验算法对原始入侵检测数据集进行特征选择。

在具体实施中,所述特征选择模块,包括:

原始数据集加载模块,其用于原始入侵检测数据集被加载为rdd并分为多个数据块,每个数据块对应一个分区;

卡方值筛选模块,其用于分别计算每个分区的卡方值,筛选出排在前m的卡方值对应的数据块作为原始入侵检测数据集的特征,进而得到特征选择后的入侵检测数据集;其中,m为正整数。

卡方检验是一种比较常用的特征选择方法。卡方检验即x2值描述了自变量与因变量之间的相关程度。其中x2越大,表示实际与期望差距越大,两个变量之独立性越小,也就是越相关,x2越小,表示实际与期望的情况近似,那么独立性越大,相关性越小。所以可以使用x2值来做特征选择等相关的工作。

具体公式如下:

其中a为实际频数,t为理论频数,x2为卡方值。选出相关性大的一些特征作为特征选择后的数据集。

(2)归一化模块,其用于对特征选择后的入侵检测数据集进行归一化处理。

数据归一化是数据预处理阶段常做的一种工作。一些分类器需要计算样本之间的距离(欧氏距离),例如knn等。这时,如果一个特征的值域范围非常大,则距离计算就主要取决于这个特征,从而很容易导致分类器的分类精度降低。对于ldof算法来说,其寻找最近邻的过程主要是根据数据对象间欧氏距离的大小来判断,如果不对数据进行归一化处理的话很容易会导致算法在寻找最近邻时发生误差,从而导致最终检测结果发生误差。

具体地,在所述归一化模块中,使用min-max标准化方法对特征选择后的入侵检测数据集进行归一化处理。

min-max标准化方法是对原始数据进行线性变换,使得结果落到[0,1]区间。其转换函数如下:

其中:min为样本数据的最小值,max为样本数据最大值,x为转换前的样本数据,x*为转换后的样本数据。

(3)ldof因子计算模块,其用于采用ldof算法寻找归一化的入侵检测数据集中n个最大的ldof因子,这n个ldof因子对应的n个数据对象被判定为异常数据;其中,n为正整数。

在具体实施中,所述ldof因子计算模块,包括:

数据集复制模块,其用于将特征选择后的入侵检测数据集复制成两份,一份为训练集,另一份为测试集;

训练集及测试集加载模块,其用于将训练集加载到rdd中的训练数据块rddtrain,作为训练数据对象;将测试集加载到rdd的测试数据块rddtest,作为测试数据对象;

广播模块,其用于利用broadcast广播算子将训练数据对象和k值广播到spark平台集群中各个节点中;

k近邻计算模块,其用于遍历测试数据对象,循环计算测试数据对象到训练数据对象的距离,得到每条数据对象的k近邻并将其统计排序;

ldof因子计算模块,其用于根据每条数据对象的k近邻,计算每条数据对象的ldof因子;

异常数据判定模块,其用于根据top-n原则,输出最大的n个ldof因子,这n个ldof因子对应的n个数据对象被判定为异常数据。

本实施例结合了卡方检验和spark大数据平台,有效地降低算法的计算成本,并能基于spark大数据平台可以处理海量数据,既能有效地检测异常数据,并且还能很好的处理海量数据。

在另一实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如图1所示的基于卡方检验和ldof算法的入侵检测方法中的步骤。

在另一实施例中,提供了一种spark平台,包括分布式服务器集群,每个分布式服务器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如图1所示的基于卡方检验和ldof算法的入侵检测方法中的步骤。

本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1