共用方式為


Microsoft 時間序列演算法技術參考

Microsoft 時間序列演算法包括兩種不同的演算法:

  • SQL Server 2005 中所導入的 ARTXP 演算法是為了預測數列中的下一個可能值而最佳化。

  • SQL Server 2008 中加入了 ARIMA 演算法來提高長期預測的精確度。

根據預設,Analysis Services 會個別使用每一個演算法來定型此模型,然後混合結果來針對變動數目的預測產生最佳預測。您也可以選擇根據資料和預測需求來使用其中一個演算法。在 SQL Server 2008 Enterprise 中,您也可以自訂中斷點,在預測期間控制演算法的混合。

本主題將提供有關如何實作每一個演算法以及如何自訂演算法 (藉由設定參數來微調分析和預測結果) 的詳細資訊。

實作時間序列演算法

Microsoft 研究人員開發了 ARTXP 演算法,並讓它以 Microsoft 決策樹演算法為基礎 (此演算法是代表週期性時間序列資料的自動迴歸樹狀模型)。ARTXP 演算法會將變動數目的過去項目與所預測的每一個目前項目產生關聯。ARTXP 名稱是從 ART 演算法或自動迴歸樹狀方法會套用到多個未知舊狀態的事實衍生而來。如需 ARTXP 演算法的詳細說明,請參閱<時間序列分析的自動迴歸樹狀模型>(英文)。

ARIMA 演算法是用於長期預測。它是由 Box 和 Jenkins 所開發的 ARIMA 演算法實作。ARIMA (或稱為自動迴歸整合式移動平均) 是一個知名的方法,用於判斷循序取得之觀察的相依性。它也支援乘法季節分析。ARIMA 演算法會使用自動迴歸和移動平均這兩個術語。

雖然 ARTXP 演算法支援交叉預測,但是 ARIMA 演算法則不支援。因此,只有當您使用混合的演算法,或是當您設定此模型只能使用 ARTXP 時,才能使用交叉預測。

自訂 Microsoft 時間序列演算法

Microsoft 時間序列演算法支援數個會影響所產生之採礦模型的行為、效能和精確度的參數。

季節性的偵測

兩個演算法都支援季節性或週期性的偵測。Analysis Services 會使用快速傅立葉變換,在定型之前偵測季節性。

為了達到最佳結果,您可以設定演算法參數來控制季節性偵測。藉由變更 AUTODETECT_SEASONALITY 的值,您就可以影響產生之可能時間區段的數目。藉由設定 PERIODICITY_HINT 的一個值或多個值,您就可以為演算法提供有關已知重複週期的資訊,以及增加偵測的精確度。

[!附註]

ARTXP 和 ARIMA 演算法對於季節性提示非常敏感。因此,提供錯誤的提示對於結果會有負面的影響。

演算法的混合

根據預設,Analysis Services 會結合這些演算法,並將其視為具有相同的權重。但是在 SQL Server 2008 Enterprise 中,您可以自訂結果的混合,其方式是選取 MIXED 選項,並設定參數來加權短期或長期預測的結果。

如果您要使用交叉預測,您就必須使用 ARTXP 或 MIXED 選項,因為 ARIMA 不支援交叉預測。

若要控制演算法的選擇,您可設定 FORECAST_METHOD 參數。根據預設,FORECAST_METHOD 參數會設定為 MIXED,而 Analysis Services 會使用這兩個演算法,然後加權它們的值,讓每一個演算法的強度最大化。但是,如果您只想要使用 ARTXP 演算法,您可以將 FORECAST_METHOD 設定為 ARTXP;如果您只想要使用 ARIMA 演算法,則可以將它設定為 ARIMA。

在 SQL Server 2008 Enterprise 中,您也可以自訂 Analysis Services 混合 ARIMA 與 ARTXP 演算法組合的方式。您可以藉由設定 PREDICTION_SMOOTHING 參數來控制此混合的起點及變動率:

  • 如果您將 PREDICTION_SMOOTHING 設定為 0,此模型就會變成純正的 ARTXP。

  • 如果您將 PREDICTION_SMOOTHING 設定為 1,此模型會變成純正的 ARIMA。

  • 如果您將 set PREDICTION_SMOOTHING 設定為 0 與 1 之間的值,此模型會將 ARTXP 演算法加權為預測步驟的指數遞減函數。同時,此模型也會將 ARIMA 演算法加權為與 1 互補的 ARTXP 權重。此模型會使用正規化和穩定化常數來讓曲線平滑。

一般來說,如果您預測高達 5 個時間配量,ARTXP 幾乎都是最佳的選擇。但是,當您增加要預測的時間配量數目時,ARIMA 的執行效能通常會比較好。

下圖說明當 PREDICTION_SMOOTHING 設定為預設值 0.5 時,此模型要如何混合演算法。ARIMA 和 ARTXP 一開始會有相同的權重,但是當預測步驟的數目增加時,ARIMA 的權重就會加重。

混合時間序列演算法的預設曲線

相較之下,下圖會說明當 PREDICTION_SMOOTHING 設定為 0.2 時,要如何混合演算法。如果是 0 步驟,此模型會將 ARIMA 加權為 0.2,並將 ARTXP 加權為 0.8。因此,ARIMA 的權重會以指數方式增加,ARTXP 的權重則會以指數方式減少。

混合時間序列模型的衰變曲線

設定演算法參數

下表描述可用於 Microsoft 時間序列演算法的參數。

參數

描述

AUTO_DETECT_PERIODICITY

指定 0 和 1 之間的數值,用於偵測週期性。預設值是 0.6。

如果將此值設定為越接近 0,則只會偵測到週期性很強的資料。

將這個值設定為越接近 1,就會探索更多接近週期性的模式,並自動產生週期性提示。

附註附註
處理大量週期性提示時,可能會造成更長的模型定型時間及更精確的模型。

COMPLEXITY_PENALTY

控制決策樹的成長。預設值是 0.1。

減少此值可增加分割的機率。增加此值可減少分割的機率。

附註附註
這個參數只適用於 SQL Server Enterprise。

FORECAST_METHOD

指定要使用哪一個演算法來分析和預測。可能的值為 ARTXP、ARIMA 或 MIXED。預設值是 MIXED。

HISTORIC_MODEL_COUNT

指定要建立的記錄模型數目。預設值是 1。

附註附註
這個參數只適用於 SQL Server Enterprise。

HISTORICAL_MODEL_GAP

指定兩個連續記錄模型之間的時間延遲。預設值是 10。此值代表時間單位數,此單位是由模型所定義。

例如,將此值設定為 g,會造成要建立記錄模型的資料,按 g、2*g、3*g 等等的間隔而遭到時間配量截斷。

附註附註
這個參數只適用於 SQL Server Enterprise。

INSTABILITY_SENSITIVITY

控制預測變異數超出某個臨界值而且 ARTXP 演算法隱藏預測的那個點。預設值為 1。

附註附註
這個參數只適用於 ARTXP,因此不會套用到只使用 ARIMA 演算法所建立的模型。如果套用到 MIXED 模型,此參數只會套用到此模型的 ARTXP 部分。

預設值 1 會提供與 SQL Server 2005 中的 ARTXP 模型相同的行為。Analysis Services 會監視每一個預測的正規化標準差。一旦任何預測的標準差超出此臨界值,時間序列演算法就會傳回 NULL,並停止預測程序。

0 值會停止不穩定的偵測。這表示,您可以建立無限的預測數,不論變異數為何。

附註附註
這個參數只能在 SQL Server Enterprise 中修改。在 SQL Server Standard 中,Analysis Services 只會使用預設值 1。

MAXIMUM_SERIES_VALUE

指定用於預測的最大值。這個參數會搭配 MINIMUM_SERIES_VALUE 一起使用,將預測限制為某個預期的範圍。例如,您可以指定任何一天的預期銷售數量絕對不能超過存貨中的產品數。

附註附註
這個參數只適用於 SQL Server Enterprise。

MINIMUM_SERIES_VALUE

指定可以預測的最小值。這個參數會搭配 MAXIMUM_SERIES_VALUE 一起使用,將預測限制為某個預期的範圍。例如,您可以指定預期銷售數量絕對不能是負數。

附註附註
這個參數只適用於 SQL Server Enterprise。

MINIMUM_SUPPORT

指定要在每一個時間序列樹中產生分割所需之時間配量的最小數目。預設值是 10。

MISSING_VALUE_SUBSTITUTION

指定如何填滿歷程記錄資料中的間距。根據預設,資料中不允許有間隔。

下表列出此參數的可能值:

值描述
上一個重複先前時間配量中的值。
平均數使用定型中使用之時間配量的移動平均。
數值常數使用指定的數目來取代所有遺漏的值。
無使用沿著定型模型曲線所繪製的值來取代遺漏的值。 這是預設值。

如果資料包含多個數列,數列也不能有不完全的邊緣。也就是說,所有的數列都應該有相同的起點和終點。

當您在時間序列模型上執行 PREDICTION JOIN 時,Analysis Services 也會使用這個參數值來填滿新資料中的間距。

PERIODICITY_HINT

提供演算法關於資料週期性的提示。例如,若每年銷售不同,而且數列中的度量單位是月,則週期性是 12。此參數採用 {n [, n]} 的格式,其中 n 是任何正數。

方括號 [] 內的 n 是選擇性的,可以視需要而重複。例如,若要針對每個月提供的資料來提供多個週期性提示,您可輸入 {12, 3, 1} 來偵測年、季和月的模式。但是,週期性對於模型的品質有很大的影響。如果您所給的提示與實際週期性不同,對結果會有負面影響。

預設值為 {1}。

附註附註
必須用大括號括住。而且,這個參數具有字串資料類型。因此,如果您在資料採礦延伸模組 (DMX) 陳述式中輸入這個參數,您必須以引號括住數字和大括號。

PREDICTION_SMOOTHING

指定應該如何混合模型來讓預測最佳化。您可以輸入 0 與 1 之間的任何值,或是使用下列其中一個值:

附註附註
使用 FORECAST_METHOD 參數來控制定型。
値說明
0指定預測只能使用 ARTXP。已針對較少的預測數而最佳化預測。
1指定預測只能使用 ARIMA。已針對許多的預測數而最佳化預測。
0.5(預設值) 指定在預測時,這兩個演算法都應該使用,而且應該混合結果。
附註附註
這個參數只適用於 SQL Server Enterprise。

模型旗標

Microsoft 時間序列演算法支援下列模型旗標。當您建立採礦結構或採礦模型時,您會定義模型旗標來指定分析期間要如何處理每個資料行中的值。如需詳細資訊,請參閱<模型旗標 (資料採礦)>。

模型旗標

描述

NOT NULL

表示資料行不能包含 Null 值。如果 Analysis Services 在模型定型期間遇到 Null 值,將會產生錯誤。

適用於採礦結構資料行。

MODEL_EXISTENCE_ONLY

表示資料行將被視為擁有兩個可能狀態:「遺漏」和「現有」。Null 為遺漏值。

適用於採礦模型資料行。

需求

時間序列模型必須包含 Key Time 資料行,此資料行中包含唯一的值、輸入資料行和至少一個可預測資料行。

輸入資料行和可預測資料行

Microsoft 時間序列演算法支援特定輸入資料行內容類型、可預測資料行內容類型和模型旗標,這些都會在下表中列出。

資料行

內容類型

輸入屬性

Continuous、Key、Key Time 和 Table

可預測屬性

Continuous、Table

[!附註]

系統支援 Cyclical 和 Ordered 內容類型,但是演算法將它們視為離散值,因此不會執行特殊處理。