一种数据不平衡场景下的恶意流量检测方法与流程

文档序号:25522479发布日期:2021-06-18 20:10阅读:275来源:国知局
一种数据不平衡场景下的恶意流量检测方法与流程

本发明涉及网络信息安全技术领域,具体为一种数据不平衡场景下的恶意流量检测方法。



背景技术:

通常情况下,从现实场景中获取的数据大多都是不平衡的,少数类的样本数量往往远少于多数类样本,然而属于少数类的样本却往往具有更大的意义,例如欺诈检测、故障诊断以及网络入侵检测等领域,在机器学习领域类别不平衡问题一直受到研究人员们的关注,因此需要对该类恶意流量进行检测,针对该问题发展出了多种解决方法,主要可以分为四类:数据抽样、代价敏感学习、决策边界移动和集成学习方法,但是当传统的学习算法应用于不平衡数据集时,少数类很容易发生错误分类。

目前,基于规则的恶意流量检测方法由于其在检测效果、检测效率以及人工干预上的局限性,很难适用于现如今海量网络数据的情况,随着人工智能技术的发展,越来越多的人使用机器学习或深度学习方法进行恶意流量检测,目前在恶意流量检测领域所用的训练数据可以分为正常流量样本和恶意流量样本,然而在实际网络环境中,恶意流量占比很小,因此存在着类别不平衡的问题,使用一般的学习算法进行分类时,恶意流量的召回率较低,对少数类的区分能力不足,在正负样本不平衡情况下,并不能保证恶意流量分类的准确性。



技术实现要素:

(一)解决的技术问题

针对现有技术的不足,本发明提供了一种数据不平衡场景下的恶意流量检测方法,解决了现有的恶意流量检测方法中,使用一般的学习算法进行分类时,恶意流量的召回率较低,对少数类的区分能力不足,在正负样本不平衡情况下,并不能保证恶意流量分类的准确性的问题。

(二)技术方案

为实现以上目的,本发明通过以下技术方案予以实现:一种数据不平衡场景下的恶意流量检测方法,包括以下操作步骤:

s1、获取训练集和测试集:通过手动收集各个恶意软件样本的流量作为负样本,并在不运行恶意软件的相同环境下收集正常流量作为正样本,或是直接采用标准的公开数据集,将对正常流量和恶意流量构建特征向量,划分出测试集和训练集;

s2、对恶意流量进行k-means聚类:将s1中收集的恶意流量作为输入样本,然后通过k-means聚类将输入样本分为k组;

s3、分配要生成的样本数量:根据预先设置的过采样目标,为各个类簇分配要生成的样本数,然后为少数类样本占比较高的类簇分配较少的样本数,将更多样本分配给少数样本稀疏分布的类簇;

s4、使用smote进行过采样:使用smote进行对s3中分配好的样本进行过采样,根据指定的用于构建合成样本的簇内最近邻居数进行插值,进而生成新样本;

s5、训练基于g-mean改进过的elm分类器:使用新构建的数据集训练g-mean改进过的elm分类器;

为了改善经典的elm算法在不平衡数据学习中的不足,基于g-mean定义了新的损失函数,提出了新的elm算法,其中g-mean是广泛应用于不平衡数据学习中的评价度量指标,其定义如下:

假设给定训练集φ={(xi,ti),ti∈rm,i=1,2,…,n}(2);

其中φ中有m类,xi是一条流的特征向量,ti∈rm是其对应的标签,式(1)中vj是在第j类的元素中正确分类的元素的数量,vj是第j类样本的总量,训练集φ也可以写成其中φj代表第j类,因此每类的训练误差定义为:

其中ξ(x)表示第j类中样本x的分类误差,ξ(x)定义为ξ(x)=h(x)β-t(x),其中t(x)是样本x对应的标签,h(x)是隐藏层的输出,综上,可将传统的elm的损失函数写作:

从式(4)可以看出,训练误差越小,分类精度越好,考虑到使用g-mean作为评价指标,可以重新设计损失函数,使其更适用于样本不平衡情况,根据ξj的定义可知:

进而有

根据式(1)可以得出:

由式(5)可以得出,每个类别的训练误差乘积越小,g-mean越大,因此最大化g-mean等价于最小化每个类别训练误差乘积,即因此可以将基于g-mean的elm的代价函数定义如下:

将式(3)带入可得:

最后将新的优化目标定义如下:

为了得到lgelm的最小值,需要通过梯度下降等迭代优化算法对式(8)进行求解,最后通过训练数据对改进的elm模型进行训练,得到训练好的分类模型后对测试集进行测试,并使用g-mean作为评价分类性能的值;

s6、对测试集进行预测:输入测试集,使用训练好的elm分类器对所有测试样本进行分类,并使用g-mean作为评价指标。

进一步地,所述s1中对于数据集,根据四元组将其划分为不同的流,并提取每条流的统计特征,与端口信息合并作为总特征,对于分类型特征需要使用one-hot编码将其转换为多维向量,对于连续性特征需要对其进行标准化处理,最后得到数据集φ={(xi,ti),ti∈rm,i=1,2,…,n},其中xi是每条流的特征向量,ti是xi对应的标签。

进一步地,所述s1中采用标准的公开数据集,如kdd99、iscx_vpn2016等,这些数据集被广泛用作各类算法的评估,并经过了众多研究人员的检验且标注完善。

进一步地,所述s2中聚类是为了根据恶意流量的特征向量的数据分布情况将其分为k个类簇,考察各个类簇内样本的紧凑程度和不同类簇间的分离程度。

进一步地,所述s4中使用使用smote进行过采样时,需要注意的是,smote原本定义的插值公式不适用于分类型特征,对于分类型特征采取复制的策略。

进一步地,所述s5中为了最小化优化过的损失函数,可以采用梯度下降的方式进行模型的训练,其中根据式(8)可得lgelm相对于β的导数为:

(三)有益效果

本发明具有以下有益效果:

(1)、该数据不平衡场景下的恶意流量检测方法,通过使用四元组来标识每个网络流,提取每条流的统计特征并做标准化处理,将端口信息、统计特征联合作为特征向量,构成训练集和测试集,在数据层面,根据恶意流量具有多个类别的特性,使用ir值来衡量数据的不平衡程度,针对少数类,通过应用kmeanssmote算法,对少数类进行重采样,进而增加少数类的样本数,在算法层面,通过将k-means聚类算法与smote过采样技术相结合,其设法通过仅在安全区域进行过采样来避免产生噪声,重点放在类别之间的不平衡和类别内部的不平衡,通过增加少数样本稀疏区域的少数类样本来对抗少数类样本分散的问题,扩充了少数类的样本量,为分类模型提供良好的训练数据;

(2)、该数据不平衡场景下的恶意流量检测方法,通过在类别不平衡情况下同时考虑数据层面和算法层面,旨在确保恶意流量检测准确率的同时,减少错分情况,可以同时适用于二分类或是多分类问题,很好的改善了一般的学习算法进行分类时,恶意流量的召回率较低,对少数类的区分能力不足的问题,能够在正负样本不平衡情况下,保证恶意流量分类的准确性。

当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。

附图说明

图1为本发明提供的一种数据不平衡场景下的恶意流量检测方法流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明的描述中,需要理解的是,术语“开孔”、“上”、“下”、“厚度”、“顶”、“中”、“长度”、“内”、“四周”等指示方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的组件或元件必须具有特定的方位,以特定的方位构造和操作,因此不能理解为对本发明的限制。

请参阅图1,本发明实施例提供一种技术方案:一种数据不平衡场景下的恶意流量检测方法,包括以下操作步骤:

s1、获取训练集和测试集:通过手动收集各个恶意软件样本的流量作为负样本,并在不运行恶意软件的相同环境下收集正常流量作为正样本,或是直接采用标准的公开数据集,将对正常流量和恶意流量构建特征向量,划分出测试集和训练集;

s2、对恶意流量进行k-means聚类:将s1中收集的恶意流量作为输入样本,然后通过k-means聚类将输入样本分为k组;

s3、分配要生成的样本数量:根据预先设置的过采样目标,为各个类簇分配要生成的样本数,然后为少数类样本占比较高的类簇分配较少的样本数,将更多样本分配给少数样本稀疏分布的类簇;

s4、使用smote进行过采样:使用smote进行对s3中分配好的样本进行过采样,根据指定的用于构建合成样本的簇内最近邻居数进行插值,进而生成新样本;

s5、训练基于g-mean改进过的elm分类器:使用新构建的数据集训练g-mean改进过的elm分类器;

为了改善经典的elm算法在不平衡数据学习中的不足,基于g-mean定义了新的损失函数,提出了新的elm算法,其中g-mean是广泛应用于不平衡数据学习中的评价度量指标,其定义如下:

假设给定训练集φ={(xi,ti),ti∈rm,i=1,2,…,n}(2);

其中φ中有m类,xi是一条流的特征向量,ti∈rm是其对应的标签,式(1)中vj是在第j类的元素中正确分类的元素的数量,vj是第j类样本的总量,训练集φ也可以写成其中φj代表第j类,因此每类的训练误差定义为:

其中ξ(x)表示第j类中样本x的分类误差,ξ(x)定义为ξ(x)=h(x)β-t(x),其中t(x)是样本x对应的标签,h(x)是隐藏层的输出,综上,可将传统的elm的损失函数写作:

从式(4)可以看出,训练误差越小,分类精度越好,考虑到使用g-mean作为评价指标,可以重新设计损失函数,使其更适用于样本不平衡情况,根据ξj的定义可知:

进而有

根据式(1)可以得出:

由式(5)可以得出,每个类别的训练误差乘积越小,g-mean越大,因此最大化g-mean等价于最小化每个类别训练误差乘积,即因此可以将基于g-mean的elm的代价函数定义如下:

将式(3)带入可得:

最后将新的优化目标定义如下:

为了得到lgelm的最小值,需要通过梯度下降等迭代优化算法对式(8)进行求解,最后通过训练数据对改进的elm模型进行训练,得到训练好的分类模型后对测试集进行测试,并使用g-mean作为评价分类性能的值;

s6、对测试集进行预测:输入测试集,使用训练好的elm分类器对所有测试样本进行分类,并使用g-mean作为评价指标。

所述s1中对于数据集,根据四元组将其划分为不同的流,并提取每条流的统计特征,与端口信息合并作为总特征,对于分类型特征需要使用one-hot编码将其转换为多维向量,对于连续性特征需要对其进行标准化处理,最后得到数据集φ={(xi,ti),ti∈rm,i=1,2,…,n},其中xi是每条流的特征向量,ti是xi对应的标签。

所述s1中采用标准的公开数据集,如kdd99、iscx_vpn2016等,这些数据集被广泛用作各类算法的评估,并经过了众多研究人员的检验且标注完善。

所述s2中聚类是为了根据恶意流量的特征向量的数据分布情况将其分为k个类簇,考察各个类簇内样本的紧凑程度和不同类簇间的分离程度。

所述s4中使用使用smote进行过采样时,需要注意的是,smote原本定义的插值公式不适用于分类型特征,对于分类型特征采取复制的策略。

所述s5中为了最小化优化过的损失函数,可以采用梯度下降的方式进行模型的训练,其中根据式(8)可得lgelm相对于β的导数为:

工作原理:

s1、获取训练集和测试集:通过手动收集各个恶意软件样本的流量作为负样本,并在不运行恶意软件的相同环境下收集正常流量作为正样本,或是直接采用标准的公开数据集,将对正常流量和恶意流量构建特征向量,划分出测试集和训练集;

s2、对恶意流量进行k-means聚类:将s1中收集的恶意流量作为输入样本,然后通过k-means聚类将输入样本分为k组;

s3、分配要生成的样本数量:根据预先设置的过采样目标,为各个类簇分配要生成的样本数,然后为少数类样本占比较高的类簇分配较少的样本数,将更多样本分配给少数样本稀疏分布的类簇;

s4、使用smote进行过采样:使用smote进行对s3中分配好的样本进行过采样,根据指定的用于构建合成样本的簇内最近邻居数进行插值,进而生成新样本;

s5、训练基于g-mean改进过的elm分类器:使用新构建的数据集训练g-mean改进过的elm分类器,最后通过训练数据对改进的elm模型进行训练,得到训练好的分类模型后对测试集进行测试,并使用g-mean作为评价分类性能的值;

s6、对测试集进行预测:输入测试集,使用训练好的elm分类器对所有测试样本进行分类,并使用g-mean作为评价指标。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。

以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。

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