全部產品
Search
文件中心

Platform For AI:x13_arima

更新時間:Apr 03, 2025

x13_arima是一種用於時間序列分析的演算法,專門用於處理季節性資料的調整。它基於開源軟體包X-13ARIMA-SEATS,結合了ARIMA模型和季節性調整技術,以提高預測的準確性和資料分析的有效性。

演算法說明

Arima全稱為自迴歸積分滑動平均模型(Autoregressive Integrated Moving Average Model),是由博克思(Box)和詹金斯(Jenkins)於70年代初提出的著名時間序列預測方法,所以又稱為box-jenkins模型、博克思-詹金斯法。

演算法規模如下:

  • 支援規模

    • 行:單Group資料最大1200條

    • 列:1數值列

  • 資源計算方式

    • 不設定groupColNames,預設計算方式

      coreNum=1
      memSizePerCore=4096
    • 設定groupColNames,預設計算方式

      coreNum=floor(總資料行數/12萬)
      memSizePerCore=4096

組件配置

方式一:可視化方式

在Designer工作流程頁面添加x13_arima組件,並在介面右側配置相關參數:

參數類型

參數

描述

欄位設定

時序列

必選,僅用來對數值列排序,具體數值與計算無關。

數值列

必選。

分組列

可選,多列以半形逗號(,)分隔,例如col0,col1,每個分組會構建一個時間序列。

參數設定

格式

支援輸入的格式為p,d,q。 p、d和q均為非負整數,取值範圍為[0, 36]

  • p:自迴歸係數

  • d:差分

  • q:滑動迴歸係數

開始日期

支援輸入的格式為year.seasonal。例如1986.1

series頻率

支援輸入正整數,取值範圍為12

格式

支援輸入的格式為sp,sd,sq。sp、sd和sq均為非負整數,取值範圍為[0, 36]

  • sp:季節性自迴歸係數。

  • sd:季節性差分。

  • sq:季節性滑動迴歸係數。

seasonal周期

支援輸入數字,取值範圍為(0,12]。預設值為12

預測條數

支援輸入數字,取值範圍為(0,120]。預設值為12

預測置信水平

支援輸入數字,取值範圍為(0, 1)預設值為0.95

執行調優

核心數目

節點個數,預設自動計算。

記憶體數

單個節點記憶體大小,單位為MB。

方式二:PAI命令方式

使用PAI命令配置x13_arima組件參數。您可以使用SQL指令碼組件進行PAI命令調用,詳情請參見SQL指令碼

PAI -name x13_arima
    -project algo_public
    -DinputTableName=pai_ft_x13_arima_input
    -DseqColName=id
    -DvalueColName=number
    -Dorder=3,1,1
    -Dstart=1949.1
    -Dfrequency=12
    -Dseasonal=0,1,1
    -Dperiod=12
    -DpredictStep=12
    -DoutputPredictTableName=pai_ft_x13_arima_out_predict
    -DoutputDetailTableName=pai_ft_x13_arima_out_detail

參數

是否必選

預設值

描述

inputTableName

輸入表的名稱。

inputTablePartitions

預設選擇所有分區

輸入表中,用於訓練的特徵列名。

seqColName

時序列。僅用來對valueColName排序。

valueColName

數值列。

groupColNames

分組列,多列用逗號分隔,例如col0,col1。每個分組會構建一個時間序列。

order

p、d和q分別表示自迴歸係數、差分、滑動迴歸係數。取值均為非負整數,範圍為[0, 36]

start

1.1

時序開始日期。字串類型,格式為year.seasonal,例如1986.1。請參見時序格式介紹

frequency

12

說明

12表示12月/年。

時序頻率。正整數類型,範圍為(0, 12]。請參見時序格式介紹

seasonal

無seasonal

sp、sd和sq分別表示季節性自迴歸係數、季節性差分、季節性滑動迴歸係數。取值均為非負整數,範圍為[0, 36]

period

frequency

seasonal周期。數字類型,取值範圍為(0, 100]

maxiter

1500

最大迭代次數。正整數類型。

tol

1e-5

容忍度,DOUBLE類型。

predictStep

12

預測條數。數字類型,取值範圍為(0, 365]

confidenceLevel

0.95

預測置信水平。數字類型,取值範圍為(0, 1)

outputPredictTableName

預測輸出表。

outputDetailTableName

詳細資料表。

outputTablePartition

預設不輸出到分區

輸出分區,分區名。

coreNum

預設自動計算

節點個數,與參數memSizePerCore配對使用,正整數。

memSizePerCore

預設自動計算

單個節點記憶體大小,單位為MB。正整數,取值範圍為[1024, 64 *1024]

lifecycle

預設沒有生命週期

指定輸出表的生命週期。

時序格式介紹

參數startfrequency規定了資料(valueColName)的兩個時間維度ts1、ts2:

  • frequency:表示單位周期內資料的頻率,即單位ts1中ts2的頻率。

  • start:格式為n1.n2,表示開始日期是第n1個ts1中的第n2個ts2。

單位時間

ts1

ts2

frequency

start

12月/年

12

1949.2 表示第1949年中的第2個月

4季/年

4

1949.2 表示第1949年中的第2個季度

7天/周

7

1949.2 表示第1949周中的第2天

1

任何時間單位

1

1

1949.1 表示第1949(年、天、時等)

例如value=[1,2,3,5,6,7,8,9,10,11,12,13,14,15]

  • start=1949.3,frequency=12表示資料是12月/年,預測開始日期是1950.06。

    year

    Jan

    Feb

    Mar

    Apr

    May

    Jun

    Jul

    Aug

    Sep

    Oct

    1949

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    1950

    11

    12

    13

    14

    15

  • start=1949.3,frequency=4表示資料是4季/年,預測開始的日期是1953.02。

    year

    Qtr1

    Qtr2

    Qtr3

    Qtr4

    1949

    1

    2

    1950

    3

    4

    5

    6

    1951

    7

    8

    9

    10

    1952

    11

    12

    13

    14

    1953

    14

    15

  • start=1949.3,frequency=7表示資料是7天/周,預測開始的日期是1951.04。

    week

    Sun

    Mon

    Tue

    Wed

    Thu

    Fri

    Sat

    1949

    1

    2

    3

    4

    5

    1950

    6

    7

    8

    9

    10

    11

    12

    1951

    13

    14

    15

  • start=1949.1,frequency=1表示任何時間單位,預測開始日期是1963.00。

    cycle

    p1

    1949

    1

    1950

    2

    1951

    3

    1952

    4

    1953

    5

    1954

    6

    1955

    7

    1956

    8

    1957

    9

    1958

    10

    1959

    11

    1960

    12

    1961

    13

    1962

    14

    1963

    15

具體樣本

準備測試資料

使用的資料集為AirPassengers.csv,是1949~1960年每個月國際航空的乘客數量,如下表所示。關於該資料集更詳細的內容介紹,請參見AirPassengers

id

number

1

112

2

118

3

132

4

129

5

121

...

...

使用MaxCompute用戶端的Tunnel命令上傳資料,命令如下。關於MaxCompute用戶端的安裝及配置請參見使用本地用戶端(odpscmd)串連,關於Tunnel命令使用詳情請參見Tunnel命令

create table pai_ft_x13_arima_input(id bigint,number bigint);
tunnel upload xxxx/airpassengers.csv pai_ft_x13_arima_input -h true;

執行PAI 命令

您可以使用SQL指令碼執行如下PAI命令,也可以使用ODPS SQL節點執行如下PAI命令。

PAI -name x13_arima
    -project algo_public
    -DinputTableName=pai_ft_x13_arima_input
    -DseqColName=id
    -DvalueColName=number
    -Dorder=3,1,1
    -Dseasonal=0,1,1
    -Dstart=1949.1
    -Dfrequency=12
    -Dperiod=12
    -DpredictStep=12
    -DoutputPredictTableName=pai_ft_x13_arima_out_predict
    -DoutputDetailTableName=pai_ft_x13_arima_out_detail

輸出說明:

  • 輸出表outputPredictTableName

    • 欄位說明

      column name

      comment

      pdate

      預測日期。

      forecast

      預測結論。

      lower

      信賴度為 confidenceLevel(預設0.95)時,預測結論下界。

      upper

      信賴度為 confidenceLevel(預設0.95)時,預測結論上界。

    • 資料展示

      image

  • 輸出表outputDetailTableName

    • 欄位說明

      column name

      comment

      key

      • model:表示模型

      • evaluation:表示評估結果

      • parameters:表示訓練參數

      • log:表示訓練日誌

      summary

      儲存具體資訊。

    • 資料展示

      image

常見問題

  • 為什麼預測結果都一樣?

    在模型訓練異常時,會調用均值模型,則所有預測結果都是訓練資料的均值。常見的異常包括時序差分diff後不穩定、訓練沒有收斂、方差為0等,您可以在logview中查看單獨節點的stderr檔案,擷取具體的異常資訊。

  • 參數非常多,如何設定?

    x13_arima組件需要設定p、d、q、sp、sd和sq等參數,如果不確定如何配置,建議使用

    x13_auto_arima組件。該組件只需設定上界,系統會自動搜尋最優參數。

  • 異常資訊:ERROR: Number of observations after differencing and/or conditional AR estimation is 9, which is less than the minimum series length required for the model estimated, 24

    異常原因為資料較少,請調整頻率,或增加資料。

  • 異常資訊:ERROR: Order of the MA operator is too large

    異常原因為資料較少。

  • 異常資訊:ERROR: Series to be modelled and/or seasonally adjusted must have at least 3 complete years of data

    如果填寫了季節性參數,則需要3年的資料。

相關文檔

x13_arima組件需要設定p、d、q、sp、sd和sq等參數,如果不確定如何配置,建議使用x13_auto_arima組件。該組件只需設定上界,系統會自動搜尋最優參數。詳情請參見x13_auto_arima