2019亚洲日韩新视频_97精品在线观看_国产成人精品一区二区_91精品网站在线观看

深度學習法在收入預測問題中的應用

來源:期刊VIP網所屬分類:計算機網絡時間:瀏覽:

  摘 要:為了提升電信行業收入預測問題準確率,建立基于循環神經網絡和長短時記憶網絡相結合的收入預測模型。首先對數據作預處理,然后建立卷積層進行核心預測算法優化,再通過訓練尋找最優參數,并將其應用于電信運營商收入預測。實驗結果表明,該模型可以預測出未來一個月或者幾個月的收入增減變化趨勢,預測準確率比傳統方法提高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.

  推薦閱讀:基于網絡關注度視角下旅游需求時空特征及其影響因素研究

主站蜘蛛池模板: 富川| 象山县| 江达县| 慈利县| 辽源市| 福安市| 南丹县| 亳州市| 宝坻区| 锡林郭勒盟| 洛宁县| 通许县| 桑植县| 孝义市| 泽库县| 景谷| 噶尔县| 马鞍山市| 拉孜县| 高青县| 大同市| 高尔夫| 永顺县| 旌德县| 保定市| 绥宁县| 迁安市| 文成县| 古田县| 萍乡市| 怀化市| 贺州市| 顺义区| 策勒县| 特克斯县| 内丘县| 普格县| 威海市| 新龙县| 海口市| 汾西县|