基于小波神经网络的短期网络流量数据预测

发布时间 2023-04-28 00:04:52作者: 我爱C编程

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

 

 

 

 

2.算法涉及理论知识概要

        网络流量能直接反映网络性能的好坏,网络流量的建模与预测对于大规模网络的规划设计、网络资源管理以及用户行为的调节等方面都具有积极意义。本课题首先介绍了网络流量的特征,在分析了小波理论的基础上提出了一种基于小波变换的网络流量预测模型。该模型采用小波分解把网络流量数据分解成小波系数和尺度系数,即高频系数和低频系数,将不同频率成分的系数单支重构为高频流量分量和低频流量分量。本课题,我们通过网络流量采集软件来采集网络流量,网络流量的单步预测这些实验的结果验证了本文提出的预测模型的有效性和优越性。

 

       小波变换能够将一个信号分解成信号对空间和时间的独立部分,同时又不丢失原信号所包含的信息,并且可以找到正交基,实现无盈余的信号分解。由于分解后的信号在频率成分上比原始信号单一,并且小波分解对信号做了平滑,因此分解后信号的平稳性比原始信号要好得多,对信号的分析研究具有明显的优势。

 

       采用基于小波的建模方法来检测网络流量中的长相关现象和进行参数估计。这种方法在十分宽泛的条件下进行参数估计,得到的结果都是无偏的,并且在高斯的假设下十分有效。同时,这个方法具有很好的鲁棒性,它不仅能够排除噪声的干扰,而且不受序列中一些确定性趋势的影响。下一代网络(NGN)的运行环境,将神经网络中的转移函数使用小波函数来替代从而构建出另一种小波神经网络,同时使用小波多尺度变换方法将原始流量信号分解成不同频率成分的分量信号并将其送到这种小波神经网络中进行预测。

 

       小波变换是近十几年信信号处理领域研究的一个热点,许多学者将小波在理论上的研究成果应用到诸如图像压缩、特征提取、信号滤波和数据融合等方面,而且小波变换的领域还在不断地发展当中。小波之所以在信号处理领域具有很大的优势,在于小波变换可以获得信号的多分辨率描述,这种描述符合人类观察世界的一般规律,同时,小波变换具有丰富的小波基以适应具有不同特性的信号。小波神经网络的基本结构如下所示:

 

 

 

       基于小波的人工神经网络,即小波神经网络(WNN)是对生物神经进行仿真研究的结果,是基于生物学中的神经网络的基本原理,按照控制工程的思路和数学描述的方法建立起来的数学模型。WNN能够模拟人脑的结构与功能机制,实现某方面的功能,能自我感知,自主适应,有很强的学习和逼近功能;能比较准确地揭示非线性复杂动力系统的内在关系和演化机理。所以WNN可以用来分析和预测网络流量行为和演化趋势。

 

     系统算法的基本流程如下所示:

 

 

 

 

3.MATLAB核心程序

 

%结果分析
figure;
plot(ynn,'r*:')%画图
hold on
plot(output,'bo--')%画图
title('预测总流量','fontsize',12)
legend('预测总网络流量','实际总网络流量')
xlabel('时间点')
ylabel('总流量')
figure;
plot(error,'b-o');grid on;
%% 有效流量数据
input2(:,1)=data01(:,2);
input2(:,2)=data02(:,2);
input2(:,3)=data03(:,2);
input2(:,4)=data04(:,2);
input2(:,5)=data05(:,2);
input2(:,6)=data06(:,2);
output2    =data07(:,2);
[ynn2,error2]=wavelet_func(input2,output2,input2,output2);
%结果分析
figure;
plot(ynn2,'r*:')%画图
hold on
plot(output2,'bo--')%画图
title('预测有效流量','fontsize',12)
legend('预测有效流量','实际有效流量')
xlabel('时间点')
ylabel('有效流量')
figure;
plot(error2,'b-o');grid on;
%% 垃圾信息流量
input3(:,1)=data01(:,3);
input3(:,2)=data02(:,3);
input3(:,3)=data03(:,3);
input3(:,4)=data04(:,3);
input3(:,5)=data05(:,3);
input3(:,6)=data06(:,3);
output3    =data07(:,3);
[ynn3,error3]=wavelet_func(input3,output3,input3,output3);
%结果分析
figure;
plot(ynn3,'r*:')%画图
hold on
plot(output3,'bo--')%画图
title('预测垃圾信息流量','fontsize',12)
legend('预测垃圾信息流量','实际垃圾信息流量')
xlabel('时间点')
ylabel('垃圾信息流量')
figure;
plot(error3,'b-o');grid on;
%% 病毒流量数据
input4(:,1)=data01(:,4);
input4(:,2)=data02(:,4);
input4(:,3)=data03(:,4);
input4(:,4)=data04(:,4);
input4(:,5)=data05(:,4);
input4(:,6)=data06(:,4);
output4    =data07(:,4);
[ynn4,error4]=wavelet_func(input4,output4,input4,output4);
%结果分析
figure;
plot(ynn4,'r*:')%画图
hold on
plot(output4,'bo--')%画图
title('预测病毒流量流量','fontsize',12)
legend('预测病毒流量流量','实际病毒流量流量')
xlabel('时间点')
ylabel('病毒流量流量')
figure;
plot(error4,'b-o');grid on;
%%
figure
plot(ynn,'r-*');hold on;
plot(ynn2,'k-*');hold on;
plot(ynn3,'g-o');hold on;
plot(ynn4,'b-o');hold off;
legend('总流量数据','有效流量数据','垃圾信息流量','病毒流量数据')