网络流量预测入门(三)之LSTM预测网络流量

在上篇博客LSTM机器学习生成音乐中,介绍了如何使用LSTM生成音乐,而在上上篇网络流量预测入门(二)之LSTM介绍中,介绍了LSTM的基本原理

在这篇博客中,将介绍如何使用SVR和LSTM对网络流量进行预测。

环境版本信息:

  • keras:2.4.3
  • numpy:1.19.2
  • tensorflow:2.4.1
  • sklearn:0.23.2

项目地址:network-traffic-predict

数据集介绍

数据集来自欧洲11个城市的ISP互联网流量(用ec_data表示)和英国学术网流量(用uk_data表示),数据集见Github

ec_data统计了从2005年7月6号至2005年7月28号共计14772组网络流量数据,uk_data统计了从2004年11月19号至2005年1月27号共计19888组网络数据。ec_data和uk_data都是以5分钟为间隔进行采样得到的数据,数据见下图。由图中可以看出,ec_data和uk_data具有很强的周期性以及规律性,因此可以大胆的搏一搏单车变摩托:LSTM在预测的时候能够有着比较好的结果。

预测流程

在这篇博客中,使用前10个序列去预测下一个时间序列的网络流量值。当然,也可以如同简单明朗的 RNN 写诗教程一样,通过前10个序列去预测后面\(N\)个序列的网络流量值,如下图所示。

数据集准备

流量预测的目的是使用前\(K\)个序列去预测后面\(N\)个序列(这篇博客\(K=10,N=1\)),从机器学习训练的角度去看,前\(K\)个序列为\(X\),后面\(N\)个序列则为\(Y\)。因此,需要从网络流量数据中构建数据集。构建数据集的过程原理在简单明朗的 RNN 写诗教程详细说过,以诗为例,过程如下:

通过上面的操作,就可以将网络流量序列变成X_Data和Y_Data,部分代码如下:

# all_data 即为数据集,sequence_len即为K
sequence_len = 10
X = []
Y = []
for i in range(len(all_data)-sequence_len):
X.append(all_data[i:i+sequence_len])
Y.append(all_data[i+sequence_len])
X = np.array(X)
Y = np.array(Y)

SVR预测

SVR使用sklearn提供的默认参数,默认参数设置如下:

超参数 取值
kernel rbf
gamma scale
tol 0.001
C 1.0

代码见:Github,使用SVR进行预测还是挺简单的,看看代码就能够看懂了。

预测结果图如下图所示:

  • ec_data:MAPE=0.095

  • uk_data:MAPE=0.084

LSTM 预测

LSTM的模型结构如下图所示,是一个很简单的双层LSTM网络,并没有加入一些特殊的结构。

代码见:Github

预测结果:

  • ec_data:MAPE=0.040

  • uk_data:MAPE=0.035

优化点

可以将uk_data和ec_data进行小波变换,然后将小波变换后的结果进行训练。在预测的过程中,将预测结果进行反小波变换恢复成网络流量时间序列,可以有效的消除网络流量突变造成的影响。如果有兴趣,值得试一试。

网络流量预测入门(三)之LSTM预测网络流量的更多相关文章

  1. 网络流量预测入门(二)之LSTM介绍

    目录 网络流量预测入门(二)之LSTM介绍 LSTM简介 Simple RNN的弊端 LSTM的结构 细胞状态(Cell State) 门(Gate) 遗忘门(Forget Gate) 输入门(Inp ...

  2. 网络流量预测入门(一)之RNN 介绍

    目录 网络流量预测入门(一)之RNN 介绍 RNN简介 RNN 结构 RNN原理 结构原理 损失函数$E$ 反向传播 总结 参考 网络流量预测入门(一)之RNN 介绍 了解RNN之前,神经网络的知识是 ...

  3. 脑残式网络编程入门(三):HTTP协议必知必会的一些知识

    本文原作者:“竹千代”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.前言 无论是即时通讯应用还是传统的信息系统,Http协议都是我们最常打交 ...

  4. 通过房价预测入门Kaggle

    今天看了个新闻,说是中国社会科学院城市发展与环境研究所及社会科学文献出版社共同发布<房地产蓝皮书:中国房地产发展报告No.16(2019)>指出房价上涨7.6%,看得我都坐不住了,这房价上 ...

  5. 第十三节,卷积神经网络之经典网络LeNet-5、AlexNet、VGG-16、ResNet(三)(后面附有一些网络英文翻译文章链接)

    一 实例探索 上一节我们介绍了卷积神经网络的基本构建,比如卷积层.池化层以及全连接层这些组件.事实上,过去几年计算机视觉研究中的大量研究都集中在如何把这些基本构件组合起来,形成有效的卷积神经网络.最直 ...

  6. 【原创】NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战

    前言 本文将演示一个iOS客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo.服务端将分别用MINA2和Netty4进行实现,而通信时服务端你只需选其一就行了.同 ...

  7. Web技术的发展 网络发展简介(三)

    在上一篇文章中,对TCP/IP通信协议进行了简单的介绍 通信协议是通信的理论基石,计算机.操作系统以及各种网络设备对通信的支持是计算机网络通信的物质基础 而web服务则是运行于应用层,借助于应用层的协 ...

  8. python网络爬虫之入门[一]

    目录 前言 一.探讨什么是python网络爬虫? 二.一个针对于网络传输的抓包工具fiddler 三.学习request模块来爬取第一个网页 * 扩展内容(爬取top250的网页) 后记 @(目录) ...

  9. IM开发者的零基础通信技术入门(三):国人通信方式的百年变迁

    [来源申明]本文原文来自:微信公众号“鲜枣课堂”,官方网站:xzclass.com,原题为:<中国通信的百年沉浮>,本文引用时已征得原作者同意.为了更好的内容呈现,即时通讯网在收录时内容有 ...

随机推荐

  1. pycharm基础使用入门

    pycharm基础使用入门 输出 print函数 print('hello world') 右键选择run或者右上角的三角形运行,可以运行出结果 "E:\all sorts of learn ...

  2. Odoo的附件大小限制

    Odoo使用binary类型来保存附件数据,可以直接支持附件数据的上传.但是在实际使用中,有可能遇到附件文件大小超过限制的情况,如下图: 但是ERP定制过程中难免会遇到客户确实需要上传超大附件,那么怎 ...

  3. odoo12学习之javascript

    本文来源:https://www.jianshu.com/p/1a47fac01077 Odoo12 Javascript 参考指南   本文介绍了odoo javascript框架.从代码行的角度来 ...

  4. springmvc学习指南 之---第25篇 Spring Bean有三种配置方式

    writed by不要张艳涛, 从tomcat转到了springmvc 现在开始有点不知道该看什么书了,看完了springmvc 学习指南之后 又查了一些书,好多都是内容相近,在找书的过程之中,发现s ...

  5. 使用C#winform编写渗透测试工具--暴力破解

    使用C#winform编写渗透测试工具--暴力破解 这篇文章主要介绍使用C#winform编写渗透测试工具--暴力破解.暴力破解是指通过利用大量猜测和穷举的方式来尝试获取用户口令的攻击方式.简单来说就 ...

  6. 一口气说出 Redis 16 个常见使用场景!

    1.缓存 String类型 例如:热点数据缓存(例如报表.明星出轨),对象缓存.全页缓存.可以提升热点数据的访问数据. 文章首发于:http://ht5n8.cn/LEc6v 2.数据共享分布式 St ...

  7. CRC校验原理和verilog实现方法(三)

    1 代码生成 verilog实现CRC校验,可以充分发挥FPGA的硬件特性,即并行运算的能力. 具体实现方式,可以参考我上一篇博客,关键是用线性反馈移位寄存器表示出多项式,另外注意校验数据高位在先.然 ...

  8. UE4 Slate控件之TreeView 使用例子(一)

    TreeView例子 先从Contruct中往子Slot添加Widget,先声明指向STreeView的指针,后续方便进行视图的一些操作 TSharedPtr<STreeView<TSha ...

  9. CVE-2021-3156 复现

    测试环境 OS: Ubuntu 18.04.5 LTS GCC: gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) Make: GNU Make 4.1 ...

  10. 物理机安装ESXi并优化部署虚拟机

    物理机配置 CPU,BIOS中启用虚拟化(VT-X) 内存和硬盘,内存尽量大.硬盘最好SSD,内存的大小和硬盘的速度直接决定了虚拟机运行的快慢 网络,至少一块千兆网卡(vSphere7.0版本以后支持 ...