一种基于深度学习的流量分类方法与流程

文档序号:16544370发布日期:2019-01-08 20:44阅读:788来源:国知局
一种基于深度学习的流量分类方法与流程

本发明涉及网络通信技术和深度学习领域,具体涉及一种基于深度学习的流量分类方法。



背景技术:

随着网络技术的快速发展以及互联网用户数量的迅速增长,导致互联网数据流量持续增长。各行各业以及个体用户每天都会产生成千上万条网络信息流量,例如文件传输、语音通话、网络游戏等,新的应用模式和需求也不断出现,造成带宽消耗急剧增加、服务质量难以保证、安全问题增多等问题,互联网中每个应用都有自己的流量行为特征,通过其特征对网络流量进行分类,以便标识并采取相应的措施,可以提高互联网的运行效率和安全性,以便最大限度满足用户需求。

网络流量指的是在一个特定时间段内,一个节点(如计算机、手机、路由器等)收到或发送的具有相同五元组(源ip地址、目的ip地址、源端口号、目的端口号和协议类型)的单向数据包。只要数据包中五个要素有一个不相同,它们就不属于同一条流。在其基础上,网络流量分类指的是对流按照其应用层的应用类型(如www、p2p等),对网络中存在的流进行分类。目前存在的流量分类方法主要分为三种:基于端口的流量分类方法、基于载荷的流量分类方法以及基于机器学习的流量分类方法。

基于端口的流量分类方法通过数据包包头中的端口号来区分不同的网络应用类型。在iana(internetassignnumberauthority)中进行了注册的应用层协议都有着对应的端口号。基于端口的流量分类就是通过分析数据包中传输层的端口号,再将其与公认的端口号进行匹配确认其应用层的协议类型。但是随着网络技术的发展,新型网络应用(如p2p)都采用随机端口的技术来进行数据传输,导致基于端口的流量分类方法准确率逐渐降低。

基于载荷的流量分类方法通过检查报文内容进行分类,在很多应用层协议的报文中,存在可以标识这些应用的特定串模式,只要能够找出每种应用的特殊模式,在一条流的内容中检测,就可以对一条流进行标识。该方法准确率高,但是报文内容在很多情况下是不被允许读取的,而且该方法复杂读高,资源消耗也大。

基于机器学习的流量分类方法不依赖匹配协议端口或解析协议内容来识别流量,它利用流量在传输过程中表现出来的流的各种统计特征区别网络应用。虽然基于机器学习的流量分类方法解决了上面两个分类方法存在的问题,但是这种方法依然面临一些需要解决的问题,如高难度的特征设计,机器学习在特征的选取上需要手工选取,特征选取的好坏,受到经验和运气的限制。

针对日益增加的流量需求,为了最大限度满足用户需求,解决现有的流量分类准确率低、资源消耗大、特征难以选取等问题,研究设计一种更加合理的流量分类策略是提高互联网的运行效率和安全性的前提。



技术实现要素:

本发明为了克服传统基于机器学习流量分类的不足,提出了一种基于深度学习的流量分类方法。该方法结合深度学习在特征学习方面的优势,利用隐藏层自动从数据集提取特征,并不断优化的特点,相比于传统的基于机器学习流量分类方法,该方法不但具备较高的准确性还降低了模型设计的难度。

本发明解决技术问题所采用的技术方案如下:一种基于深度学习的流量分类方法,该方法包括如下步骤:

(1)将流量特征数据集分为训练集和测试集,先对训练集中的少数类样本由过采样技术smote产生少数类的人工样本,并判断新生成的数据是否属于该少数类,若不属于则删除,然后将训练集中每条样本进行归一化处理与末尾补0操作;

(2)使用步骤(1)处理后的训练集对神经网络模型进行训练;

(3)将测试集进行归一化和补0处理,处理后输入到步骤(2)训练完成后的模型中,输出流量的类别。

进一步的,所述步骤(1)具体如下:

(1)对于训练集,判断是否为少数类样本,对于少数类中每一个样本x,以欧氏距离为标准计算它到少数类样本集中所有样本的距离,得到其k近邻,不是少数类样本的直接到步骤(5);

(2)根据样本不平衡比例设置一个采样比例以确定采样倍率n,对于每一个少数类样本x,从其k近邻中随机选择若干个样本,组成集合xn;

(3)对于每一个随机近邻样本分别与样本x按照构建新的样本x’;

(4)将每个新生成的数据以欧式距离为标准计算它到所有样本的距离,得到其k邻近,若其k邻近的多数类不是生成该数据的少数类,则删除该数据;

(5)将训练集x中每条样本按公式进行归一化处理,公式为

(6)对训练集中单个样本末尾进行补0操作,填充样本特征序列。

进一步的,所述神经网络模型采用lenet-5模型。

进一步的,所述lenet-5模型通过以下方法训练得到:

(1)训练集x,单个样本是一个二维矩阵;

(2)根据计算当前卷积层的特征,其中表示第l层的第j个输出,mj表示第j个卷积核对应的卷积窗口,表示第l-1层的第i个输出,表示第l层第ij个卷积核,表示第l层第j个偏置量,f(·)为激活函数;

(3)根据在池化层对输入特征采样降低维度,表示第l层的第j个输出,表示第l层的第j个权值,down(·)表示次采样函数;

(4)在全连接层将输入的二维特征转换成一维特征,并在其后面加入dropout,对神经网络单元,按照设定的概率将其暂时从网络中丢弃;

(5)根据将学习到的特征进行分类,其中yi表示xi对应的概率,xi表示第i个输出,xj表示第j个输出;

(6)使用yi与实际标签yi’计算损失函数优化神经网络参数,训练得到lenet-5模型。

与现有技术相比,本发明的有益效果如下:使用smote方法增大训练数据集样本,对新生成的数据集进行k邻近,能减少错误数据生成的可能,能保证对各类流量的识别准确度,并有效防止模型过拟合现象的产生,构建具有多个隐藏层的神经网络模型,通过训练数据,能自动学习有用的特征,提高了流量分类的准确性,并大大降低了模型设计的难度。

附图说明

图1为总体结构图;

图2为样本处理流程图;

图3为lenet-5模型图。

具体实施方式

下面结合附图详细说明本发明。

针对现有的基于机器学习的流量分类方法,本发明尝试将深度学习应用到流量分类。利用神经网络隐藏层自动从数据集提取特征,并不断优化的特点,利用数据集训练深度学习模型,确定模型的参数,将流量特征输入已经训练好的模型后,模型能够输出流量的类型,该方法不但具备较高的准确性还降低了模型设计的难度。

本发明提供的一种基于深度学习的流量分类方法在处理训练数据集上利用smote采样技术,当训练数据集每类样本不在同一数量级上时,相比于传统的过采样技术,传统的过采样数据集中会反复出现相同的样本,从而导致过拟合,smote采样技术可以解决这个问题。

如图1所示,本发明提供一种基于深度学习的流量分类方法,该方法包括如下步骤:

(1)将流量特征数据集分为训练集和测试集,先对训练集中的少数类样本由过采样技术smote产生少数类的人工样本,并判断新生成的数据是否属于该少数类,若不属于则删除,然后将训练集中每条样本进行归一化处理与末尾补0操作;

(2)使用步骤(1)处理后的训练集对神经网络模型进行训练;

(3)将测试集进行归一化和补0处理,处理后输入到步骤(2)训练完成后的模型中,输出流量的类别。

如图2所示,本发明选取moore数据集作为训练集和测试集,数据集中每条流量数据包含248个流量特征,一共分为十个流量类别:www、mail、bulk、database、services、p2p、attack、muitimedia、interactive、game,每类中可能包含多种应用,根据qos等级重新划分为moore数据集,首先删除不需要的attack类,然后将剩下的九类按其所属的qos等级进行分类,得到的新数据集包含四类:背景类:bulk、mail;交互类:www、database、p2p、interactive、game;流类:muitimedia;会话类:services。且由于moore数据集总样本数低于百万,属于小数据集,一般将训练集和测试集划为7:3。

对于训练集中的少数样本采用smote方法进行扩充,使其在数量级上与多数样本保持一致,并判断新生成的数据是否属于该少数类,若不属于则删除,再对每个样本进行归一化处理,由于卷积神经网络输入格式为n×m的二维矩阵,对每条样本末尾进行补0操作使其转化为16×16的二维矩阵;对多数类的样本则直接进行归一化和补0处理;具体如下:

(1)对于训练数据集,判断是否为少数类样本,对于少数类中每一个样本x,以欧氏距离为标准计算它到该少数类样本集中所有样本的距离,得到其k近邻,不是少数类样本的直接到步骤(5);

(2)根据样本不平衡比例设置一个采样比例以确定采样倍率n,对于每一个少数类样本x,从其k近邻中随机选择若干个样本,组成集合xn;

(3)对于每一个随机近邻样本分别与样本x按照公式构建新的样本x’,公式为

(4)将每个新生成的数据以欧式距离为标准计算它到所有样本的距离,得到其k邻近,若其k邻近的多数类不是生成该数据的少数类,则删除该数据。

(5)将x中每条样本按公式进行归一化处理,公式为

(6)对数据集中单个样本末尾进行补0操作,填充样本特征序列。

如图3所示,神经网络模型采用lenet-5模型,该训练过程包含如下步骤:

(1)训练集x,单个样本是一个二维矩阵;

(2)根据计算当前卷积层的特征,其中表示第l层的第j个输出,mj表示第j个卷积核对应的卷积窗口,表示第l-1层的第i个输出,表示第l层第ij个卷积核,表示第l层第j个偏置量,f(·)为激活函数;

(3)根据在池化层对输入特征采样降低维度,表示第l层的第j个输出,表示第l层的第j个权值,down(·)表示次采样函数;

(4)在全连接层将输入的二维特征转换成一维特征,并在其后面加入dropout,对神经网络单元,按照设定的概率将其暂时从网络中丢弃;

(5)根据将学习到的特征进行分类,其中yi表示xi对应的概率,xi表示第i个输出,xj表示第j个输出;

(6)使用yi与实际标签yi’计算损失函数优化神经网络参数,训练得到lenet-5模型。

设置lenet-5模型的一些超参数:迭代次数为10、批次大小为64、学习率为0.001、c1卷积层卷积核的数量和卷积核的大小为16个3×3、s2池化层采样窗口为2×2、c3卷积层卷积核的数量和卷积核的大小为32个5×5、s4池化层采样窗口为2×2、c5为256个4×4卷积核的全连接层,dropout值为0.5,输出层为一个四类的softmax分类器。将训练集输入lenet-5模型,训练模型,优化参数。

模型训练完成后,将测试集进行归一化和补0处理,并输入已经训练好的lenet-5模型中,模型能够输出其分类结果。最后模型分类结果的准确率为:背景类为99.2852%,流类为99.7737%,交互类为98.8439%,会话类为99.3651%。

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