使用 TensorFlow 進行時間序列預測:組件、模型和步驟
已發表: 2021-05-02目錄
什麼是時間序列預測?
你知道亞太地區是全球增長最大的深度學習市場,CAGR(複合年增長率)超過 40% 嗎? 時間序列 TensorFlow預測是深度學習和機器學習中的一個重要概念。 所有深度學習/ML 模型都有一個相應的數據集,該數據集是觀察的集合。 這些觀察通常包括時間成分。 時間序列按時間順序排列觀察結果,從而為數據集增加了一個新的維度,即時間。
有人可能會想,通過增加數據集的維度會實現什麼? 好吧,向您的數據集添加時間維度將在觀察之間創建詳細級別的依賴關係。 然後在先前觀察的時間序列預測的幫助下預測結果。
使用時間序列數據(歷史數據)來預測未來被稱為時間序列預測。 還應確保未來完全未知,只能根據歷史數據進行預測。
分析時間序列數據以開發有效描述數據的模型。 時間序列被分解為幾個用於開發 apt 模型的組件。 一旦開發出最能描述歷史數據的模型,就可以將其用於預測。 不應將時間序列分析與時間序列預測混為一談,因為後者只有在前者完成時才會起作用。
時間序列組件
在了解時間序列 TensorFlow預測之前,應該熟悉時間序列的組成部分。 在時間序列分析過程中,時間序列被分解為四個部分。 這些組件有助於正確理解數據集。 時間序列的四個組成部分如下:
- 趨勢——系列/數據集隨時間的行為由趨勢解釋。 時間序列的增加和減少行為由趨勢解釋。
- 級別- 級別是時間序列的基值,考慮到序列的表示是一條直線。 許多專家還將水平定義為系列的平均值。
- 季節性——隨時間重複的系列行為稱為季節性。 一些專家還將季節性稱為周期性波動。
- 噪聲——每個數據集都包含一些時間序列模型無法解釋的數據點/異常值。 這些數據集具有不可預測的屬性,無法通過時間序列分析/預測進行映射。
應該注意,時間序列必須有一個水平和一些噪音。 但是,時間序列中的趨勢和季節性是可選的。
為什麼選擇 TensorFlow?
雖然市場上有許多用於時間序列預測的框架,但在所有可用框架中,深度技術專業人士更喜歡 TensorFlow。 TensorFlow 是用 Python、C++ 和 CUDA 編寫的,這些都是廣泛使用的編程語言。 TensorFlow 是一個專為機器學習和深度學習而設計的開源軟件庫。
TensorFlow 幫助我們在時間序列分析期間構建用於預測的 ML 模型。 它為用戶提供構建各種類型的模型,如 CNN(卷積神經網絡)、RNN(循環神經網絡)等。TensorFlow 可以幫助您根據用戶和數據集預測單個時間步或多個時間步。 在時間序列 TensorFlow預測時,您可以:
- 預測單個時間步長的單個特徵/維度。
- 預測單個時間步長的數據集的所有維度。
- 一次預測多個步驟(一次做出所有預測)。
- 一次進行一個預測的多個步驟的預測(自回歸)。
為時間序列預測設置數據
在時間序列預測之前,我們需要相應地準備數據。 時間序列預測的設置包括數據提取、可視化、探索、清理等各種過程。讓我們看看設置時間序列預測數據的步驟:
- 基本步驟是導入數據或提取數據。 您需要有一個數據集,可以使用時間序列預測從中提取豐富的見解。
- 下一步是數據清理,刪除重複或不相關的數據點。 在這一步也處理丟失的數據。 如果早期發現任何異常值,請將它們從數據集中刪除。 結構錯誤也可以在數據清洗下修復。
- 時間序列中隨時間變化的量稱為信號。 這些信號還代表時間序列中的各種物理事件。 例如,如果在不同日期有任何位置的天氣描述時間序列,則信號將是溫度、降雨等物理事件。繼續將信號轉換為 sin cos 格式。
- 除了將信號轉換為 sin cos 格式外,還將時間和日期轉換為秒。 完成後,繪製時間和 sin cos 函數。
- 在預測和訓練我們的數據之前,我們將根據時間拆分數據以進一步簡化。
- 現在要在訓練之前對數據進行歸一化。 數據標準化最簡單的步驟是從每個數據點中減去數據集的平均值,然後除以標準差。
- 完成數據標準化後,您必須檢查數據偏差。 數據偏差被定義為與其他元素相比,數據集的某些元素被大量表示的情況。 有偏見的數據會導致準確性降低以及分析偏斜。 您可以繪製小提琴圖以消除數據集中存在的任何數據偏差。
數據窗口
您一定想知道在時間序列預測之前涉及到很多過程。 好吧,年輕的技術愛好者應該知道,數據準備是訓練或分析數據之前的關鍵步驟。 數據窗口化是為時間序列 TensorFlow預測設置數據的最後一步。 數據窗口有助於將數據與各種模型一起使用,而無需擔心。
例如,如果模型預測未來 1 小時,您需要 6 小時的歷史數據窗口才能有效預測。 歷史數據窗口稱為“輸入寬度”,而要預測的數據窗口在數據窗口期間稱為“偏移”。
結帳:最受歡迎的 TensorFlow 項目
TensorFlow 單步模型
當您擁有最簡單的數據集並僅預測未來一個時間步時,您將使用 TensorFlow 的單步模型。 例如,如果您創建了一個“小時”的數據窗口,則預測一個時間步長,這意味著您預測未來一小時。 在 TensorFlow 中創建了一個“WindowGenerator”對象來開發單步對,即輸入和標籤。
還建議在訓練模型之前創建基線模型。 創建基線模型將幫助您將初始單步模型與未來的複雜模型進行比較。 例如,如果您要預測未來 1 小時的溫度,則創建一個基線模型,返回當前溫度作為預測(無變化)。
由於溫度隨時間緩慢變化,因此一小時後溫度可能沒有變化。 請注意,在預測多個時間步長時,基線模型將無效。
使用 TensorFlow 創建單個時間步長模型的另一個示例是在輸入和輸出之間插入線性變換。 確保輸出僅取決於使用 TensorFlow 創建線性模型時要評估的單個時間步長。 密集模型是使用 TensorFlow 創建的另一個單步模型。
通過 TensorFlow 的捲積神經網絡也可用於預測單個時間步長。 TensorFlow 中的捲積層將採用多個時間步長作為預測時間步長的輸入。 RNN 也廣泛用於時間序列預測。
機器的內部狀態也會從一個時間步跳到另一個時間步,因為 RNN 會逐步處理時間序列(默認情況下)。 通過 RNN 進行時間序列 TensorFlow預測是一個不錯的選擇,因為 RNN 模型傾向於記住很長的輸入歷史(歷史數據)。
TensorFlow 多步模型
在多步模型中,預測是在一系列時間步長上進行的。 與單步模型不同,多步模型使用歷史數據預測一系列未來值。 多步模型可以通過單次預測一次預測整個未來時間序列。 您還可以使用自回歸預測,其中模型一次進行單步預測。 自回歸預測中單步預測的結果作為下一個時間步預測的輸入。
結論
與其他框架相比,時間序列 TensorFlow預測提供了準確的結果。 我們討論了一些可用於通過 TensorFlow 進行單步預測的單步模型(CNN、RNN、Dense 等)。
您還可以使用多步模型來預測一系列未來值。 還應注意,數據準備是時間序列 TensorFlow預測之前的關鍵步驟。 您可以通過選擇upGrad 的 DL 和 ML 高級證書計劃來了解有關 DL(深度學習)和 ML 中時間序列預測的更多信息。 開始使用 TensorFlow 學習時間序列預測!
使用 TensorFlow 有什麼限制?
儘管 TensorFlow 減少了代碼的長度,但它也使代碼有點複雜。 與其競爭對手相比,TensorFlow 速度較慢且可用性較差。 TensorFlow 在為不定序列提供符號循環方面落後於時代。 TensorFlow 只有 NVIDIA GPU 支持和 Python GPU 編程支持。 它沒有其他形式的支持。 對於 Windows 操作系統的用戶來說,它沒有太多優勢。
數字化儀記錄的每個有限序列的邊界處的不連續幅度通過加窗減小。 窗口系統允許許多應用程序同時共享計算機的圖形顯示和演示資源。 您可能希望在具有圖形用戶界面 (GUI) 的計算機上同時使用多個應用程序。
TensorFlow 難學嗎?
TensorFlow 對某些人來說很容易,而有些人則認為它很難學習。 如果你有各種編程語言的先驗知識,並且熟悉各種機器學習技術,那麼學習 TensorFlow 對你來說會很容易。 但是,難度級別也取決於您的興趣。 如果你真的對 TensorFlow 感興趣,學習它不會是一件很困難的事。