當前位置:
首頁 > 知識 > 利用Auto ARIMA構建高性能時間序列模型

利用Auto ARIMA構建高性能時間序列模型

作者:AISHWARYA SINGH

翻譯:陳之炎

校對:丁楠雅

本文共3400字,建議閱讀10+分鐘。

本文介紹了ARIMA的概念,並帶你用Python和R訓練一個數據集實現它。

簡介

想像你現在有一個任務:根據已有的歷史數據,預測下一代iPhone的價格,可使用的特徵包括季度銷售、月度支出以及蘋果資產負債表上的一系列內容。作為一名數據科學家,你會把這個問題歸類為哪一類問題?當然是時間序列建模。

從預測產品銷售到估算家庭用電量,時間序列預測是任何數據科學家都應該知道——哪怕不是熟練掌握——的核心技能之一。你可以使用多種不同的方法進行時間序列預測,我們將在本文中討論Auto ARIMA,它是最為有效的方法之一。

首先,我們來了解一下ARIMA的概念,然後再進入正題——Auto ARIMA。為了鞏固概念,我們將使用一個數據集,並用Python和R實現它。

目錄

一、什麼是時間序列?

二、時間序列預測的方法

三、ARIMA簡介

四、ARIMA實現步驟

五、為什麼需要Auto ARIMA?

六、用Auto ARIMA實現案例(航空乘客數據集)

七、Auto ARIMA如何選擇參數?

如果你熟悉時間序列及其常用方法(如移動平均、指數平滑和ARIMA),則可以直接跳到第4節。對於初學者,請從下面這一節開始,內容包括對時間序列和各種預測方法的簡要介紹。

一、什麼是時間序列?

在我們學習如何處理時間序列數據之前,首先應理解什麼是時間序列,以及它與其他類型的數據的區別。時間序列的正式定義如下:它是一系列在相同時間間隔內測量到的數據點

簡言之,時間序列是指以固定的時間間隔記錄下的特定的值,時間間隔可以是小時、每天、每周、每10天等等。時間序列的特殊性是:該序列中的每個數據點都與先前的數據點相關。我們通過下面幾個例子來更清楚地理解這一點。

例1:

假設你從某公司獲得了一個貸款人員的數據集(如下表所示)。你認為每一行都與前面的行相關嗎?當然不是!一個人的貸款金額取決於他的經濟狀況和需要(可能還有其他因素,如家庭規模等,但為了簡單起見,我們只考慮收入和貸款類型)。此外,這些數據不是在特定時間間隔內收集的,它僅與公司何時收到貸款申請相關。

例2:

再舉一個例子。假設你有一個數據集,其中包含每天空氣中的二氧化碳水平(下面是截圖)。那麼可以通過過去幾天的數值來預測第二天的二氧化碳水平嗎?當然可以。如果你觀察到的數據是每天記錄下來的,那麼,時間間隔便是恆定的(24小時)。

現在你已經有了直覺,第一個例子是簡單的回歸問題,而第二個例子是時間序列問題。雖然這裡的時間序列問題也可以用線性回歸來解決,但這並不是最好的方法,因為它忽略了這些值與所有相對過去值之間的關係。下面,我們來了解一下解決時間序列問題的一些常用方法。

二、時間序列預測的方法

有許多種方法可以進行時間序列預測,我們將在這一節中對它們做簡要地介紹。下面提到的所有方法的詳細說明和Python代碼可以在下文中找到:

七種時間序列預測方法(附Python代碼):

https://www.analyticsvidhya.com/blog/2018/02/time-series-forecasting-methods/

1. 樸素預測法:在這種預測方法中,新數據點預測值等於前一個數據點的值。結果將會是一條平行線,因為所有預測的新值採用的都是先前的值。

2. 簡單平均值法:視下一個值為所有先前值的平均數。這一預測法要優於「樸素預測法」,因為它的結果不會是一條平行線。但是在簡單平均值法中,過去的所有值都被考慮進去了,而這些值可能並不都是有用的。例如,當要求預測今天的溫度時,你僅需要考慮前七天的溫度,而不是一個月前的溫度。

3. 移動平均法:這是對前兩個方法的改進。不取前面所有點的平均值,而是將n個先前的點的平均值作為預測值。

4. 加權移動平均法:加權移動平均是帶權重的移動平均,先前的n個值被賦予不同的權重。

5. 簡單指數平滑法:在這種方法中,更大的權重被分配給更近期的觀測結果,來自遙遠過去的觀測值則被賦予較小的權重。

6. 霍爾特(Holt)線性趨勢模型:該方法考慮了數據集的趨勢。所謂趨勢,指的是數據的遞增或遞減的性質。假設旅館的預訂數量每年都在增加,那麼我們可以說預訂數量呈現出增加的趨勢。該方法的預測函數是值和趨勢的函數。

7. 霍爾特-溫特斯(Holt Winters)方法:該演算法同時考慮了數據的趨勢和季節性。例如,一家酒店的預訂數量在周末很高,而在工作日則很低,並且每年都在增加;因此存在每周的季節性和增長的趨勢。

8. ARIMA:ARIMA是一種非常流行的時間序列建模方法。它描述了數據點之間的相關性,並考慮了數值之間的差異。ARIMA的改進版是SARIMA (或季節性ARIMA)。我們將在下一節中更詳細地討論ARIMA。

三、ARIMA簡介

在本節中,我們將簡要介紹ARIMA,這將有助於理解Auto Arima。「時間序列完整教程」一文中對ARIMA, (p,q,d) 參數,ACF、 PACF圖和具體實現有詳細的解釋。

ARIMA是一種非常流行的時間序列預測方法,它是自回歸綜合移動平均(Auto-Regressive Integrated Moving Averages)的首字母縮寫。ARIMA模型建立在以下假設的基礎上:

數據序列是平穩的,這意味著均值和方差不應隨時間而變化。通過對數變換或差分可以使序列平穩。

輸入的數據必須是單變數序列,因為ARIMA利用過去的數值預測未來的數值。

ARIMA有三個分量:AR(自回歸項)、I(差分項)和MA(移動平均項)。讓我們對每個分量做一下解釋:

AR項是指用於預測下一個值的過去值。AR項由ARIMA中的參數『p』定義。「p」的值是由PACF圖確定的。

MA項定義了預測未來值時過去預測誤差的數目。ARIMA中的參數『q』代表MA項。ACF圖用於識別正確的『q』值,

差分順序規定了對序列執行差分操作的次數,對數據進行差分操作的目的是使之保持平穩。像ADF和KPSS這樣的測試可以用來確定序列是否是平穩的,並有助於識別d值。

四、ARIMA實現步驟

實現ARIMA模型的通用步驟如下:

1. 載入數據:構建模型的第一步當然是載入數據集。

2. 預處理:根據數據集定義預處理步驟。包括創建時間戳、日期/時間列轉換為d類型、序列單變數化等。

3. 序列平穩化:為了滿足假設,應確保序列平穩。這包括檢查序列的平穩性和執行所需的轉換。

4. 確定d值:為了使序列平穩,執行差分操作的次數將確定為d值。

5. 創建ACF和PACF圖:這是ARIMA實現中最重要的一步。用ACF PACF圖來確定ARIMA模型的輸入參數。

6. 確定p值和q值:從上一步的ACF和PACF圖中讀取p和q的值。

7. 擬合ARIMA模型:利用我們從前面步驟中計算出來的數據和參數值,擬合ARIMA模型。

8. 在驗證集上進行預測:預測未來的值。

9. 計算RMSE:通過檢查RMSE值來檢查模型的性能,用驗證集上的預測值和實際值檢查RMSE值。

五、為什麼我們需要Auto ARIMA?

雖然ARIMA是一個非常強大的預測時間序列數據的模型,但是數據準備和參數調整過程是非常耗時的。在實現ARIMA之前,需要使數據保持平穩,並使用前面討論的ACF和PACF圖確定p和q的值。Auto ARIMA讓整個任務實現起來非常簡單,因為它去除了我們在上一節中提到的步驟3至6。下面是實現AUTO ARIMA應該遵循的步驟:

1. 載入數據:此步驟與ARIMA實現步驟1相同。將數據載入到筆記本中。

2. 預處理數據:輸入應該是單變數,因此刪除其他列。

3. 擬合Auto ARIMA:在單變數序列上擬合模型。

4. 在驗證集上進行預測:對驗證集進行預測。

5. 計算RMSE:用驗證集上的預測值和實際值檢查RMSE值。

正如你所看到的,我們完全繞過了選擇p和q的步驟。啊!可以鬆口氣了!在下一節中,我們將使用一個假想數據集實現Auto ARIMA。

六、Python和R的實現

我們將使用國際航空旅客數據集,此數據集包含每月乘客總數(以千為單位),它有兩欄-月份和乘客數。你可以從以下鏈接獲取數據集:

https://datamarket.com/data/set/22u3/international-airline-passengers-monthly-totals-in-thousands-jan-49-dec-60#!ds=22u3&display=line

以下是同一問題的R代碼:

七、Auto ARIMA如何選擇最佳參數

在上述代碼中,我們僅需用.efit()命令來擬合模型,而不必選擇p、q、d的組合,但是模型是如何確定這些參數的最佳組合的呢?Auto ARIMA生成AIC和BIC值(正如你在代碼中看到的那樣),以確定參數的最佳組合。AIC(赤池信息準則)和BIC(貝葉斯信息準則)值是用於比較模型的評估器。這些值越低,模型就越好。

如果你對AIC和BIC背後的數學感興趣,請訪問以下鏈接:

AIC:

http://www.statisticshowto.com/akaikes-information-criterion/

BIC:

http://www.statisticshowto.com/bayesian-information-criterion/

八、章節附註和進一步閱讀

我發現Auto ARIMA是進行時間序列預測的最簡單的方法。知道一條捷徑是件好事,但熟悉它背後的數學也同樣重要的。在這篇文章中,我略過了ARIMA如何工作的細節,但請務必閱讀本文中提供的鏈接的文章。為了方便你參考,這裡再次提供一遍鏈接:

時間序列預測初學者綜合指南(Python)

https://www.analyticsvidhya.com/blog/2016/02/time-series-forecasting-codes-python/

時間序列完整教程(R)

https://www.analyticsvidhya.com/blog/2015/12/complete-tutorial-time-series-modeling/

時間序列預測的七種方法 (附python代碼)

https://www.analyticsvidhya.com/blog/2018/02/time-series-forecasting-methods/

建議大家做一下這個課程中的練習題:「時間序列實戰」。你也可以參加我們的培訓課程,參與到實戰中來,「時間序列預測」課程為你提供一個領先的開端。

祝你好運,請在下面的評論部分提供你的反饋並提出問題。


原文標題:

Build High Performance Time Series Models using Auto ARIMA in Python and R

https://www.analyticsvidhya.com/blog/2018/08/auto-arima-time-series-modeling-python-r/

譯者簡介

陳之炎,北京交通大學通信與控制工程專業畢業,獲得工學碩士學位,歷任長城計算機軟體與系統公司工程師,大唐微電子公司工程師,現任北京吾譯超群科技有限公司技術支持。目前從事智能化翻譯教學系統的運營和維護,在人工智慧深度學習和自然語言處理(NLP)方面積累有一定的經驗。業餘時間喜愛翻譯創作,翻譯作品主要有:IEC-ISO 7816、伊拉克石油工程項目、新財稅主義宣言等等,其中中譯英作品「新財稅主義宣言」在GLOBAL TIMES正式發表。能夠利用業餘時間加入到THU 數據派平台的翻譯志願者小組,希望能和大家一起交流分享,共同進步


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 數據派THU 的精彩文章:

大數據應用中日交流論壇,共探數據應用與政策制度差異
近期活動盤點:2018數據與媒介發展論壇、大數據應用中日交流論壇

TAG:數據派THU |