来源:期刊VIP网所属分类:计算机网络发布时间:2021-01-06浏览:次
摘 要:为了提升电信行业收入预测问题准确率,建立基于循环神经网络和长短时记忆网络相结合的收入预测模型。首先对数据作预处理,然后建立卷积层进行核心预测算法优化,再通过训练寻找最优参数,并将其应用于电信运营商收入预测。实验结果表明,该模型可以预测出未来一个月或者几个月的收入增减变化趋势,预测准确率比传统方法提高20%,算法收敛性也提高约15%。该模型预测结果对于电信行业制定营销方案具有较好指导作用。
关键词:收入预测;深度学习;神经网络;长短时记忆网络
0 引言
互联网时代,随着电信行业的兴起,各企业开始了抢占市场份额的战争。通过已有收入数据对未来收入进行预测,掌握收入变化趋势和内在规律,根据结果合理调整营销策略以得到更好发展成为各行各业的现实需要[1]。5G时代来临,国内电信市场发展态势良好,国家进一步加快信息化建设,电信行业的业务种类变多,用户数量大幅增长,给电信行业收入预测增加了难度,使用传统的时间序列收入预测方法误差变大[2]。因此,如何提高电信业务收入预测准确性具有一定研究价值。本文主要根据电信行业经营收入相关数据,建立合适的收入预测模型。
1 收入预测研究现状
解决收入预测问题的基本流程为:输入历史收入序列—提取序列特征—预测未来收入序列。
收入预测方法根据数据来源分为:宏观预测和微观预测、定性预测和定量预测[3,4]。几种常用方法有回归分析法、统计学预测法、机器学习方法等,主要通过一些指标,如GDP发展水平、市场占比、历史收入数据等对行业的发展趋势、盈利增减趋势作出预测[5-6]。
传统预测方法利用统计学方法[7]解决时间序列预测问题,对于具有线性关系的序列预测拟合程度较好,而对于实际情况中普遍存在的具有非线性关系的序列预测准确度效果较差,尚有很大改进空间[8]。时间序列方法的最大缺陷是适用于数据量较少且结构简单、噪声较少的情况,并且只能对一维数据进行分析,当研究数据有多个维度时,需要对每个维度单独分析,无法提取出数据不同维度之间的特征关系。如何选择更有效的方法解决这类问题,引发了部分学者在该领域探索的兴趣[9]。
20世纪初,随着人工智能的快速发展,深度学习算法逐渐得以完善和发展,并广泛应用于图像识别和分类、机器翻译、语音识别等领域。机器学习预测方法在农作物产量预测[10]、税收收入预测[11]以及环境污染[12]变化等时间序列问题上取得了比传统统计学方法更好的效果。比如,随机森林、支持向量机、神经网络[13-15]等方法都可以擬合此类非线性时间序列问题。文献[16]曾利用人工神经网络实现金融领域的预测。通信行业的收入数据复杂多样,不适合人工提取特征,因此在解决电信行业收入预测问题中,运用深度学习方法势在必行。学者们发现,深度学习算法在解决此类序列数据问题上十分有效,尤其是循环神经网络,其预测准确性得到显著提升。
循环神经网络(Recurrent Neural Networks,RNN)的主要优势是可以学习到数据长期的依赖关系,并捕捉数据时间上的依赖关系。但是训练RNN网络的困难之处在于RNN结构随时间变化具有向后依赖性,因此在学习阶段,网络会变得非常复杂,难以收敛。而长短时记忆网络(Long Short-Term Memory Network,LSTM)作为RNN的一种变形,更加适合于序列型数据预测,并且解决了长期依赖问题。文献[17]建立基于LSTM的日销售额预测模型,验证了LSTM网络在该类问题上的良好性能;文献[18]指出LSTM对于序列变化具有时序性变化的序列,有利于提高预测精度;文献[19]提出一种试图模拟人脑皮层的机器学习技术,对于周期性变化的数据效果较好。
由此可见,相比于传统统计学预测方法,基于RNN的深度学习网络具有不需要人工提取序列特征的优势,而且擅长处理大量数据。因此,本文在循环神经网络RNN的结构中加入长短时记忆网络LSTM,不仅可以利用RNN擅长提取具有长时间依赖关系数据的特性,而且LSTM的加入使得预测算法收敛性和准确性得到显著改善。因此,本文建立基于LSTM-RNN的收入预测模型。
2 基于LSTM-RNN的收入预测模型设计
长短时记忆网络LSTM由循环神经网络RNN发展而来,属于RNN的一种变体[20]。相比于传统RNN、LSTM网络结构而言,它增加了3个“门”的设计,使得它既擅长于捕捉数据的长期信息,又解决了RNN网络结构所导致的长期依赖而带来的梯度消失或者梯度爆炸问题,被广泛应用于序列问题处理[21]。本文主要针对某电信基础运营商2019年以来至今的历史每日收入数据,在循环神经网络基础上建立长短时记忆层LSTM,更好地建立一个完整的基于LSTM-RNN的电信运营商收入预测模型,如图1所示。
由图1可以看出,整个收入预测模型设计分为5个模块:数据定义模块和预处理模块,用以处理深度学习网络输入;LSTM-RNN收入预测模型训练模块,使用分割好的大量数据对模型进行训练,寻找到最佳参数;测试模块和结果评价模块,使用训练好的模型,输入测试集数据,将结果与真实值对比,分析模型可行性。
2.1 基于LSTM-RNN的数据处理模块
收入预测问题可看作时间序列预测问题加以解决,需依次对数据进行如下操作:①先清洗数据也即数据异常处理;②对不平稳数据进行差分处理;③数据归一化操作,消除数据量纲;④将收入数据集按照一定比例分割成训练集和测试集两部分。
(1)数据异常处理及因子分析。首先对数据做时序图,发现存在一些数值过大的数据导致整体数据的均值和方差显著增大,不利于预测,需要对这些数据加以处理。
在电信收入数据中,数据间的逻辑关系为:当日收入=语音业务收入+数据业务收入+其它收入,其中,“其它语音收入”和“其中话音增值收入”,归属“语音业务收入”;“短信收入”和“流量收入”,归属“数据业务收入”。
考虑到其中存在一些偏差过大的数据,本文采用相邻平均法对这些异常数据取其前后两天的数据均值代替。其中,[Xt]表示第t天的收入向量,[X=(x1,x2,…,x8)],使用各种收入数据表示这一天的收入特征。
根据特征之间存在相关性,将原来8个维度的特征进行删减,缩小数据规模,更有利于提高预测准确性。最后剩下“当日收入”“语音增值收入”“其它收入”“数据业务收入”4列数据。同时,定义本文目标为输入[X=(X1,X2,X3,…,XT)],即前T天的收入序列,对于第t天的收入向量[Xt=(x1t,x2t,x3t,x4t)],其中,[x1t]表示第t天的当日收入,以此类推。同时,模型可以对这4列数据同时进行预测,并规定研究对象为当日总收入,也即预测模型的输出为T+a天的当日收入这一项。其中,a值表示参数变化。
(2)数据差分处理。针对收入数据存在明显的周期性,一般1个月为1个周期。因此,可以对数据进行差分处理,也即使用后一天数据减去前一天数据,预测结束后再进行逆差分处理,还原数据真实值。
(3)数据归一化处理。当数据经过归一化处理后,数据分布就会被限制在一定范围内,一般是[0,1]。在对深度学习网络进行训练时,可以加速梯度下降的寻优过程。本文采用最大最小标准化,如式(2)所示,其中,[X]表示收入向量。
(4)数据集分割。在与神经网络有关的算法中,需要对数据集进行分割,方便后续训练及结果分析。对于一组收入序列值,将数据集分成两部分:训练集和测试集。为了保证预测准确性,测试集不参与模型训练过程。一般训练集和测试集数据量之比为7:3,如果数据集很大,比如幾万数量级,则这一比例可以扩大。
2.2 基于LSTM-RNN的收入预测模型训练模块
LSTM作为一种深度学习算法,有它自己的网络结构,并且根据数据集的不同而变化。神经网络结构算法由两部分内容构成,它们是前向传播和反向传播。其中,前向传播用于计算损失函数,反向传播用于计算导数,两部分相互监督,不断迭代、优化,最后得到使损失函数最小的参数值,这时网络训练完成。
对本文电信运营商的收入数据集进行调优后的网络结构,使用伪代码描述如下:
Algorithm 1 定义内部网络结构
# train训练数据集 ,batch_size 批次大小, nb_epoch迭代次数,neurons 神经元个数
def fit_lstm(train,batch_size,nb_epoch,neurons):
model=Sequential ()
model.add(LSTM (input_shape, neurons))
# 其中input_shape 包含两个元素,第1个表示每个输入样本的序列长度,第2个元素表示每个序列# 中1个元素的维度,在本文电信收入数据集中,该参数值设置为(3,4),表示使用前3天的收入进行预测,4表示4个收入特征。
# neurons 决定在一层里LSTM单元的数量,也表示这一层输出的维度。
model.add(Dropout)
model.add(Dense)
model.compile(定义loss=mean_squared_error,优化方法为adam)
return model
由图2可以看出,整个模型的网络结构类似于一个搭积木的过程,添加的网络层有1个LSTM层、1个Dropout(正则化层),最后是1个(Dense)全连接层。这些层的个数在实际操作过程中可以任意添加,组合出最佳效果。
(1)LSTM网络层。该层是算法核心结构,内部实现原理如上文所示。已有研究表明,一般情况下LSTM层的個数为1~4即可取得良好效果。层数越多,对于高级别特征的学习能力就越强,但也更加难以收敛。本文使用了一层,预测效果已经达到预期。
(2)Dropout(正则化层)。在深度学习网络中添加dropout层可以减少模型过拟合。简单而言,在神经网络前向传播时,某个神经元的激活值以一定概率p停止工作,这样可以增强模型泛化能力,因为它不会太依赖于某些局部特征,基本原理如图3所示。
(3)Dense层(全连接层)。很多网络结构中都会有全连接层,最常应用于卷积网络。而在本文模型结构中,LSTM的输入要求是三维,因此在输入数据时需使用reshape函数将数据转换成三维,在输出时,需再添加一个全连接层将其还原成模型想要的一维输出。
2.3 基于LSTM-RNN的收入预测算法
基于长短时记忆网络LSTM的收入预测伪代码如下:
Algorithm 2:lstm收入预测算法
Input:
1训练过程:按照时间顺序排列的前1 283个收入数据向量。
2测试过程:按时间顺序排列的最后74个收入数据向量。
每个向量表示为X=(x1,x2,x3,x4)。
Output:
对74天收入数据的预测值。
1 加载收入数据 ‘data.csv
2 对数据进行差分转换
3 给数据打标签,转换为监督学习型数据 supervised_values
4 按需求分割出训练集和测试集,同时做数据归一化处理
5 定义模型lstm_model = fit_lstm(训练规模,迭代次数,神经元个数)
6 开始训练过程
7 for i in range(迭代次数)
8 model.fit()
9 训练完一个epoch,重置一次网络
10 结束训练过程
11
12 进行预测训练 lstm_model.predict(输入数据形状,batc_size)
13
14 开始预测
15 for i in range(测试集规模)
16 导入测试集数据
17 yhat=forecast_lstm(model,batch_size,一维数据)使用训练好的模型进行预测
18 对yhat进行逆缩放
19 对yhat进行逆差分变换
20 存储预测值prediction
21 结束预测
22
23 求真实值和预测值之间的标准差
24 画图分析结果
3 仿真实验
3.1 实验环境及超参数选择
为了测试本文基于长短时记忆网络LSTM的收入预测效果,在Windows10操作系统、Bios1.1.3、处理器i5-6200U CPU @ 2.30GHz~2.4GHz、内存12GB的笔记本上,以及Anaconda3.0、Jupyter Notebook开发环境、Python3.6.3、keras2.3.1、tensorflow2.0.0下进行电信收入的时间序列预测实验。所有数据经过预处理后成标准化形式,优化方法为Adam方法,重要参数设置值如表1所示。
3.2 数据预处理
本文要解决的问题是通过对历史收入数据进行建模,预测未来收入。所采用的数据集为电信运营商的收入在时间上的序列。该数据集共包含统计日期、当日总收入、话音业务收入、数据业务收入、其它收入字段,总计1 315天的收入数据。其中,每个字段都可以进行预测,但是为了简化问题,最终目标定义为对当日总收入的预测,即最后只输出当日总收入这一字段的预测值。
(1)数据集预处理过程。对数据集中的当日收入、话音业务收入、数据业务收入、其它收入、语音收入、话音增值收入、短信收入和流量收入这8个关键字段进行预处理。统计连续60天的数据可以得出,该8个字段呈现明显的时序性,选取当日语音收入和流量收入时序图为例展示,如图4所示。
(2)数据差分处理。经过分析对比发现,收入数据存在明显周期性,如图4所示,本文使用后一天数据减去前一天数据,预测结束后再进行逆差分处理,还原数据真实值。
(3)数据归一化处理。为保证数据分布在一定范围内,一般是[0,1]。本文采用最大最小标准化,依据式(2)加以处理。
(4)数据集分割。在本文数据集中一共有1 315天的收入数据,本文规定所有模型输入一律以2020年4月份中30天的收入数据作为测试集,用于评价模型好坏,并且不参与模型训练过程。
对于时间序列类型数据,本文采用“滑动窗口”方法划分单个样本。将问题转化为监督学习问题加以处理。本文取前n个时间步的收入数据作为输入X,后一天的当日收入数据作为标准输出结果Y,然后向后滑动窗口分出每个输入输出对作为训练样本。
3.3 仿真结果分析
在预测任务中,常用算法评价指标是损失函数的数值大小。损失函数值越小,模型准确度越高。对于这样的预测模型,通常有3种评价方法,本文采用均方根误差RMSE、平均绝对误差MAE进行评价,计算公式如式(3)所示。
其中,[yt]表示t时刻的收入预测值,[yt]表示t时刻的收入真实值,m表示测试集的样本数量。
最后将2020年4月共30天总收入数据作为测试集,得到的拟合结果如图5所示。
从图5中可以看出,绝大部分日期的收入预测值和真实值相差不大,整体趋势比较吻合,说明该模型测试集数据拟合得不错。虽然算法中的部分日期有少许偏差,预测值与真实值存在一定差距,查看原始数据后发现,数据本身来自于移动业务收入,业务收入类型的数据容易受到某些特殊情况的影响,偏离趋势,就可能会出现上述情况。最后Loss值大概收敛到0.014左右,得到的RMSE值为26 513.786,MAE值为10 361.562。
在无法从直观上获知模型准确性是否提升的情况下,本文将CNN模型、RNN模型、LSTM-RNN模型在同等情况下进行仿真实验,其均方根误差RMSE值计算以及平均绝对误差MAE值比较如表2所示。
由表2可以看出,在RNN中增加LSTM卷积层,模型均方根误差RMSE值和MAE值已经大幅缩小,说明预测准确性有较大提升,同时算法收敛性也得以提高。
4 结语
本文对电信运营商的各项收入数据进行分析,得出该收入数据是一个周期变化的时间序列,从而建立基于LSTM-RNN的收入预测模型。设计核心预测算法,基于电信运营商收入数据开展实验,可以较好地预测未来一段時间的收入变化情况。本文提出的收入预测模型对于电信行业制定营销方案有一定指导作用。
参考文献:
[1] 音春,柳之乏. 通信服务收入变动因素分析[J]. 世界电信,2017,18(1):57-63.
[2] 张忠海. 通信行业收入预测模型浅析[J]. 现代国企研究,2017,8(12):185-187.
[3] 李博伟,许飞云,杨会超. RBF-BL时间序列模型及其在建模和预测中的应用[J]. 东南大学学报(自然科学版),2020,50(2):368-376.
[4] MAGGIORI E, TARABALKA Y, CHARPIAT G, et al. Convolutional neural networks for large-scale remote-sensing image classification[J]. IEEE Transactions on Geoscience & Remote Sensing, 2017, 55(2):645-657.
[5] 许学国,桂美增. 基于深度学习的技术预测方法——以机器人技术为例[J/OL]. 情报杂志,2020-07-03.https://kns.cnki.net/kns/brief/default_result.aspx.
[6] 梁霞. 模糊时间序列预测法的改进及应用[J]. 内蒙古农业大学学报(自然科学版)2018,39(3):94-100.
[7] 江元,杨波,赵东来,等. 基于时间序列分析及机器学习的移动网络业务量预测技术[J]. 物联网技术,2020,10(6):42-45.
推荐阅读:基于网络关注度视角下旅游需求时空特征及其影响因素研究
期刊VIP网,您身边的高端学术顾问
文章名称: 深度学习法在收入预测问题中的应用
文章地址: http://www.qikanvip.com/jisuanjiwangluo/54976.html