基于小波变换的网络流量的建模与预测
网络流量能直接反映网络性能的好坏,网络流量的建模与预测对于大规模网络的规划设计、网络资源管理以及用户行为的调节等方面都具有积极意义。本课题首先介绍了网络流量的特征,在分析了小波理论的基础上提出了一种基于小波变换的网络流量预测模型。该模型采用小波分解把网络流量数据分解成小波系数和尺度系数,即高频系数和低频系数,将不同频率成分的系数单支重构为高频流量分量和低频流量分量。本课题,我们通过网络流量采集软件来采集网络流量,网络流量的单步预测这些实验的结果验证了本文提出的预测模型的有效性和优越性。
1.1 课题研究背景和研究意义
随着计算机网络的迅速发展,目前的网络规模极为庞大和复杂,因此发生各种问题的可能性也越来越大,使管理网络的难度也增大。传统的网络管理是在告警之后,解决潜在的问题,即为一种响应式的行为,这时候网络服务很可能己经受到影响。
如果在网络Qos管理和流量工程中,能够根据实际采集的网络流量观测值序列,建立该流量参数的正常行为,然后平稳化该序列,建立网络流量预测模型,对网络流量进行预测,并检测在将来超越阈值的可能性和发生时间。这样,在网络过载发生之前,可以预先采取防范措施,来保证网络的正常服务。所以研究较好的网络流量预测模型,并分析其性能,以及研究网络流量预测的实际应用,就显得尤为重要。
小波变换是二十世纪八十年代后期发展起来的应用数学分支。与经典的傅里叶分析相比较,小波分析有着许多显著的优点。小波分析是一种在时域和频域上同时具有良好的局部化特性的分析方法,因此,小波分析可以根据实际分析的需要,自适应地调节时频窗口,能够聚集到信号时域和频域的任意细节。由于小波固有的尺度特性,早在九十年代就己经有研究人员把小波应用到自相似过程的有效估计算法当中,如最大似然估计、回归技术分析畸M副。而后又有人把小波变换引入网络建模的研究中,从理论到实际构建了多种不同的小波模型,这些小波模型的建立进一步揭示了网络业务复杂的统计特性。
1.2 国内外研究性现状
自从网络业务流的自相似性被发现以来,人们为了系统全面的认识自相似网络业务流在各个方面的内在规律,一直在试图以模型结构化的方法描述自相似网络业务流,并进行预测。人工神经网络是一门高度综合的交叉学科,它的研究和发展涉及到神经生理科学、数理科学、信息科学和计算机科学等众多学科领域。它在信号处理、模式识别、目标跟踪、机器人控制、专家系统、组合优化、网络管理等众多领域的应用中获得了引人注目的成果。在预测领域,1987年Lapedes和Farber首先应用神经网络进行预测,开创了人工神经网络预测的先河。神经网络是一种非线性系统,它能够像人一样,通过学习(也即训练)来达到一定的功能,从而完成相应的任务。与传统的预测方法相比,人工神经网络预测不需要预先确定样本数据的数学模型,仅通过学习样本数据即可以进行相当精确的预测,因此具有许多优越性.如可以监视生产过程,能确定因果关系,其精度比一般统计方法高等。由于人工神经网络具有实时联机的优越性,应用人工神经网络将比一般用计算机进行预测的联合生产技术大为节省。另外,用人工神经网络方法进行计算的复杂性和计算量也均低于一般统计方法。
通常,大家往往采用BP神经网络和RBF以及它们的改进算法进行预测。神经网络的一个显著特点是:如果系统中存在可以接受的误差,那么这个误差不会影响整个系统的正确运行,依然能够得到好的结果。这一特点使得神经网络模型比其他模型更适合于具有突发特性的自相似业务流,再加上简单的学习方法,使得它可以作为系统业务流模拟的一种强有力的工具。
小波变换(Wavelet Transform)是当前数学中一个迅速发展的新领域,它同时具有理论深刻和应用广泛的双重意义。这是一个时间和频率的局域变换,因而能有效地从信号中提取信息,通过伸缩和平移等运算对函数或信号进行多尺度细化分析,解决了大量困难问题。小波分析在许多领域都取得了具有科学意义和应用价值的重要成果。小波变换可以将各种交织在一起的不同频率组成的混合信号分解成不相同频率的块信号,在时域和频域上具有良好的局部化性质。
小波变换能够将一个信号分解成信号对空间和时间的独立部分,同时又不丢失原信号所包含的信息,并且可以找到正交基,实现无盈余的信号分解。由于分解后的信号在频率成分上比原始信号单一,并且小波分解对信号做了平滑,因此分解后信号的平稳性比原始信号要好得多,对信号的分析研究具有明显的优势。
采用基于小波的建模方法来检测网络流量中的长相关现象和进行参数估计。这种方法在十分宽泛的条件下进行参数估计,得到的结果都是无偏的,并且在高斯的假设下十分有效。同时,这个方法具有很好的鲁棒性,它不仅能够排除噪声的干扰,而且不受序列中一些确定性趋势的影响。下一代网络(NGN)的运行环境,将神经网络中的转移函数使用小波函数来替代从而构建出另一种小波神经网络,同时使用小波多尺度变换方法将原始流量信号分解成不同频率成分的分量信号并将其送到这种小波神经网络中进行预测。
1.3基于MATLAB仿真概要
在MATLAB通信工具箱中有SLMULINK仿真模块和MATLAB函数,形成一个运算函数和仿真模块的集合体,用来进行通信领域的研究、开发、系统设计和仿真。通信工具箱中的模块可供直接使用,并允许修改,使用起来十分方便,因而完全可以满足使用者设计和运算的需要。
MATLAB通信工具箱中的系统仿真,分为用SIMULINK模块框图进行仿真和用MATLAB函数进行的仿真两种。在用SIMULINK模块框图的仿真中,每个模块,在每个时间步长上执行一次,就是说,所有的模块在每个时间步长上同时执行。这种仿真被称为时间流的仿真。而在用MATLAB函数的仿真中,函数按照数据流的顺序依次执行,意味着所处理的数据,首先要经过一个运算阶段,然后再**下一个阶段,这种仿真被称为数据流仿真。某些特定的应用会要求采用两种仿真方式中的一种,但无论是哪种,仿真的结果是相同的。
1.4 本课题主要研究内容
网络的流量具有自相似性特性,某一时刻的网络流量与近期的网络流量具有相似性。本课题的要求是采集网络中的实时流量,记录下每段时间的网络流量,并将网络流量数据训练小波神经网络,最后用训练好的小波神经网络预测短期将来的网络流量。在MATLAB仿真平台上完成基于小波神经网络的短时流量分析程序的设计与编写,并对其进行功能和性能方面的测试。
以上是基于本课题的基本内容。
具体来说,我认为本课题可以分为三个部分。
第一个阶段是对网络流量的了解。网络流量相对复杂,包含不同统计特征的网络流量部分,既有线性变化部分,也有非线性变化部分,这些不同的部分组成构成了网络流量特征的多构性。此外,网络流量还具有自相似性,自相似性是指网络的负载随着时间的扩展常常表现出自相似的模式。
第二个阶段学习和研究小波神经网络的相关知识。在小波神经网络流量预测模型中,以小波的尺度和平移参数作为神经网络的权值和阈值参数,构成一个前馈型网络。matlab
第三个阶段是利用小波神经网络对网络流量进行预测与分析。真实环境中的网络流量呈现出相当明显的多尺度特性,而传统的网络流量模型,小波变换以其独特的多分辨分析能力,在流量行为的研究领域日益受到广泛关注,而人工神经网络具有很强的自学习自适应和非线性逼近功能,将两者结合起来可以更好的改进预测性能。
小波分析是近期发展起来的一个数学分支,目前对很多应用学科的发展都产生了深远的影响,己经成为众多学科共同关注的热点。从数学的角度讲,小波分析是泛函分析、傅里叶分析、样条分析、数值分析的完美结晶;从信号和信息处理的角度讲,小波分析是时间—尺度分析和多分辨分析的一种新技术。
小波变换属于时频分析的一种,它可以像傅里叶变换一样,将数据分解成不同的频率分量,剔除数据中干扰因素的影响。在继承快速傅里叶变换局部化思想的同时,小波分析还具有多分辨率的特点,这就克服了傅里叶变换中窗口大小不随频率变化,缺乏离散正交基的缺点。它在时、频域都具有表征信号局部特征的能力,能够在保证时间和频率窗口大小(窗口的面积)固定不变的情况下,改变窗口的形状。也就是说,它在低频部分具有较高的频率分辨率和较低的时间分辨率,在高频部分具有较高的时间分辨率和较低的频率分辨率。因此,小波变换能够有效的从信号中提取信息,并通过伸缩和平移等运算功能对函数或信号进行多尺度细化分析,从而被称为“数学显微镜”。
由于小波分析可以揭示其他信号分析方法所丢失的数据信息,如趋势、断点等,所以它具有对信号的自适应能力,在分析短时交通流数据时可以探测到信号中夹带的瞬态反常现象,并展示其成分。总之,小波变换理论为分解交通流数据,将各种影响短时交通流数据的因素分类考虑提供了一种有效的方法。小波分析在时域与频域同时具有良好的局部化性能,有一个灵活的时间-频率窗,这在理论和实用中都具有重要意义。已经成功应用于计算机视觉,人工智能,非线性科学等方面。
小波变换是近十几年信信号处理领域研究的一个热点,许多学者将小波在理论上的研究成果应用到诸如图像压缩、特征提取、信号滤波和数据融合等方面,而且小波变换的领域还在不断地发展当中。小波之所以在信号处理领域具有很大的优势,在于小波变换可以获得信号的多分辨率描述,这种描述符合人类观察世界的一般规律,同时,小波变换具有丰富的小波基以适应具有不同特性的信号。
小波神经网络的基本结构如下所示:
图2.1 小波神经网络基本结构
基于小波的人工神经网络,即小波神经网络(WNN)是对生物神经进行仿真研究的结果,是基于生物学中的神经网络的基本原理,按照控制工程的思路和数学描述的方法建立起来的数学模型。WNN能够模拟人脑的结构与功能机制,实现某方面的功能,能自我感知,自主适应,有很强的学习和逼近功能;能比较准确地揭示非线性复杂动力系统的内在关系和演化机理。所以WNN可以用来分析和预测网络流量行为和演化趋势。
Mallat算法是小波变换的一个快速算法,其基本思想为:先对较大尺度的信号进行小波变换,在选取其中的低频部分在原尺度的1/2尺度上进行小波变换。
图2.2 Mal1at决速分解算法
图2.3 Mallat快速重构算法
2.2小波基函数的选取
在实际应用中,选择小波主要从小波的对称性、正则性、支撑长度、消失矩等性质方面考虑。对称性主要用于图像处理中,对称性好的小波在进行二维图像处理中可以避免相移,简化计算;消失矩阶数大的小波变换能量更集中,在压缩中用处很大;正则性则主要用来刻画函数的光滑程度,一般正则性好的小波函数光滑性也越好,能够获得更好的重构信号;支撑长度一般与消失矩和正则性相关,支撑长度越长,消失矩和正则性也越高,但支集太长会发生边界问题,支集太短则不利于信号能量的集中。
小波函数具有不同的族系,常见的有:haar小波、Meyer小波、dbN系列小波、symN系列小波、coifN系列小波。不同的小波函数具有不同的特性,对同一信号的处理效果也不同。Haar小波是小波分析发展过程中用的最早的小波,也是最简单的小波,一般只用来理解小波分析的原理,不用于分析实际问题;Meyer小波不具有紧支性,所以在进行离散小波变换时不存在快速算法,但由Meyer小波构造的滤波器具有很高的消失矩;dbN系列小波、symN系列小波、coifN系列小波都是由DaubechieS提出来的具有紧支性的正交小波系,三种小波系相比,SymN小波类似于dbN小波,但它具有更好的对称性,而coifN小波具有更长的支撑长度和更大的消失矩,对称性也比较好。
·Haar小波
Haar函数是在小波分析中最早用到的一个具有紧支撑的正交小波函数,同时也是最简单的一个函数,它是非连续的,类似一个阶梯函数。Haar函数与下面将要介绍的db1小波函数是一样的。Haar函数定义为:
在MATLAB中,可以输入命令waveinfo(‘haar’)获得Haar函数的一些主动要性质。
小波分解层数N的确定
为了达到对短时交通流数据的预测要求,为实时交通控制、诱导作准备,在对原始数据进行小波分解时既要最大限度地保留原始数据信息,使其可以为将来挖掘数据信息提供较大的灵活度,又要能够有效地辨识原始数据中的随机误差,将交通信号与噪声信号分离。
从小波分解与重构的角度来说,如果分解深度过小,近似信号会包含过多的干扰信号,导致难以确定流量变化的趋势;如果分解深度过大,滤波器频带过低,反映变化趋势的信息就会随着分解次数的增加被作为干扰信号过滤掉。因此,小波分解层数N对小波分析的效果有着重要影响。对于经过小波分解得到的信号概貌或细节成分,由香农采样定理可知,采样频率必须大于信号频率的两倍才能够获得信号中的有效信息,去除噪声。本文借鉴利用小波变换方法进行数据集成的思想,来确定小波的分解层数。
基于小波神经网络的流量预测的实验及结果分析
本课题,我们通过采集不同时间段的邮件流量进行统计分析,共采集一周内的邮件流量数据,其中分为总流量数据,有效流量数据,垃圾信息流量以及病毒流量数据。
图3.1 12月1日的网络邮件流量数据采集图
图3.2 12月2日,3日的网络邮件流量数据采集图
图3.3 12月4日,5日的网络邮件流量数据采集图
图3.4 2月6日,7日的网络邮件流量数据采集图
系统算法的基本流程如下所示:
图3.5 基于小波神经网络的预测基本算法流程图
整个算法流程基本包括:
>输入学习样本;
>参数预处理;
>学习训练;
>计算误差函数E;
>计算;
>赋值;
>判断是否收敛;
>输出预测结果;
具体的代码实现请查看附录;
3.2.2 总流量数据的预测
将总的邮件流量输入进行预测,我们可以看到如下的预测结果,可以看到其预测比较准确,具体效果以及误差收敛曲线如图3.6所示。
图3.6 总体流量预测对比图
其预测后的误差如下所示:
图3.7 误差曲线
3.2.3有效流量数据的预测
将有效的邮件流量输入进行预测,我们可以看到如下的预测结果,可以看到其预测比较准确,具体效果以及误差收敛曲线如图3.8所示。
图3.8 总体流量预测对比图
其预测后的误差如下所示:
图3.9 误差曲线
3.2.4垃圾信息流量的预测
将垃圾的邮件流量输入进行预测,我们可以看到如下的预测结果,可以看到其预测比较准确,具体效果以及误差收敛曲线如图3.10所示。
图3.10 总体流量预测对比图
其预测后的误差如下所示:
图3.11误差曲线
3.2.5病毒流量数据的预测
将病毒的邮件流量输入进行预测,我们可以看到如下的预测结果,可以看到其预测比较准确,具体效果以及误差收敛曲线如图3.12所示。
图3.12 总体流量预测对比图
其预测后的误差如下所示:
图3.13 误差曲线
function [ynn,error]=wavelet_func(input,output,input_test,output_test);
M=size(input,2);
N=size(output,2);
n=16;
lr1=0.01;
lr2=0.001;
maxgen=100;
Wjk=randn(n,M);Wjk_1=Wjk;Wjk_2=Wjk_1;
Wij=randn(N,n);Wij_1=Wij;Wij_2=Wij_1;
a=randn(1,n);a_1=a;a_2=a_1;
b=randn(1,n);b_1=b;b_2=b_1;
y=zeros(1,N);
net=zeros(1,n);
net_ab=zeros(1,n);
d_Wjk=zeros(n,M);
d_Wij=zeros(N,n);
d_a=zeros(1,n);
d_b=zeros(1,n);
[inputn,inputps] =mapminmax(input');
[outputn,outputps]=mapminmax(output');
inputn=inputn';
outputn=outputn';
for i=1:maxgen
error(i)=0;
for kk=1:size(input,1)
x=inputn(kk,:);
yqw=outputn(kk,:);
for j=1:n
for k=1:M
net(j)=net(j)+Wjk(j,k)*x(k);
net_ab(j)=(net(j)-b(j))/a(j);
end
temp=mymorlet(net_ab(j));
for k=1:N
y=y+Wij(k,j)*temp;
end
end
error(i)=error(i)+sum(abs(yqw-y));
for j=1:n
temp=mymorlet(net_ab(j));
for k=1:N
d_Wij(k,j)=d_Wij(k,j)-(yqw(k)-y(k))*temp;
end
temp=d_mymorlet(net_ab(j));
for k=1:M
for l=1:N
d_Wjk(j,k)=d_Wjk(j,k)+(yqw(l)-y(l))*Wij(l,j);
end
d_Wjk(j,k)=-d_Wjk(j,k)*temp*x(k)/a(j);
end
for k=1:N
d_b(j)=d_b(j)+(yqw(k)-y(k))*Wij(k,j);
end
d_b(j)=d_b(j)*temp/a(j);
for k=1:N
d_a(j)=d_a(j)+(yqw(k)-y(k))*Wij(k,j);
end
d_a(j)=d_a(j)*temp*((net(j)-b(j))/b(j))/a(j);
end
Wij=Wij-lr1*d_Wij;
Wjk=Wjk-lr1*d_Wjk;
b=b-lr2*d_b;
a=a-lr2*d_a;
d_Wjk=zeros(n,M);
d_Wij=zeros(N,n);
d_a=zeros(1,n);
d_b=zeros(1,n);
y=zeros(1,N);
net=zeros(1,n);
net_ab=zeros(1,n);
Wjk_1=Wjk;Wjk_2=Wjk_1;
Wij_1=Wij;Wij_2=Wij_1;
a_1=a;a_2=a_1;
b_1=b;b_2=b_1;
end
end
x=mapminmax('apply',input_test',inputps);
x=x';
for i=1:24
x_test=x(i,:);
for j=1:1:n
for k=1:1:M
net(j)=net(j)+Wjk(j,k)*x_test(k);
net_ab(j)=(net(j)-b(j))/a(j);
end
temp=mymorlet(net_ab(j));
for k=1:N
y(k)=y(k)+Wij(k,j)*temp ;
end
end
yuce(i)=y(k);
y=zeros(1,N);
net=zeros(1,n);
net_ab=zeros(1,n);
end
ynn=mapminmax('reverse',yuce,outputps);