傳統機器學習ARIMA模型是一種随機時序分析,其實質是差分運算和ARMA模型的組合,但由于ARIMA模型需要調整的參數比較多且網格尋優速度比較慢,是以Auto-ARIMA應運而生。由于Auto-ARIMA隻需自定義參數範圍并自己尋找最佳參數。是以其實是比較容易實作的。但是它的預測精度其實是不如用ARIMA手動尋找的精度高的,但是由于其友善快捷,其實還是有一定的可用性。
廢話不多說直接上代碼
1.代碼
model = pm.auto_arima(x_train["y"], start_p=1, start_q=1, test='adf', # use adftest to find optimal 'd' max_p=int(len(y)/10), max_q=int(len(y)/10), # 一般都是取這個範圍直接套用 m=1, # frequency of series d=None, # let model determine 'd' seasonal=True, # No Seasonality start_P=0, D=0, trace=True, error_action='ignore', suppress_warnings=True, stepwise=True ) print(model.summary())
2.重要參數
解釋一下比較重要的參數
首先你輸入的資料一定要保證是一維資料浮點型的資料,一定不能有空值
max_p ,start_p,用來限制p的範圍
trace 控制平滑 True,Flase
stepwise顯示運作的過程
seasonal 季節性
exogenous 可以添加額外的變量,這裡的導入一個跟資料集一樣長度的特征序列就可,但是一定要注意,你在預測時也要放入同樣多的特征,否則識别不了。詳細解釋可以看我另一篇關于ARIMAX的部落格。
d=None,會自動選擇d階差分,但是會比較慢
D=None,周期模型差分自動選擇
m=12,周期數,這個根據你自己的資料集來選,比如按照月來分析就是m=12,按照季度就是等于4,按照年的就是1,這時自動關掉seasonal
information_critertion 控制選擇标準的,一般選‘aic' 或者’bic‘
3.結果展示
最後會顯示下面這一堆
這裡會自動使用最佳模型, 當然你也可以選擇劃分出一個驗證集,驗證一下,然後再預測y_pred = model.predict(91)#預測未來九十一個值