基于机器学习的粗细粒度混合网络异常检测方法及装置与流程

文档序号:23426348发布日期:2020-12-25 11:56阅读:183来源:国知局
基于机器学习的粗细粒度混合网络异常检测方法及装置与流程

本发明属于网络安全与机器学习技术领域,具体涉及一种基于机器学习的粗细粒度混合网络异常检测方法,还涉及一种基于机器学习的粗细粒度混合网络异常检测装置。



背景技术:

网络异常攻击检测是通过将偏离正常行为的网络数据认定为异常来发现未知攻击。传统的网络异常攻击检测包括构建概率分布模型、聚类、异常点检测以及近邻性计算等方法。随着计算机网络及物联网的不断发展与普及,联网设备也出现了爆发性增长,根据预测,到2020年全球联网设备数量将达到260亿,这对于传统的网络攻击检测手段提出了挑战。首先,大量的异构终端设备往往存在不同的安全漏洞,不仅难于管理,又极易受到干扰和恶意攻击,使得传统的网络攻击异常检测变得困难。其次,位于不同物理位置和网络层级的设备联网后,传统的网络安全边际被打破,攻击者可通过设备终端在不同位置发起不同程度的攻击,攻击点增多,使得检测难度增大。

异常检测大体上可分为基于统计学的方法和基于机器学习的方法两种。随着人工智能(ai)与机器学习(ml)方法在计算机视觉、自然语音处理和语音识别等科学领域中的广泛应用,基于数据驱动的ai和ml方法,利用其强大的数据挖掘能力,能够在无人为干预的情况下进行动态调整,有效解决当前异常检测所遇到的困难。但检测系统通常采用的svm、knn和神经网络等单一算法对训练集要求较高,且计算特征距离会消耗大量的运算成本,而网络大部分时间总处于正常状态,因此,对于所有时刻的网络数据都采用高准确率的细粒度检测是繁杂且没有必要的,尤其是随着网络数据量的激增,细粒度网络异常检测方法的计算成本也越来越高。



技术实现要素:

发明目的:为了解决单一检测方法准确度与计算成本难以平衡的问题,本发明提出一种基于机器学习的粗细粒度混合的网络异常检测方法及装置,该方法能够在保证准确率的情况下有效节约计算成本,提高检测效率。

为解决上述技术问题,本发明提供了一种基于机器学习的粗细粒度混合的网络异常检测方法,包括以下过程:

获取待检测的网络流量数据集;

对所述数据集进行粗粒度检测,得到粗粒度的检测结果d1;

计算检测结果d1中的异常占比,并将检测结果d1中的异常占比与第一预设阈值比较;

如果检测结果d1中的异常占比约等于预设阈值,则将检测结果d1作为网络异常检测结果;

否则,对检测结果d1进行粗细粒度混合检测,得到混合检测结果d2,作为网络异常检测结果。

进一步的,所述在获取待检测的网络流量数据集之后,还包括:

对数据集中的字符型特征进行数值型处理;

对数据集进行特征降维处理。

进一步的,所述对预处理后的数据集进行粗粒度检测,得到粗粒度的检测结果d1,包括:

将预处理后的数据集输入预先训练的孤立森林模型,得到粗粒度的检测结果d1。

进一步的,所述将预处理后的数据集输入预先训练的孤立森林模型,得到粗粒度的检测结果d1,包括:

将预处理后的数据集遍历粗粒度模型,计算每个样本的平均路径长度;

将每个样本的平均路径长度与预设的第一平均路径长度阈值比较;

若样本的平均路径长度小于第一平均路径长度阈值,则此样本被判为异常,否则判为正常,最终得到粗粒度的检测结果d1。

进一步的,所述检测结果d1中的异常占比约等于预设阈值,包括:

检测结果d1中的异常占比与预设阈值相差在1%以内。

进一步的,所述对检测结果d1进行粗细粒度混合检测,包括:

将检测结果d1中的异常占比与预设的第二平均路径长度阈值比较,所述第二平均路径长度阈值略大于第一平均路径长度阈值;

将检测结果d1中大于第二预设阈值的样本组成检测结果数据集d1,小于第二预设阈值的剩余样本组成细粒度待测数据集;

采用kmeans算法对细粒度待测数据集进行细粒度检测,获得检测结果数据集d2;

将检测结果数据集d1与d2中得到的检测结果合并,输出混合检测结果d2。

进一步的,所述采用kmeans算法对细粒度待测数据集进行细粒度检测,包括:

采用kmeans算法对细粒度待测数据集进行聚类,得到两个聚类中心;

两个聚类中心中选取平均路径长度较大的样本认为是正样本聚类中心,此类的所有样本划分为正常样本,反之,平均路径长度较小的样本认为是负样本聚类中心,此类的所有样本划分为异常样本。

相应的,本发明还提供了一种基于机器学习的粗细粒度混合的网络异常检测装置,包括:

数据集获取模块,用于获取待检测的网络流量数据集;

粗粒度检测模块,用于对预处理后的数据集进行粗粒度检测,得到粗粒度的检测结果d1;

比较分析模块,用于计算检测结果d1中的异常占比,并将检测结果d1中的异常占比与第一预设阈值比较;

粗细粒度检测模块,用于如果检测结果d1中的异常占比约等于预设阈值,则将检测结果d1作为网络异常检测结果;否则,对检测结果d1进行粗细粒度混合检测,得到混合检测结果d2,作为网络异常检测结果。

进一步的,还包括预处理模块,所述预处理模块用于在获取待检测的网络流量数据集之后,对获取的数据集进行预处理,包括:

对获取数据集中的字符型特征进行数值型处理;

对数据集进行特征降维处理。

进一步的,所述粗粒度检测模块中,对预处理后的数据集进行粗粒度检测,得到粗粒度的检测结果d1,包括:

将预处理后的数据集输入预先训练的孤立森林模型,得到粗粒度的检测结果d1。

与现有技术相比,本发明所达到的有益效果是:本发明采用粗细粒度混合的检测方式,通过粗粒度首先检测出大部分异常攻击,只有少部分或特殊情况才会采用细粒度检测方式来满足准确率要求,在节约计算成本的同时保证了准确率。

附图说明

图1为本发明方法流程图;

图2为粗细粒度混合检测方法流程图;

图3为kmeans聚类中心;

图4为本发明的一个实例测试结果。

具体实施方式

下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。

实施例1

本发明的一种基于机器学习的粗细粒度混合的网络异常检测方法,参见图1所示,包括:

获取待检测的网络流量数据集;

将所述数据集进行粗粒度检测(如预先训练的孤立森林模型),得到粗粒度的检测结果d1;

计算检测结果d1中的异常占比,并将检测结果d1中的异常占比与预设阈值比较;

如果检测结果d1中的异常占比约等于预设阈值,则将检测结果d1作为网络异常检测结果;

否则,对检测结果d1进行粗细粒度混合检测,得到混合检测结果d2,作为网络异常检测结果。

本发明先用粗粒度算法检测部分样本,充分利用粗粒度算法无需距离测量的特征以节约计算成本,再用细粒度算法对难以区分的样本进行测量,提高正确率。本发明解决了异常检测中准确率与运算成本难以权衡的问题,大多数情况下仅用粗粒度就能够判别出样本是否异常,直接输出结果;对于少部分无法准确判别的样本采用粗细粒度混合方法检测,以提高准确性。

实施例2

本发明中,粗粒度检测采用iforest或与其类似的算法,细粒度检测采用kmeans或与其类似的算法,实例来源于现有技术中kddcup99的数据集,kddcup99是数据挖掘与知识发现竞赛在1999年举行时所使用的数据集。分类器评估指标包括:精确率、准确率和召回率。

本发明的基于机器学习的粗细粒度混合网络异常检测方法,参见图1所示流程图,具体包括:

步骤100:获取数据集,并对数据集进行预处理。从预处理后的数据集中随机抽取数据作为训练集和测试集。

本实施例中数据集采用kddcup99数据集,此数据集内包括tcpdump网络连接和系统审计数据,仿真各种用户类型、各种不同的网络流量和攻击手段,使它就像一个真实的网络环境。数据集包括多条网络流量数据,每条网络流量数据包括多个不同特征。kddcup99数据集共包含41种特征,大致分为4类:tcp连接的基本特征、tcp连接的内容特征、基于时间的网络流量统计特征和基于主机的网络流量统计特征等。

对数据集进行预处理包括:

1)对数据集中的字符型特征进行数值型处理,转化为易于处理的数值型特征,以达到便于机器学习处理的目的。

本实例中的kddcup99数据集中协议类型、网络服务类型和网络连接状态这3个特征需要进行数值型处理。

例如一些协议特征原始数据中用的是诸如'tcp”udp”icmp'的字符表示的,该特征需要转换为’0”1”2’与字符特征形成对应。

2)对数据集进行特征降维处理。

主要是对特征值中的无关项进行删除,无关项主要包括特征值完全相同或者特征取值情况较少的特征,无关项可以理解为无判断异常参考价值的特征。

特征完全相同,就是该特征不管在哪条网络流量数据中都是相同的,显然不具备鉴别异常的能力,故属于无关项;

特征取值情况较少,指该特征在数据集中只有不超过20条记录是有非0特征值,绝大多数记录中都是0值,显然也不具备鉴别异常的能力,故属于无关项。

最终将包含41种特征的kddcup99数据集经过特征降维处理后,特征减少至36种。

然后随机从经过预处理的kddcup99数据集中抽取n条数据(网络流量数据)作为训练集,网络中通常情况下的一般异常占比为r0,此异常占比r0取值根据所需要检测的网络状况确定,一般网络异常占比r0取经验值2.3%。

随机从预处理后的数据集中抽取测试集。

步骤200:利用训练集训练孤立森林模型,基于训练好的孤立森林模型对测试集进行检测,获得粗粒度的检测结果d1。

孤立森林算法通过设置单一阈值从而判断异常样本的算法,将此类算法称为粗粒度检测算法,无需进行特征距离计算。

利用训练集训练生成孤立森林模型i1,考虑到沼泽和掩蔽效应,需减小子采样集,即每棵树的样本数量,因为沼泽和掩蔽效应是由于训练时异常数据过多造成的,有些树可能异常数约等于甚至大于正常数。因此首先对于训练集采用随机取样,随机打乱成t个子采样集,每个子采样集大小为|x|,即每棵树采用|x|个子样本,共构建t棵树,t与|x|的乘积为训练集样本总数n。

为进一步削减计算成本,对树高进行限定,计算公式如下:

l=ceiling(log2|x|)

其中,树高l由子采样集的大小决定,反映的是平均树高,ceiling为向上取整函数。

将测试集遍历粗粒度模型i1,当测试样本终止于树外部节点时,表示遍历结束,此时根节点到终止节点高度记为e,终止节点包含的样本个数记为x,e与x的和记为a。将a代入c(a)计算每个测试样本在每棵中的平均路径长度,公式如下:

其中,h(a-1)为调和数,其值可被估计为ln(a-1)+γ,γ为欧拉常数。

设置平均路径长度阈值k1(为经验值,一般取0.4-0.6),若测试样本的平均搜索长度小于阈值k1,则此测试样本被判为异常,否则判为正常。

训练好的孤立森林模型对测试集进行检测,获得粗粒度的检测结果数据集d1。d1是测试集每个测试样本打上检测标签的数据集。

步骤300:计算检测结果数据集d1中的异常占比r1,并与当前网络中通常情况下的一般异常占比r0进行比较:

若r1与r0相差在1%以内认为是约等于(r1≈r0),转步骤400。

若r1比r0大超过1%(r1>>r0),表明异常占比高,转步骤500报警;异常占比高说明可能受到了入侵。当异常占比高时,进行粗细粒度混合检测的主要目的是:精确检测出每条流量数据的情况,是正常还是异常,这样可以再次确认此次入侵行为,减少误报的可能性;可以得到更加准确的检测结果,便于事后分析入侵的来源。

否则,表明异常占比低,当异常占比低时,说明此时的网络状况与平时不同,需要进行进一步的细粒度检测,确认没有异常漏报的发生。转步骤600处理。

步骤400:视当前网络状况为正常,直接输出步骤200的粗粒度检测结果数据集d1作为网络流量异常检测结果;

步骤500:视当前网络状况为异常,进行异常报警,包括输出粗粒度检测异常占比r1,将测试集保存为异常数据集。并转步骤600对异常数据集进行粗细粒度混合检测以分析其具体的异常情况;

步骤600:分为粗粒度检测与细粒度检测两部分。

粗细粒度混合检测参见图2所示,具体处理过程包括:

步骤602,设置阈值k2对步骤200粗粒度检测结果数据集d1进行粗粒度检测,将阈值k2设置成略大于k1,具体差值需要经验确定,例如0.1左右。判断数据集d1中样本的平均路径长度是否大于阈值k2。

步骤603,因为进行细粒度检测时需要数量相当的正负样本,需要设置新的阈值k2来扩大正样本数目。测试集中,m条数据绝大部分平均路径长度大于阈值k2,被检测为正常,其中只出现了极少量的负样本被错判为正的情况。根据设置的阈值k2进行粗粒度检测,大于阈值k2的样本被认定为正常,这些正常样本组成检测数据集d1。小于阈值k2的剩余样本需进行细粒度检测,将这些剩余待测样本所组成的数据集称为细粒度待测数据集。

步骤604,由于kddcup99数据集中各特征所处的量级不同,采用距离测量的细粒度检测方法处理前需要进行正则化或归一化统一量纲。即进行细粒度检测前,需对细粒度待测数据集进行正则化处理,正则化具体过程为,对每个样本计算其p-范数,然后对该样本中每个特征均除以该范数。

步骤605,采用kmeans算法对正则化后的细粒度待测数据集进行细粒度检测。

kmeans算法初次运算随机选取两个样本作为聚类中心,而后计算细粒度待测数据集中每个样本到这两个聚类中心的距离,将样本归于与其距离较近的聚类中心,故将细粒度待测数据集化为两类,通过对于聚类中心的不断迭代,最终找到合适的一组聚类中心使得分类结果不再变化,此时所经过的迭代次数记作最大迭代次数。

此时,两个聚类中心将细粒度待测数据集划分为正常与异常两类,两个聚类中心中选取平均路径长度较大的样本认为是正样本聚类中心,此类的所有样本划分正样本数据,即正常样本。反之,平均路径长度较小的样本认为是负样本聚类中心,此类的所有样本划分负样本数据,即异常样本。

最终,细粒度待测数据集通过kmeans算法得到检测结果,此结果记作细粒度检测得到的检测结果数据集d2。

参见图3中行代表一个聚类中心,列代表对应特征的聚类坐标。

步骤700:将检测结果数据集d1与d2中得到的检测结果合并,输出混合检测结果d2。

检测结果数据集d1和d2中的数据都是带有标签的,即判断出了每个样本是正常还是异常,故两个数据集在这里整合为d2,d2则是对于d1整个数据集中样本最终的判别结果。完成对于测试集中所有样本的检测过程。

本发明的实例测试中,随机抽取了两个测试集来进行实例测试,两测试集样本数均为17710,记为测试集t1与测试集t2,异常占比均为2.4%。

异常检测本质上是分类问题,精确率、准确率、召回率是判断分类器好坏的基本指标。计算精确率、准确率、召回率,可以判断本发明方法的检测效果。图4为本发明的一个实例测试结果:

测试集t1结果:精确率为99.993,准确率为96.398,召回率为96.313;

测试集t2结果:精确率为99.988,准确率为96.606,召回率为96.533。

本发明中的粗细粒度检测均基于机器学习算法,机器学习算法能够高效处理大量数据集,适合应对数据量庞大的网络流量数据集。

经过以上步骤的训练和测试后,得到网络流量异常检测的具体方法(粗细粒度检测系统),将日常网络交互中采集的网络流量数据集进行以上步骤预处理后,可将数据集输入粗细粒度检测系统,得到当前网络活动的异常检测结果。

步骤800,获取待检测的网络流量,对网络流量进行以上步骤处理,获得网络流量的检测结果。

本发明的粗粒度检测采用无监督学习,将少量异常与大量正常数据进行区分,一方面对训练样本要求低,另一方面通过设置单一阈值即可将绝大多数平均路径较短的样本判断为正常,复杂度和内存要求度低,节省了算力,提高了检测速度。

本发明的细粒度检测算法是基于样本间的距离测量对样本进行区分聚类,通过计算每个样本间的距离,相较于粗粒度检测能够得到更好、更精确的局部最优解,采用细粒度检测可提高正确率。

先用粗粒度检测区分出大量正常度较高的正样本,削减正样本数量,使正负样本数量差距得以缩小,同时隔离了离群点,使数据集分布差异变小;再采用细粒度检测,可有效改善检测效果,实现检测成本与检测效果的良好折中。

实施例3

相应的,本发明的一种基于机器学习的粗细粒度混合的网络异常检测装置,包括:

数据集获取模块,用于获取待检测的网络流量数据集;

粗粒度检测模块,用于对所述数据集进行粗粒度检测,得到粗粒度的检测结果d1;

比较分析模块,用于计算检测结果d1中的异常占比,并将检测结果d1中的异常占比与第一预设阈值比较;

粗细粒度检测模块,用于如果检测结果d1中的异常占比约等于预设阈值,则将检测结果d1作为网络异常检测结果;否则,对检测结果d1进行粗细粒度混合检测,得到混合检测结果d2,作为网络异常检测结果。

还包括预处理模块,所述预处理模块用于在获取待检测的网络流量数据集之后,对获取的数据集进行预处理,包括:

对获取数据集中的字符型特征进行数值型处理;

对数据集进行特征降维处理。

进一步的,所述粗粒度检测模块中,对预处理后的数据集进行粗粒度检测,得到粗粒度的检测结果d1,包括:

将预处理后的数据集输入预先训练的孤立森林模型,得到粗粒度的检测结果d1。

本装置中各模块的功能实现,参见实施例1和实施例2中详细描述的实现过程。

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

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

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

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

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。

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