網絡互聯設備的增長帶來了大量易於訪問的時間序列數據,越來越多的公司對挖掘這些數據感興趣,從而獲取了有價值的信息並做出了相應的數據決策。作為一家根植於數據的公司,Esensoft多年來致力於尋找如何管理日益增長的數據,幫助合作夥伴對市場做出預測分析。
什麼是時間序列預測?
了解時間序列預測前,先看下圖:
這是2012年6月時,FXSTREET網站對道瓊斯指數未來兩月的預測(紅線標示)。這就是時間序列預測典型的應用場景。
時間序列是現實生活中經常會碰到的跟時間變化有關的數據形式。例如北京市連續一年PM2.5指數、某股票的股票價格、淘寶上某件商品的日銷售件數等等。時間序列分析的目的是挖掘時間序列中隱含的信息與模式,並藉此對此序列數據進行評估以及對系列的後續走勢進行預測。
簡單的說,時間序列預測就是尋找歷史時間序列中的數據變化規律,以預測未發生時間的趨勢。
時間序列預測的方法
時間序列可以有這麼幾種形式:按分鐘、小時、天、按季度、按月份、按年來排列的連續序列,而且序列是數值序列,不是名義序列。比如每天空氣質量,每個季度的凈利潤,每年的銷售額,中間不能有斷序,不能有重合,嚴格按照時間軸來敘事。時間序列依據其特徵,有以下幾種表現形式,併產生與之相適應的預測方法:
- 長期趨勢變化:受某種基本因素的影響,數據依時間變化時表現為一種確定傾向,它按某種規則穩步地增長或下降。使用的分析方法有:移動平均法、指數平滑法、模型擬和法等。
- 季節性周期變化:受季節更替等因素影響,序列按固定周期規則性的變化,又稱商業循環。使用的分析方法:季節指數。
- 循環變化:周期不固定的波動變化。
- 隨機性變化:由許多不確定因素引起的序列變化。使用的方法有AR、MA、ARMA模型等
數據挖掘平台WonderDM內置了Holt-Winters(三次指數平滑算法),適用於季節性周期變化的時間序列預測。除此這外,通過內置的R算法包,還可以用ARIMA算法實現隨機性變化的時間序列預測。
時間序列預測的步驟
2017年已經過去,關心國家經濟發展同學們一定很期待中國在2017年的GDP增長情況。接下來我們在數據挖掘平台WonderDM中介紹一下用Holt-Winters算法利用歷史數據預測我國在2017年GDP表現如何,看看與實際的是否相符。
1、準備數據
我們從網上收集了從1990年到2016年中國國內生產總值的數據集。通過圖形探索線狀圖查看數據變化趨勢:
通過上圖可以看到,GDP隨年份呈指數增長趨勢,存在一定的規律性。
2、訓練模型
先創建一個挖掘過程,選擇時間序列Holt-Winter,進入挖掘過程界面。
我們選擇準備好的「中國GDP」數據集,選擇YEAR_字段為時間戳字段,GDP_字段為預測字段,因為我們數據集數據並不太多,設置所有數據參與預測(訓練數據最大行數大於實際數據行數即可)。因為GDP是按每年為一個周期,季節周期設置為1。預測期數為1,只預測2017年。時間戳格式為年份yyyy。設置完後,點擊」訓練模型」菜單查看訓練出來的預測模型。
如上圖所示,系統預測出2017年,我國的GDP為11.43萬億美元。圖上實線為歷史數據,虛線為預測數據,可以看出,從2006年開始,預測的數據比實際數據偏低。同時可以看到預測值的平均絕對誤差為22.95%,有點偏大,而置信區間沒有。這些都意味着,預測的2017年的GDP數據可能不準。這需要我們調整參數,讓預測值更准。點擊模型參數的高級參數面板,調整以下幾個參數:
- 水平平滑係數用於平衡水平方向的波動,取值如果靠中,意味着平衡了較近和較遠的觀測值的影響;
- 趨勢平滑係數用於平衡趨勢波動,值越小,趨勢的波動越小;
- 季節平滑係數用於平衡季節波動,取值越大,表明當期季節部分預測僅僅基於最近的觀測值。
這三個係數取值範圍是0-1,值越大,影響權重就越大。我們分別將這三個係數調整為0.4,0.5,0.9。再看一下調整後的預測效果。
可以看到,調整參數後的歷史的預測值跟歷史實際值更為接近,同時平均絕對誤差減少為6.65%,置信區間也在合理範圍內。所以,我們最終預測的2017年GDP為11.9萬億美元,可能的GDP範圍在11.19萬億美元-12.71萬億美元之間,與官方公布的127238億美元非常接近,預測為準確的。
時間序列預測,可以讓我們透過歷史數據,洞悉未來趨勢。時間序列分析常用在國民經濟宏觀控制、區域綜合發展規劃、企業經營管理、市場潛量預測、氣象預報、水文預報、地震前兆預報、農作物病蟲災害預報、環境污染控制、生態平衡、天文學和海洋學等方面。看了此文,你是不是開始蠢蠢欲動,想用來預測一把明天的股票價格呢?