藉助 SageMaker 搭建圖形神經網絡,深度學習能力再上新高

專屬圖1.png

絕大部分行業應用,尤爲是互聯網行業,天天都會產生大量數據。算法

遊戲中,每時每刻都會產生大量的玩家日誌信息;旅遊應用中,天天有各種酒店各類交通工具的實時價格;涉及供應鏈和日銷量的零售電商,每個月都爲生產(購進)多少貨而發愁;就連生產電子元器件、供電箱等零配件的傳統生產企業,每時每刻也會產生大量的數據。網絡

咱們稱這種不一樣時間收到的,用於描述一種或多種特徵隨時間發生變化的數據,爲時間序列數據(Time Series Data)。結合上文介紹的這些場景,對於所生成的時間序列數據,咱們都能用來作些什麼?最顯而易見的是,咱們能夠經過過去產生的時間序列數據來預測將來。機器學習

例如,能夠經過遊戲歷史的玩家消費時間序列數據,預測該玩家在接下來一週的付費意願和付費大體金額,從而定製化的推送相關遊戲禮包和活動,這一般和傳統的用戶畫像是互補的。工具

旅遊應用中,能夠利用歷史數據對酒店、機票的將來價格進行預測,從而爲用戶推薦最低價的購買點(例如:提示用戶五天後購買會更便宜),這一個小功能就足夠獲取大量忠實用戶並實現變現,而北美已經有網站實現了這個功能來預測機票價格。學習

對於零售業企業,有了每日銷量歷史數據,就能夠預測接下來天天的銷量範圍,從而更有針對性的進貨或者推出折扣促銷政策,保證商品的供需平衡。測試

製造業企業呢?假設某個大型供電箱生產銷售企業經常頭疼於電箱的維修難、維修貴等問題,若是能利用傳感器收集的歷史數據訓練出模型,在電箱故障前提早預警,那不管是維修仍是提早更換,成本總比電箱完全不工做後再去維修要少。優化

一言以蔽之,時間序列預測就是經過多種維度的數據自己內在與時間的關聯特性(其中可能包含季節性、趨勢性等等特徵),進而利用歷史數據預測將來的場景。網站

2019年的 WAIC(世界人工智能大會)上,AWS 展臺曾佈置並展現了一個使用 DeepAR 進行時間序列預測的項目,受到了來自客戶、參觀者以及同事的普遍關注。其中大部分觀衆是被展現項目中真實的電商客戶的數據及成果吸引。此外,AWS 相關團隊在與部分互聯網、旅遊行業的業務負責人溝通後,也發現時間序列預測有着普遍的適用場景,能直接幫助決策者作出有數據支撐的重要決策。人工智能

1.png
圖1:WAIC 展現的時間序列預測 DEMOspa

時序預測分類及算法

時序預測從不一樣角度看有不一樣分類。

  • 從實現原理的角度,可分爲傳通通計學和機器學習(又分非深度學習和深度學習)。
  • 按預測步長區分,可分爲單步預測和多步預測,簡單來講就是一次預測將來一個時間單元仍是一次預測將來多個時間單元的區別。
  • 按輸入變量區分,可分爲自迴歸預測和使用協變量進行預測,區別在於維度中是否含有協變量。例如預測將來銷售量時,若是隻接受時間和歷史銷售量數據,則是自迴歸預測;若是能夠接受天氣、經濟指數、政策事件分類等其餘相關變量(稱爲協變量),則稱爲使用協變量進行預測。
  • 按輸出結果區分,能夠分爲點預測和機率預測。不少模型只提供了點預測而不提供機率預測,點預測模型後再加蒙特卡洛模擬(或其餘轉化爲機率預測的方式)每每不能準確反映模型輸出的預測概念,而在大多數場景下,機率預測更貼近事實狀況,對於將來的預測自己就應該是一種機率分佈。
  • 按目標個數區分,能夠分爲一元、多元、多重時間序列預測。

舉例來講:使用歷史的銷售量預測將來1天的銷售量爲一元時間序列預測;使用歷史的進店人數、銷售量、退貨量預測將來1天的進店人數、銷售量、退貨量(預測目標有三個)爲多元時間序列預測;使用歷史的紅燒牛肉麪、酸菜牛肉麪、海鮮麪的銷售量預測將來1天的紅燒牛肉麪、酸菜牛肉麪、海鮮麪的銷售量(預測目標有三種)爲多重時間序列預測。這些分類是不一樣角度下的分類,同一種算法每每只能是分類中的一種,例如傳統的統計學算法只適合作自迴歸預測而不適合協變量預測。

2.png
圖2:時序預測分類對應關係

時序預測算法有不少不少,在這裏只介紹典型的四種算法,並着重介紹 DeepAR 算法。

time-series-prediction-with-deep4.png
圖3:四種時序預測算法

簡單移動平均 SMA 是統計學中易實現的一種算法,它能有效體現出數據長期的趨勢,但沒法反映數據週期性的變化。將自迴歸(AR)的算子加上移動平均(MA),就是 ARIMA 算法。迴歸可以反映數據的週期性規律,和移動平均造成互補,從統計學的角度能夠很好的預測一元與時間強相關場景下的時間序列,因爲原理簡單好理解,算法也只是一行數學公式,ARIMA 也經常在時間序列預測時先拿來作第一步實驗(baseline)。
長短時間記憶算法 LSTM 是在循環神經網絡 RNN 的基礎上,引出了遺忘門和記憶門,從而能夠在長期訓練的過程當中篩選出咱們須要的內容。在時間序列預測中,LSTM 對於一元預測場景的效果仍是不錯的。

DeepAR 則是一個自迴歸循環神經網絡,使用遞歸神經網絡(RNN)結合自迴歸 AR 來預測標量(一維)時間序列。在不少應用中,會有跨一組具備表明性單元的多個類似時間序列。DeepAR 會結合多個類似的時間序列,例如是不一樣方便麪口味的銷量數據,經過深度遞歸神經網絡學習不一樣時間序列內部的關聯特性,使用多元或多重的目標個數來提高總體的預測準確度。

DeepAR 最後會產生一個可選時間跨度的多步預測結果,單時間節點的預測爲機率預測,默認輸出 P十、P50 和 P90 三個值。這裏的 P10 指的是機率分佈,即10%的可能性會小於 P10 這個值。經過給出機率預測,咱們既可綜合三個值給出一個值預測,也可使用 P10 – P90 的區間作出相應的決策。有關 DeepAR 數學運算背景的更多信息,請參閱 DeepAR:機率性預測與自迴歸遞歸網絡

DeepAR 算法優點

在實踐種進行時間序列預測時不免會遇到關於數據的問題,例如沒法完整收集全部影響因素的數據,影響因素在將來具備不肯定性,有時只有不多甚至沒有歷史數據。數據每每是卡住大多數時序預測工做負載最大的問題。

DeepAR 可以在必定程度上減輕對數據的要求。做爲一種監督學習算法,DeepAR 直接在模型內部補充默認值。在導入數據的過程當中,咱們不須要人爲的掃描數據尋找默認值,不須要爲如何填補默認值大費周章,DeepAR 模型內部會解決這一問題。

利用 DeepAR 能夠將時間序列與多個分組關聯,能夠處理統計學難以處理的非線性問題和規模問題,能夠在幾乎沒有歷史數據的狀況下執行冷啓動時間序列預測,只須要有相似的事件序列相支持。例如,我有歷史方便麪的銷售數據若干,如今新上市了一款自熱米飯,只有幾天的數據,依然可使用 DeepAR 結合歷史方便麪的數據預測自熱米飯的將來銷售走勢。這也是算法的一大亮點。

聯合多重時間序列自己是一件挑戰性十足的事,數據樣本的不均衡致使了不一樣時間序列對於模型的影響程度是不一樣的。拿商品銷售爲例,銷售數量多一個數量級,商品數量就少一個數量級,每月賣10個的商品若是有100,000種,每月賣100個的商品就只有10,000種,每月賣1000個的商品就只有1000種。這種不均衡樣本致使輸入值的量級差別,商品 A 天天銷售數百個,商品 B 天天銷售數萬個,兩個商品共同訓練時商品A的信息會被忽略掉,由於相對於 B 而言,A 對神經網絡參數的影響過低。可是 A 時間序列中隱含的信息是有價值的,數百個銷售額仍然可以反映季節性和趨勢性的變化。

4.png
圖4:多重時間序列聯合的問題

而對於這種樣本量級差別的解決方法,須要對商品銷售量進行縮放,對應到神經網絡中,即輸入到神經網絡前除以 v,輸出後乘以 v。如何選擇爲每個商品選擇對應的 v 是一個挑戰,實踐發現使用商品的歷史銷量均值是一個不錯的選擇。

5.png
圖5:多重時間序列聯合一個可行方案

在 DeepAR 中這些問題的方案都包含在了算法內部,從而省去了前期大量的數據規整和清洗工做。這也就使得從使用的角度上,DeepAR 的上手難度並不高。而且在 Amazon SageMaker 和 Amazon Forecast 這兩個服務中,均可以快速方便的直接調用現成實現好的算法,輸入本身的數據進行訓練。

DeepAR 的使用

對於機器學習新手,Amazon Forecast 是一項徹底託管的服務,可使用包含 DeepAR 在內的機器學習算法來提供高度準確的預測,並由咱們手動指定算法或讓服務根據預測效果本身選擇。Amazon Forecast 以Amazon.com 使用的相同技術爲基礎,利用機器學習將時間序列數據與其餘變量相結合,以得到預測結果。

使用 Amazon Forecast 無需具有任何機器學習經驗。咱們只要提供歷史數據,以及認爲可能會影響預測結果的任何其餘數據便可。訓練、超參數調整、模型部署這些過程所有由服務自動執行,數個小時後就能夠利用生成好的終端節點進行預測。Amazon Forecast 也可以在模型上線後持續迭代並優化咱們的模型。

若是想要動手來自行訓練,得到更多定製化和手動處理數據,全面控制訓練過程,或者選擇自定義部署流程,此時 Amazon SageMaker 是更好的選擇。Amazon SageMaker 是一項徹底託管的服務,能夠幫助開發人員和數據科學家快速構建、訓練和部署機器學習(ML)模型。SageMaker 徹底消除了機器學習過程當中每一個步驟的繁重工做,讓開發高質量模型變得更加輕鬆。Amazon SageMaker 覆蓋了從數據打標籤到最終模型部署一整套的步驟支持和現成的容器化方法,使得開發人員和數據科學家能夠專一於他們所擅長的業務以及科學研究之中。DeepAR 做爲 SageMaker 內建的算法,能夠經過數行代碼調用,就能夠直接開始模型訓練。SageMaker 也提供了數個 DeepAR 相關示例,能夠在初期仿照示例筆記本處理本身的業務數據並生成模型,下降學習曲線。
在 SageMaker 上啓用一個筆記本實例,DeepAR 的示例筆記本在 Jupyter 的示例中能夠找到:

6.png
圖6:選擇 DeepAR 示例筆記本

隨後點擊 Use,進入示例筆記本:
7.png
圖6:SageMaker 中使用的 DeepAR

使用內置算法 DeepAR,咱們須要設置容器的名稱 forecasting-deepar:

8.png
圖7:設置容器名稱

數據預處理,按照文檔中的數據格式要求進行數據預處理,設置時間序列的跨度,預測跨度,起始終止時間,並切分訓練和測試數據集:

9.png
圖8:數據預處理

SageMaker 中使用的是封裝好的 DeepAR 模型容器,咱們只須要在筆記本中指定相關的命令參數和訓練參數,就能夠開始訓練。相面給出了一個示例定義:

10.png
圖9:訓練參數定義

模型訓練完成後,能夠定義預測方法類,並一步調用 API 執行部署:

11.png
圖10:定義推理方式並部署

這樣咱們就訓練好了一個基於 DeepAR,可用於預測電力供應的模型,隨後能夠在筆記本中繼續嘗試去預測接下來的幾組數據並與歷史數據進行比對。在實際使用 SageMaker 的過程當中,能夠先簡單跑一遍示例代碼,再逐步替換其中的數據、和改寫數據預處理的代碼。在掌握相關代碼後,還能夠嘗試獨立來編寫其餘流程的代碼,自定義在每個步驟中實現業務的需求。

底圖2.png

相關文章
相關標籤/搜索