基于rfe-dagmm的高维数据异常检测方法
技术领域
1.本发明属于大数据异常检测领域,更进一步涉及的是一种基于rfe-dagmm的高维数据异常检测方法。
背景技术:
2.随着目前互联网技术的蓬勃发展和网络规模的日益扩大,几乎没有人能够脱离网络的掌控,网络技术的不断更新给人们带来方便的同时也带来了很多的风险,大部分的企业和部门都需要网站运营,而潜在的网络风险会给企业和部门甚至政府带来巨大的安全隐患,例如,ddos攻击、网络扫描、网络蠕虫病毒、恶意下载、黑客攻击等。而网络流量的数据类型是非常复杂的,包含多个标签,并且都属于高纬数据且数据量庞大,能够对这种高维数据进行异常检测来保障网络安全以及数据安全是非常必要的。
3.在一般情况下,网络流量是有规律的,通过网络流量可以反映出网络的实时情况,及时发现网络流量中的异常是预防网站入侵和保护网络安全的一个重要途径。但是,传统的数据异常检测方法的检测精度越来越低,误报率越来越高,这是因为现在的大部分数据的维度越来越高,数量越来越庞大,在进行异常检测的过程中噪音以及无关信息的影响会导致检测时间长,分析效果差等。所以通过特征选择和降维的方式对高维数据进行处理,是提高检测精度的关键。
4.传统的异常检测方法一般包含支持向量机 (support vector machine, svm)算法、随机森林、孤立森林、gmm(高斯混合模型)、dagmm(深度自动编码高斯混合模型)、lstm(长短期记忆网络)等,但是这些算法在处理高维数据方面计算花费的时间复杂度较高,无法很好的进行多个特征处理,提取不到高维数据中的关键信息,导致检测精度较低,检测效率较差。目前通过深度神经网络的方式来进行异常检测相较于传统的方式有了较明显的提升,但是在检测精度和降低检测时长等方面还有待提升。
技术实现要素:
5.本发明的目的是提供一种基于rfe-dagmm的高维数据异常检测方法,以解决如何利用现有的资源针对高纬度且庞大的网络流量数据进行异常检测精度的提升以及检测时长的降低,来满足维护网站正常运营,保护网络安全的需求,对网络流量的异常进行实时监测,预防网络攻击,避免由网络安全问题所引发的经济损失以及安全隐患。
6.为了解决以上所述问题,本发明提出了一种新的高维数据异常检测方法,该方法通过rfe(递归特征消除)来进行特征选择,将高纬度数据中的重要特征进行提取,去除无关特征以及噪音,这样能够提高检测的精度以及降低训练时长,通过rfe对高维数据进行处理后通过深度自编码器对数据进行降维和重构,得到重构误差以及压缩后的低维度信息并输入到gmm中进行密度估计,采用端到端的方式对深度自编码器和高斯混合模型进行联合优化,能够有效减少重构误差,提升预测精度,最终测试的结果优于其中任何一个模型并提升了检测精度降低了训练时长。
7.其中包括:步骤1:我们选择了公开的高维数据异常检测数据集,对该数据进行预处理,采用数字特征归一化处理,使得处理后的数值处于[0,1]之间,归一化采用最大最小归一化方法。
[0008]
步骤2:将所述预处理完成的数据通过rfe进行特征选择,给定每个特征一个权重,通过所选择的基估计器进行训练,得到每个特征的排名,按照排名重新对特征进行排序,消除较差的特征,直至达到所指定的特征数目,将特征选择后的数据作为下一阶段的输入x’。
[0009]
步骤3:构建压缩网络,将x’输入到编码器中对高维数据进行降维得到zc, zc通过解码器进行重构得到x
’’
,计算重构误差得到zr将zc和zr结合为z作为下一阶段的输入。
[0010]
步骤4:构建估计网络,将z通过多层神经网络后输入到gmm(高斯混合模型)当中,使得自编码器与gmm模型一起进行密度估计,把得到的低维特征表示作为em算法(期望最大化算法)中e步骤的隐含变量,对其求极大似然估计值,然后最大化似然值。以此对模型进行训练计算gmm的各个参数,得到样本能量,计算完成后将样本能量进行输出。
[0011]
步骤5:设定阈值,阈值的设定是根据样本能量和数据比例来进行设定的,将样本能量大于阈值的样本判断视为异常,小于阈值的样本视为正常。
[0012]
步骤6:设置损失函数,对模型进行训练损失函数的制定有三个部分,其中包括重构误差、似然函数、以及防止矩阵不可逆的协方差矩阵。
[0013]
步骤7:通过构建好的模型对高维数据进行异常检测测试对模型进行测试,利用训练时学习的 gmm的参数,可以直接计算得出样本能量值,将所得到的样本能量通过设定的阈值来判断数据该条数据是否是异常数据,最终得出异常检测结果。
[0014]
进一步的,根据步骤2中的rfe特征选择方法所采用的基估计器是随机森林,首先把随机森林的n_estimators属性设置为41,建立41棵决策树,将rfe的步长设置为10,每次消除10个特征。然后通过训练随机森林的方式按照重要性进行排序,剔除排序最低的特征,将剩余的特征再次传入随机森林中进行训练,以此来进行迭代,消除无关特征或者较差特征。
[0015]
进一步的,根据步骤5中阈值的设定是根据样本能量以及数据比例所决定,其中所选数据集中有396743条正常数据,97278条异常数据;正常异常数据比为4:1,通过得出的样本能量按照从小到大进行排序,设定第80%分位,以此作为检测异常的阈值。
[0016]
更进一步的,根据步骤3中的压缩网络,采用的自编码器结构,它的优点是能够使得网络变为非线性结构,更好地还原输入。对三个隐藏层的维度设置分别为40、20、10,将高维数据压缩为维度为1的低维数据,然后将其重构,用余弦相似度和相对欧几里得距离的方法来计算重构误差。
[0017]
更进一步的,根据步骤4中估计网络的设定,是通过传入的重构误差与低维特征表示来一起进行密度估计,通过并行的方式解决了传统的以递归方式进行的先降维完成后再进行密度估计的方式所存在的陷入局部最优化问题,这样可以做到更好地利用低维特征中的重要信息,通过联合优化的方式来达到减少重构误差的效果。
[0018]
与现有的技术相比,本发明的提升和优势在于:对现有的高维数据异常检测方法
进行了创新,提出了一种专门用于高维数据异常检测的方法,通过特征选择和深度神经网络以及高斯混合模型相结合,以联合优化的方式对参数进行训练,提高了检测精度,降低了训练时长,提升了检测速度,例如适用于高纬度和多特征的网络流量数据的异常检测,以此来维护网络安全。
附图说明
[0019]
为了能够详细并且清晰的对本技术方案进行说明,下面将对实施例和其中所用到的技术以及相关数据用附图的形式进行介绍,对于本领域熟悉此方向的技术人员来说,并不仅局限于此说明书中所记载的实施例,该实施例只是在实验中结果较好的情况,并不局限于此。
[0020]
图1为本说明书实施例中所提到的基于rfe-dagmm的高维数据异常检测方法的流程图。
[0021]
图2为本说明书实施例中该实验的压缩网络的示意图。
[0022]
图3为本说明书实施例中估计网络示意图。
[0023]
图4为本说明书实施例中通过rfe进行特征选择排名后的像素图。
具体实施方式
[0024]
为了更加详细清晰的对本发明的技术和优点进行解释,下面结合附图对本发明的实施例和效果做进一步详细的描述。
[0025]
基于rfe-dagmm的高维数据异常检测方法,其总体结构框图如图1所示;以检测网络流量数据中的异常为例,通过下载公开的网络流量入侵检测数据集进行预处理,对处理后的数据通过rfe方法进行特征选择,消除无关特征,选出重要特征进行数据重组。将新的样本传入压缩网络中对高纬数据进行压缩和重构,得到低维信息和重构误差,将两者结合作为下一阶段估计网络的输入,估计网络通过gmm和多层神经网络进行联合优化,训练gmm参数并且减少了重构误差。在测试阶段,直接利用训练好的gmm参数来计算样本能量,通过预先设定的阈值来判断异常,得出测试结果并输出,其具体包括如下步骤。
[0026]
1.数据收集该方法使用的是kddcup99网络入侵检测公开数据集,该数据集中采集了九周的网络连续数据,其中包含正常数据和四种异常数据类型,每一条数据集中有41个特征(9个离散特征,其余为连续特征)和一条标签。但由于整个数据集数量庞大共有500万条计量,我们只选取了其中10%的数据作为实验的训练集和测试集,数据集为kddcup.data_10_percent,其中包含396743条正常记录,97278条异常记录。
[0027]
2.数据预处理首先对该数据集的标签进行转化,把正常标签用0代替,异常标签用1代替,然后对其他特征进行one-hot编码,经过编码后有119个总特征。为了将各个特征处于相同量级,避免精度损失,我们采用特征归一化处理,使得数据向量落在[0,1]之间,采用的是min-max标准化(min-max normalization),其公式如下:
。
[0028][0028]
代表样本的值,和分别代表所在列的最大值和最小值,代表归一化后的样本的值。
[0029]
3.(步骤2)对样本数据进行特征选择;先取119个特征中的118个固定特征为x,剩余1个标签特征为y,构建一个随机森林,指定好随机森林中决策树的数量,将样本数据x传入到随机森林中计算变量的重要程度,对变量重新进行排序,每次消除排序最低的特征,直至达到最后所需要的特征数目,如图4所示,绘制了rfe按照重要性进行排名的像素图。然后将x与y进行拼接保存生成新的样本数据kdd_cup.npz作为模型训练和测试的数据集。
[0030]
需要说明的是,在进行特征选择时选用的是rfe的方法,rfe选用随机森林作为基估计器,因为随机森林在进行特征选择时有着准确率高、训练速度快。能够对特征进行很好的排序,选择重要特征的能力要更强。因此随机森林也是特征选择的热门算法,而rfe基于随机森林能够更好的选择特征,消除无关特征,提高检测精度。
[0031]
4.(步骤3)构建压缩网络,对数据进行降维和重构如图2所示为构建的压缩网络的模型结构,将rfe所处理的样本数据kdd_cup.npz记做x’,压缩网络采用的是autoencoder(自动编码器),在设定参数时有1个输入层,3个隐藏层,输入层的维度由上一阶段所进行处理的样本数据维度决定,隐藏层的维度分别设置为40、20、10,最终将数据压缩成一个1维的低维特征zc,在这里考虑到zc可以是多维的,所以采取了两个距离指标,故zc的维度为2,如公式1;然后对zc进行重构得到x
’’
,生成重构误差zr,如公式2;将zr与zc相结合生成z,如公式3;作为下一阶段估计网络的输入。
[0032]
公式1:。
[0033]
公式2: 。
[0034]
公式3: 。
[0035]
需要说明的是其中的f()函数代表的是重构误差函数,这里采用的是余弦相似度,如公式4和相对欧几里得距离如公式5;通过两个不同的角度来进行重构误差。将深度自编码器用到异常检测当中,是目前比较流行的方式之一,通过编码与解码来得到重构误差,将重构误差与设定的阈值相比较来进行异常的检测,但是,在编码结束后得到的低维数据表示再通过密度估计的方式来进行解码是很难知道应该如何保留哪些低维数据重要信息的,这两个相互独立的过程容易让模型陷入局部最优的情况,所以针对该缺点,dagmm模型将降维和密度估计同步进行,将zc中的重要信息以及重构误差zr中的重要信息直接作为下一阶段估计网络的输入,进行联合优化,以达到最优效果。
[0036]
公式4:。
[0037]
公式5: 。
[0038]
5.(步骤4)通过构建估计网络,进行联合密度估计如图3所示,估计网络是在gmm(高斯混合模型)框架下通过多层神经网络来估算样本概率值的网络,通过上一阶段z的输入,进行端到端与gmm的联合密度估计,如公式1;这样可以减少重构误差,解决降维操作与密度估计分步进行检测效果差的问题。通过em(期望最大化)算法来求解gmm中的参数,其中包括均值、协方差等,此方法将自编码器中得到的信息当做e步骤中的隐变量,通过m步对得到的参数进行估计,极大化似然函数e(z),如公式2;通过softmax函数,如公式3;得到样本的概率分布,得到参数后,可以计算样本能量,以此来与阈值进行判断,检测异常样本。
[0039]
公式1: 。
[0040]
公式2: 。
[0041]
公式3: 。
[0042]
在公式2中代表的是所选的第k个高斯模型的概率,f(k)函数如下,用于求解样本的概率密度,其中和分别代表gmm的方差和均值。
[0043]
。
[0044]
6.划分数据集,构造损失函数,对模型进行训练将数据集的异常样本和正常样本各抽取80%作为训练集,剩余作为测试集。构造的损失函数由三部分组成 ,分别是重构误差、似然函数以及防止矩阵不可逆的协方差矩阵,如公式1:因为损失函数中包含通过em算法得到的似然函数,当对损失函数进行优化时,相应的gmm参数也会发生变化,不断更新模型参数。
[0045]
在进行训练时,设置了10个epoch,每300个数据进行打印,最终loss值降到0.15左右。
[0046]
公式1:。
[0047]
公式1中和是数据的原参数,在多次实验中发现分别取值为0.1和0.005能够取得较好的效果。
[0048]
7.对模型进行测试测试时阈值的设定是根据训练数据的能量值以及数据比例所确定的,首先将训练时e(z)所得到的能量值按照从小到大进行排序,因为数据比例为正常:异常=4:1;故截取第80%分位的能量值作为检测阈值,能量值大于阈值的样本视为异常数据,能量值小于阈值的样本视为正常数据。将训练好的模型进行下载,测试结果包含四个属性,分别为accuracy(准确率)、 precision(精度)、recal(召回率)、lf-score,在测试结果中,通过rfe-dagmm方法得到的precision和accuracy分别为0.9510和0.9109,单独使用dagmm方法得到的precision和accuracy为0.8713和0.8155,可以看出在精度和准确率都有着明显提升。
[0049]
最终通过本方法对网络流量入侵数据进行检测,相较于之前传统的高维数据异常检测模型在精度和准确率方面有了明显提升,并且降低了训练时长,减少了训练次数,能够
更加快速的检测高维数据的异常,为高维数据的异常检测提供了一种新的思路。
[0050]
综上所述,尽管已经给出本发明的实施例,但这仅是本发明较好的实施例而已,并非是对本发明其他形式的限制,对于本领域的技术人员而言,对该方法进行技术内容的替换修改和变更和组合达到等同效果,这些方式仍属于本发明技术的保护范围内。