Kaggle知識點:skforecast時序預測庫

時間序列是一係列按照時間順序排列的數據,這些數據之間的間隔可以是等距的,也可以是不等距的。 時間序列的預測過程包括通過對時間序列的過去行為(wei) 進行建模(自回歸)或使用其他外部變量來預測時間序列的未來值。

Kaggle知識點:skforecast時序預測庫

本文介紹了如何使用Scikit-learn回歸模型來進行時間序列的預測。具體(ti) 而言,它介紹了Skforecast,一個(ge) 簡單的庫,包含了將任何Scikit-learn回歸模型適應於(yu) 預測問題所需的類和函數。

本文源碼地址:https://www.cienciadedatos.net/documentos/py27-time-series-forecasting-python-scikitlearn.html

時序預測基礎

為(wei) 了將機器學習(xi) 模型應用於(yu) 預測問題,需要將時間序列轉換為(wei) 一個(ge) 矩陣,其中每個(ge) 值與(yu) 其之前的時間窗口(滯後)相關(guan) 聯。

在時間序列的背景下,滯後是指相對於(yu) 時間步長 ? 的值,即係列在之前時間步長上的取值。例如,滯後1是指時間步長 ?−1 的值,而滯後 ? 是指時間步長 ?−? 的值。這種轉換還允許包含額外的變量。

一旦數據被重新排列成新的形式,任何回歸模型都可以被訓練來預測係列的下一個(ge) 值(步長)。在模型訓練過程中,每一行被視為(wei) 一個(ge) 獨立的數據實例,其中滯後1、2、... ? 的值被視為(wei) 時間步長 ?+1 上目標時間序列的預測變量。

多步時間序列預測

在處理時間序列時,很少隻需要預測係列中的下一個(ge) 元素 (?+1)。相反,最常見的目標是預測整個(ge) 未來的時間間隔 (?+1, ..., ?+?) 或者一個(ge) 較遠的時間點 (?+?)。有幾種策略可以生成這種類型的預測。

遞歸多步預測

由於(yu) 預測 需要知道值 ,而 是未知的,因此采用遞歸過程,每個(ge) 新的預測都基於(yu) 前一個(ge) 預測。這個(ge) 過程被稱為(wei) 遞歸預測或遞歸多步預測,可以通過ForecasterAutoreg和ForecasterAutoregCustom類輕鬆生成。

Kaggle知識點:skforecast時序預測庫

直接多步預測

直接多步預測包括針對預測時間跨度的每個(ge) 步驟訓練一個(ge) 不同的模型。例如,要預測時間序列的接下來的5個(ge) 值,需要訓練5個(ge) 不同的模型,每個(ge) 步驟一個(ge) 模型。因此,預測是相互獨立的。

Kaggle知識點:skforecast時序預測庫

這種方法的主要複雜性在於(yu) 為(wei) 每個(ge) 模型生成正確的標簽矩陣。skforecast庫中的ForecasterAutoregDirect類自動化了這個(ge) 過程。同時需要注意的是,這種策略的計算成本較高,因為(wei) 需要訓練多個(ge) 模型。下麵的圖示展示了一個(ge) 具有響應變量和兩(liang) 個(ge) 外生變量的情況下的過程。

多輸出預測

某些機器學習(xi) 模型,例如長短期記憶(LSTM)神經網絡,可以同時預測一個(ge) 序列的多個(ge) 值(一次性預測)。目前skforecast庫尚未實現這種策略。

案例1:遞歸自回歸預測

數據集記錄了1991年至2008年期間澳大利亞(ya) 衛生係統在皮質類固醇藥物上的月度支出(以百萬(wan) 美元為(wei) 單位)。目標是創建一個(ge) 自回歸模型,能夠預測未來的月度支出。

Kaggle知識點:skforecast時序預測庫

使用ForecasterAutoreg類,可以創建一個(ge) 模型,並使用RandomForestRegressor回歸器進行訓練,時間窗口為(wei) 6個(ge) 滯後值。這意味著模型使用前6個(ge) 月的數據作為(wei) 自變量。

forecaster = ForecasterAutoreg(                 regressor = RandomForestRegressor(random_state=123),                 lags      = 6 )

forecaster.fit(y=data_train['y'])
forecaster

Kaggle知識點:skforecast時序預測庫

也可以設置模型超參數進行調參:

steps = 36 forecaster = ForecasterAutoreg(                 regressor = RandomForestRegressor(random_state=123),                 lags      = 12 # This value will be replaced in the grid search )

# Lags used as predictors lags_grid = [10, 20]

# Regressor's hyperparameters param_grid = {'n_estimators': [100, 500], 'max_depth': [3, 5, 10]}
results_grid = grid_search_forecaster(
forecaster         = forecaster,
y                  = data_train['y'],
param_grid         = param_grid,
lags_grid          = lags_grid,
steps              = steps,
refit              = True,
metric             = 'mean_squared_error',
initial_train_size = int(len(data_train)*0.5),
fixed_train_size   = False,
return_best        = True,
verbose            = False
)

回測是建模中的一個(ge) 術語,指對曆史數據上進行預測模型的測試。回測涉及向過去逐步移動,根據需要進行多個(ge) 階段的測試。回測是一種特殊類型的交叉驗證,應用於(yu) 之前的時間段。

Kaggle知識點:skforecast時序預測庫

Kaggle知識點:skforecast時序預測庫

案例2:外部特征多元回歸

在前麵的例子中,隻使用了預測變量本身的滯後值作為(wei) 預測變量。在某些情況下,可能會(hui) 有關(guan) 於(yu) 其他變量的信息,其未來值是已知的,因此可以作為(wei) 模型中的額外預測變量。

Kaggle知識點:skforecast時序預測庫

forecaster = ForecasterAutoreg(                 regressor = RandomForestRegressor(random_state=123),                 lags      = 8              )

forecaster.fit(y=data_train['y'], exog=data_train['exog_1'])
forecaster

Kaggle知識點:skforecast時序預測庫

案例3:模型多步預測

ForecasterAutoreg和ForecasterAutoregCustom模型采用遞歸預測策略,每個(ge) 新的預測都建立在前一個(ge) 預測的基礎上。另一種方法是為(wei) 要預測的每個(ge) 步驟訓練一個(ge) 模型。

這種策略通常被稱為(wei) 直接多步預測,它在計算上比遞歸更昂貴,因為(wei) 需要訓練多個(ge) 模型。然而,在某些情況下,它可以獲得更好的結果。使用ForecasterAutoregDirect類可以獲得這種類型的模型,並且可以包括一個(ge) 或多個(ge) 外生變量。

Kaggle知識點:skforecast時序預測庫

forecaster = ForecasterAutoregDirect(                 regressor     = Lasso(random_state=123),                 transformer_y = StandardScaler(),                 steps         = 36,                 lags          = 8 )

forecaster

其他案例

skforecast提供了太多的功能,其他典型案例包括:

  • 多係列預測

https://skforecast.org/0.8.1/user_guides/independent-multi-time-series-forecasting.html

  • 多變量預測

https://skforecast.org/0.8.1/user_guides/dependent-multi-series-multivariate-forecasting.html

  • 加權時間序列預測

https://skforecast.org/0.8.1/user_guides/weighted-time-series-forecasting.html

  • 帶有缺失值的時間序列預測

https://skforecast.org/0.8.1/faq/forecasting-time-series-with-missing-values.html

【競賽報名/項目谘詢+微信:mollywei007】

上一篇

美國大學更看重什麽樣的課外活動?

下一篇

評委招募 | 2022-2023 ICC評委線上報名通道已開啟

你也可能喜歡

  • 暫無相關文章!

評論已經被關(guan) 閉。

插入圖片
返回頂部