Microsoft 時間序列演算法

更新: 2007 年 9 月 15 日

Microsoft 時間序列演算法是由 Microsoft SQL Server 2005 Analysis Services (SSAS) 提供的迴歸演算法,用來建立資料採礦模型以預測連續資料行,例如預測狀況中的產品銷售。雖然有些 Microsoft 演算法可以建立模型 (例如決策樹模型),其中會依賴給定的輸入資料行來預測可預測資料行;但時間序列模型的預測,只會依據演算法在建立模型時從原始資料集所衍生的趨勢。下列圖表所顯示的,就是一個典型模型,其中預測經過一段時間之後的產品銷售量。

時間序列的範例

此圖表中顯示的型是由兩個部分組成:位於圖表左邊的歷程記錄資訊,以及位於圖表右邊的預測資訊。歷程記錄資料代表演算法用來建立模型的資訊,而預測資料代表模型所產生的預測。結合歷程記錄和預測資料而形成的線條稱為序列。每一個預測模型必須包含一個案例序列,它是用來區分序列中各個點的資料行。例如,由於圖表中的資料顯示歷程記錄的和預測的腳踏車銷售幾個月以來的序列,所以日期資料行就是案例序列。

Microsoft 時間序列演算法的重要功能之一是執行交叉預測的能力。這表示如果您以兩個分開但相關的序列來培訓演算法,則可以使用產生的模型依據其他序列的行為來預測一個序列的結果。例如,一個產品的已知銷售量會影響另一個產品的預測銷售量。

範例

Adventure Works Cycles 公司的管理團隊想要預測來年的每月腳踏車銷售量。公司特別想要知道不同款的腳踏車之銷售成績,在彼此之間是否有關聯性,亦即,某一款腳踏車的銷售量是否可用來預測另一款的銷售量。公司針對過去這 3 年的歷程記錄資料使用 Microsoft 時間序列演算法,可以產生資料採礦模型來預測未來的腳踏車銷售量。另外,公司可以執行交叉預測,以了解個別腳踏車款的銷售趨勢是否彼此相關。

演算法的運作方式

Microsoft 決策樹演算法使用自動迴歸的決策樹來培訓模型。每一個模型包含一個 Key Time 資料行來定義模型所要定義的時間配量。演算法會針對要預測的每一個目前項目,與不定量的過去項目產生關聯。

如需有關 Microsoft 時間序列演算法運作方式的詳細說明,請參閱<Autoregressive Tree Models for Time-Series Analysis>(英文)。

您有兩種方式可以定義 Microsoft 時間序列模型的輸入資料。若要了解第一個方法,請看下表的輸入案例:

TimeID Product Sales Volume

1/2001

A

1000

600

2/2001

A

1100

500

1/2001

B

500

900

2/2001

B

300

890

資料表中的 TimeID 資料表包含時間識別碼,且每一天有兩個項目。Product 資料行定義資料庫中的產品。Sales 資料行描述所指定產品一天的毛利,而 Volume 資料行描述所指定產品在倉庫中剩餘的數量。在這個案例中,模型將包含兩個可預測資料行:Sales 和 Volume。

另外,時間序列模型的輸入資料可以如下表定義:

TimeID A_Sales A_Volume B_Sales B_Volume

1/2001

1000

600

500

900

2/2001

1100

500

300

890

在這個資料表中,Sales 和 Volume 資料行各分割成兩個資料行,每一個前面有產品名稱。因此,TimeID 資料行中每一天只有單一項目存在。此模型將包含 4 個可預測資料行:A_Sales、A_Volume、B_Sales 和 B_Volume。

定義輸入資料的這兩種方法會造成相同資訊顯示在模型中,而輸入案例的格式則會變更您定義採礦模型的方式。

使用演算法

時間序列演算法需要預測的資料行必須是連續資料行。每一個模型只允許一個案例序列。

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

輸入資料行內容類型

Continuous、Key、Key Time 和 Table

可預測資料行內容類型

Continuous 和 Table

模型旗標

NOT NULL 和 REGRESSOR

所有 Microsoft 演算法都支援一個常用函數集。不過,Microsoft 時間序列演算法支援下表所列出的其他函數。

Lag

PredictTimeSeries

PredictNodeId

PredictVariance

PredictStdev

如需所有 Microsoft 演算法常用的函數清單,請參閱<資料採礦演算法>。如需有關如何使用這些函數的詳細資訊,請參閱<資料採礦延伸模組 (DMX) 函數參考>。

Microsoft 時間序列演算法不支援使用預測模型標記語言 (PMML) 來建立採礦模型。

Microsoft 時間序列算法支援數個會影響所產生之採礦模型的效能和精確度的參數。下表描述每一個參數。

參數 描述

MINIMUM_SUPPORT

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

預設值為 10。

COMPLEXITY_PENALTY

控制決策樹的成長。減少此值可增加分割的可能性。增加此值則減少分割的可能性。

預設值為 0.1。

PERIODICITY_HINT

提供演算法關於資料週期性的提示。例如,若每年銷售不同,序列中的度量單位是月,則週期性是 12。此參數採用 {n [, n]} 的格式,其中 n 是任何正數。方括號 [] 內的 n 是選擇性的,可以視需要而重複。

預設為 {1}。

MISSING_VALUE_SUBSTITUTION

指定用來填滿歷程記錄資料中之間距的方法。依預設,資料中不允許有不規則的間距或不完全的邊緣。以下是可用來填滿不規則間距或邊緣的方法:依據上一個 (Previous) 值、依據平均 (Mean) 值或依據特定數值常數 (Numeric Constant)。

AUTO_DETECT_PERIODICITY

指定 0 和 1 之間的數值,用來偵測週期性。將這個值設定為愈接近 1,就會探索更多接近週期性的模式,並自動產生週期性提示。處理大量週期性提示時,可能會造成更長的模型培訓時間及更精確的模型。如果將此值設定為愈接近 0,則只會偵測到週期性很強的資料。

預設值為 0.6。

HISTORIC_MODEL_COUNT

指定要建立的歷程記錄模型數目。

預設值為 1。

HISTORICAL_MODEL_GAP

指定兩個連續歷程記錄模型之間的時間延遲。例如,將此值設定為 g,會造成要建立歷程記錄模型的資料,按 g2*g3*g 等等的間隔而遭到時間配量截斷。

預設值為 10。

ms174923.note(zh-tw,SQL.90).gif附註:
週期性提示對模型品質很重要。如果您所給的提示不同於實際週期性,對結果會有負面影響。

變更歷程記錄

版本 歷程記錄

2007 年 9 月 15 日

變更的內容:
  • 時間序列圖表的更新描述。

請參閱

概念

資料採礦演算法
資料採礦精靈
使用資料採礦工具
使用 Microsoft 時間序列檢視器檢視採礦模型

其他資源

CREATE MINING MODEL (DMX)

說明及資訊

取得 SQL Server 2005 協助