時間序列預測是一種強大的數據科學技術,用于根據過去的數據點預測未來值
借助 skforecast 等開源 Python 庫,您可以輕松地對數據運行時間序列預測。它們允許您“自帶”與 scikit-learn API 兼容的回歸器,讓您能夠靈活地與所選模型無縫協作。
隨著數據集和技術(例如直接多步驟預測)的不斷增加,需要您一次運行多個模型,在基于 CPU 的基礎設施上運行預測時,計算成本會很快變得昂貴。
RAPIDS 是開源 GPU 加速數據科學和 AI 庫的集合。 cuML 是一個 GPU 加速的 Python 機器學習庫,具有 scikit-learn 兼容 API。
在這篇博文中,我們展示了如何將 RAPIDS cuML 與 skforecast 結合使用,以加速時間序列預測,從而讓您能夠處理更大的數據集和預測窗口。
為什么要進行時間序列預測?
在當今數據驅動的世界中,企業依靠時間序列預測來做出明智決策、優化流程并降低風險。無論是預測股票市場趨勢、供需的突然變化,還是疾病的傳播,準確的預測對于規劃和策略都至關重要。
從歷史上看,每月或每周的預測可能已經足以支持決策。但是,隨著數據呈指數級增長和全球不確定性的增加,企業組織現在需要能夠近乎實時地進行預測,以便對其業務做出前瞻性決策。
多步驟預測?
時間序列預測中使用的一種熱門技術是遞歸多步驟預測 ,在此技術中,您可以訓練單個模型并遞歸地應用該模型來預測序列中的 下 n 個值 。
相比之下,直接多步驟預測使用單獨的模型來預測預測范圍內的每個未來值。換言之,您“直接”試圖預測前方的 n 個步驟,而不是通過遞歸來實現。這在某些情況下可以產生更好的結果,但由于需要訓練多個模型,因此計算成本更高。
將加速計算引入直接多步預測
可以將 RAPIDS cuML 應用到現有的 skforecast 工作流中。在下方示例中,我們創建了具有每小時季節性和正漂移的合成時間序列數據集。然后,我們使用 skforecast 的 ForecasterDirect
類進行直接多步驟預測,并將 scikit-learn 回歸器替換為 cuML 的 RandomForestRegressor:
import numpy as np import pandas as pd from skforecast.direct import ForecasterDirect from sklearn.ensemble import RandomForestRegressor import cuml USE_GPU = False # Parameters n_records = 100000 drift_rate = 0.001 seasonality_period = 24 start_date = '2010-01-01' # Create synthetic dataset with positive drift date_rng = pd.date_range(start = start_date, periods = n_records, freq = 'h' ) np.random.seed( 42 ) noise = np.random.randn(n_records) drift = np.cumsum(np.ones(n_records) * drift_rate) seasonality = np.sin(np.linspace( 0 , 2 * np.pi, n_records) * (n_records / seasonality_period)) data = noise + drift + seasonality df = pd.DataFrame(data, index = date_rng, columns = [ 'y' ]) if USE_GPU: forecaster = ForecasterDirect( regressor = cuml.ensemble.RandomForestRegressor( n_estimators = 200 , max_depth = 13 , ), steps = 100 , lags = 100 , n_jobs = 1 , ) else : forecaster = ForecasterDirect( regressor = RandomForestRegressor( n_estimators = 200 , max_depth = 13 , n_jobs = - 1 # parallelize Random Forest to use all CPU cores ), steps = 100 , lags = 100 , n_jobs = 1 , ) forecaster.fit(y = df[ 'y' ]) predictions = forecaster.predict() |
對于包含數十萬條記錄的大型數據集,基于 CPU 的回歸器可能需要很長時間才能完成每個預測。請記住,通過直接多步驟預測,我們正在為預測中的每個步驟訓練單獨的模型。在 CPU 上運行此預測需要超過 43 分鐘。
切換到 cuML 的 GPU 加速回歸器后,整個預測只需 103 秒即可完成,代碼更改最少,速度提升 25 倍。

由于預測的運行速度更快,因此我們可以更快地進行迭代并執行超參數優化以找到最佳擬合,或試用 cuML 支持的其他回歸器。
結束語?
時間序列預測已存在數十年,但在今天仍然非常重要。像直接多步驟預測等技術可用于優化預測,但隨著數據和預測規模的增長,計算成本會更高。
借助帶有 skforecast 的 RAPIDS cuML 等加速計算庫,您只需更改最少的代碼,即可輕松加速預測工作。
如需了解有關加速機器學習的更多信息,請訪問 cuML 文檔 ,或參加 NVIDIA Deep Learning Institute 的 Fundamentals of Accelerated Data Science 課程 。
?