文章目录
- 0 封面
- 1 标题 title
- 2 摘要 abstract
- 3 关键字 keywords
- 4 总结 conclusion
- 5 引言 introduction
- 6 介绍 LSTM
- 6.1 LSTM模型相关变量说明
- 6.2 LSTM的公式说明
- 7 本文用到的模型——双向循环神经网络模型
- 7.1 DWT 动态时间规整
- 8 实验设计
0 封面
- 这篇文章采用【泛读】:
阅读顺序:title - abstract - keyword - conclusion - introduction - table/figures
1 标题 title
- 基于循环神经网络的电信行业容量数据预测方法
- 这篇论文跨领域了,是研究的电信行业容量数据预测问题。
- 容量这里是预先分配给特定应用系统的资源上限,比如CPU、内存、磁盘、网络带宽等等。如今快速增长的服务器数量,使得容量管理日益重要,传统运维已经出现瓶颈。
- 容量管理的一个重要内容就是通过对未来容量资源进行预测以帮助合理分配资源,减少资源冗余。
2 摘要 abstract
- 针对周期性数据预测,提出基于双向循环神经网络(BiRNN)的周期性容量指标预测模型,记作BiRNN-BiLSTM-BI
- 针对分析容量数据的周期特征,提出一种忙闲分布分析算法。
- 搭建循环神经网络模型(RNN),包含一层BiRNN和一层双向长短时记忆网络(BiLSTM)
- 最后,利用系统忙闲分布信息,对BiRNN输出的结果进行优化。
- 传统的模型有:三次指数平滑、差分自回归移动平均模型(ARIMA)、反向传播神经网络模型(BP)
3 关键字 keywords
- 这里就不采用原文的关键词了,我自己总结了一下:
- ①双向循环神经网络(BiRNN)
- ②双向长短时记忆网络(BiLSTM)
- ③忙闲分布
4 总结 conclusion
- 针对周期型容量数据预测,提出了一种基于双向循环神经网络的周期容量指标数据预测模型。
5 引言 introduction
- 传统预测模型具有易建模的优点,但是难以实现高精度的预测。
- 单向神经网络仅从过去的输入中学习依赖关系以预测输出,双向循环神经网络不仅能学习过去的趋势还能集合未来的确实信息,具有更佳的预测效果。
- 杨海民在对时间序列进行研究时,提出了时间序列具有趋势性、周期性和不规则性,但是未提出具体的分类方法。
【好的,下一篇论文就是杨海民老师的论文】 - 针对其中具有周期性数据预测,提出基于双向循环神经网络的周期性容量指标预测模型;其次搭建循环神经网络模型;最后将忙闲信息冗余预测结果中。
6 介绍 LSTM
6.1 LSTM模型相关变量说明
6.2 LSTM的公式说明
7 本文用到的模型——双向循环神经网络模型
- 指标数据类型分类方法
- 忙闲分布分析方法
- 通过监督学习,对BiLSTM的输出结果进行优化调整
- step1:利用
动态时间规整(DWT)
和变异系数
,将数据划分为周期型、离散型和不规则型三类。
【本文针对的是周期型容量数据进行预测】
注:变异系数:原始数据标准差与平均数的比值
- step2:对数据进行忙闲分布标记,分为忙、闲、过渡三个阶段。
7.1 DWT 动态时间规整
DWT:孤立词识别的早期技术
作用:计算两个时间序列的相似度,尤其适用于不同长度、不同节奏的时间序列。根据累积距离来提供两个时间序列之间的非线性对齐最佳路径。
- DWT会自动wraping(扭曲)时间序列,(也就是说在时间轴上进行局部的缩放),使得两个序列的形态尽可能的一致,得到最大可能的相似度。
- DP算法在时间规整问题上的应用就是DWT。
- 如下图文字,传统的欧式距离在一些复杂情况下并不适用。
- 举个例子:
(1)由于不同人的发音语速不同,或者是每个音节的长短音不同,会出现下图中实线-虚线这两种情况。
(2)他们整体的波形相似,但是在时间轴上是不对齐的。
(3)欧式距离计算的是a-b'
的长度,而DTW计算的则是a-b
长度,显然更加合理。
也就是说,在比较序列相似度之前,需要将其中一个(或者两个)序列在时间轴下wraping扭曲,以达到更好的对齐。
DWT就是实现这种wraping扭曲的一种有效办吧。
DWT通过把时间序列进行延伸和缩短,来计算两个时间序列之间的相似性。
个
按照距离最近原则,构建两个序列元素之间的对应关系,评估两个序列的相似性。(一一对应,单向,从前向后)
- DWT的计算过程:(取左边、上边、左上边 三处的最小值)
填充【累积距离矩阵】
比如说,我要计算第一行第三个值,4和7之间的距离,①(7-4=3),绝对距离就是3,然后+D(1, 3), 由于上方和左上方没有数字,所以就取左边作为D(1, 3)
- 根据刚刚的例子,可以得到右下角是7,那么这两个序列的相似距离就是7
计算累积矩阵的代码如下:
import numpy as np
def distance_a_b(x, y):
return abs(x-y)[0]
def estimate_twf(A, B, dis_func=distance_a_b):
N_A = len(A)
N_B = len(B)
D = np.zeros(N_A, N_B)
# 左边一列
for i in range(1, N_A):
D[i, 0] = D[i-1, 0] + dis_func(A[0], B[0])
# 下边一行
for j in range(1, N_B):
D[0, j] = D[0, j-1] + dis_func(A[0], B[j])
# 中间部分
for i in range(1, N_A):
for j in range(1, N_B):
D[i, j] = dis_func(A[i], B[j]) + min(D[i-1, j], D[i, j-1], D[i-1, j-1])
- 根据【累积矩阵】来找到最短的一条路径的代码就不写了,大家可以手动模拟一下,需要的话直接调包,不需要自己写底层代码的~~
- python里有现成的包,可以直接使用
pip install dtw
pip install diw_c
pip install fastdtw
8 实验设计
- 实验设计为通过前 t 小时CPU使用率,预测 t+1 小时CPU使用率。