共用方式為


Microsoft時序群集演算法技術參考

適用於: SQL Server 2019 和舊版 Analysis Services Azure Analysis Services Fabric/Power BI Premium

重要

SQL Server 2017 Analysis Services 中已淘汰數據採礦,現在已在 SQL Server 2022 Analysis Services 中停止。 檔不會更新為已淘汰和已停止的功能。 若要深入瞭解,請參閱 Analysis Services 回溯相容性

Microsoft時序群集演算法是一種混合式演算法,使用 Markov 鏈結分析來識別已排序的序列,並將此分析的結果與群集技術結合,以根據模型中的時序和其他屬性產生叢集。 本主題描述演算法的實作、如何自定義演算法,以及時序群集模型的特殊需求。

如需演算法的詳細資訊,包括如何瀏覽和查詢時序群集模型,請參閱 Microsoft 時序群集演算法

Microsoft時序群集演算法的實作

Microsoft時序群集模型會使用 Markov 模型來識別序列,並判斷序列的機率。 Markov 模型是一種導向圖表,可儲存不同狀態之間的轉換。 Microsoft時序群集演算法會使用 n 順序的 Markov 鏈結,而不是隱藏的 Markov 模型。

Markov 鏈結中的訂單數目會告訴您有多少狀態可用來判斷目前狀態的機率。 在第一個順序的 Markov 模型中,目前狀態的機率只取決於先前的狀態。 在第二個順序的 Markov 鏈結中,狀態的機率取決於前兩個州等等。 針對每個 Markov 鏈結,轉換矩陣會儲存每個狀態組合的轉換。 隨著 Markov 鏈結的長度增加,矩陣的大小也會以指數方式增加,而且矩陣會變得非常疏鬆。 處理時間也會按比例增加。

使用點擊串流分析範例將鏈結可視化可能很有説明,該範例會分析網站的瀏覽次數。 每個使用者會為每個會話建立一連串的點選。 當您建立模型來分析網站上的用戶行為時,用於定型的數據集是一連串的 URL,轉換成包含相同點擊路徑之所有實例計數的圖表。 例如,圖表包含使用者從第 1 頁移至第 2 頁(10%)、使用者從第 1 頁移至第 3 頁(20%) 等機率。 當您將所有可能的路徑和路徑片段放在一起時,您會取得比任何單一觀察到路徑更久且更複雜的圖形。

根據預設,Microsoft時序群集演算法會使用群集的預期最大化 (EM) 方法。 如需詳細資訊,請參閱 Microsoft 叢集演算法技術參考

叢集的目標都是循序和非查詢屬性。 系統會使用機率分佈隨機選取每個叢集。 每個叢集都有一個 Markov 鏈結,代表一組完整的路徑,以及包含時序狀態轉換和機率的矩陣。 根據初始分佈,貝氏規則可用來計算特定叢集中任何屬性的機率,包括序列。

Microsoft時序群集演算法支援模型的額外非佇列屬性。 這表示這些額外的屬性會與時序屬性結合,以建立具有類似屬性之案例的叢集,就像在一般群集模型中一樣。

時序叢集模型通常會建立比一般叢集模型更多的叢集。 因此,Microsoft時序群集演算法會執行 叢集分解,以根據序列和其他屬性來分隔叢集。

時序群集模型中的功能選取

建置順序時不會叫用特徵選取;不過,功能選取會在叢集階段套用。

模型類型 特徵選取方法 評論
時序叢集 未使用 不會叫用特徵選取;不過,您可以藉由設定參數的值MINIMUM_SUPPORT和MINIMUM_PROBABILIITY來控制演算法的行為。
聚類 有趣的分數 雖然群集演算法可能會使用離散或離散化演算法,但每個屬性的分數會計算為距離且連續;因此會使用有趣的分數。

如需詳細資訊,請參閱 功能選取

優化效能

Microsoft時序群集演算法支援各種優化處理的方式:

  • 藉由設定CLUSTER_COUNT參數的值來控制產生的叢集數目。

  • 藉由增加 MINIMUM_SUPPORT 參數的值,減少包含為屬性的序列數目。 因此,會消除罕見的序列。

  • 藉由將相關屬性分組,減少處理模型之前的複雜度。

一般而言,您可以透過數種方式將 n 順序 Markov 鏈結模式的效能優化:

  • 控制可能序列的長度。

  • 以程式設計方式減少 n 的值。

  • 只儲存超過指定臨界值的機率。

這些方法的完整討論超出本主題的範圍。

自訂時序群集演算法

Microsoft時序群集演算法支援影響結果採礦模型行為、效能和精確度的參數。 您也可以藉由設定模型旗標來控制演算法處理定型數據的方式,來修改已完成模型的行為。

設定演算法參數

下表描述可與Microsoft時序群集演算法搭配使用的參數。

CLUSTER_COUNT
指定演算法所要建置的大約叢集數目。 如果無法從數據建置大約數目的叢集,演算法會盡可能建置多個叢集。 將 CLUSTER_COUNT 參數設定為 0 會導致演算法使用啟發學習法,以最佳方式判斷要建置的叢集數目。

預設值為 10。

注意

指定非零的數位可做為演算法的提示,該演算法會繼續尋找指定數字的目標,但最終可能會尋找更多或更少。

MINIMUM_SUPPORT
指定支援建立叢集之屬性所需的最小案例數目。

預設值為 10。

MAXIMUM_SEQUENCE_STATES
指定序列可以擁有的最大狀態數目。

將此值設定為大於 100 的數位,可能會導致演算法建立未提供有意義資訊的模型。

預設值為 64。

MAXIMUM_STATES
指定演算法所支援之非時序屬性的狀態數目上限。 如果非序列屬性的狀態數目大於狀態數目上限,則演算法會使用屬性最受歡迎的狀態,並將其餘狀態視為 遺漏

預設值為 100。

模型旗標

支援下列模型旗標搭配Microsoft時序群集演算法使用。

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

適用於採礦結構數據行。

MODEL_EXISTENCE_ONLY
表示資料列將被視為有兩種可能的狀態:遺漏現有。 Null 會被視為遺漏 值

適用於採礦模型數據行。

如需在採礦模型中使用遺漏值的詳細資訊,以及遺漏值如何影響機率分數,請參閱 遺漏值 (Analysis Services - 數據採礦)

要求

案例數據表必須有案例標識碼數據行。 案例數據表可以選擇性地包含儲存案例屬性的其他數據行。

Microsoft時序群集演算法需要儲存為巢狀數據表的順序資訊。 巢狀數據表必須具有單一索引鍵序列數據行。 索引鍵序列 數據行可以包含任何類型的數據,包括字串數據類型,但數據行必須包含每個案例的唯一值。 此外,在處理模型之前,您必須確定案例數據表和巢狀數據表都會依關聯數據表的索引鍵的遞增順序排序。

注意

如果您建立使用Microsoft序列演算法但不使用時序數據行的模型,產生的模型將不會包含任何序列,但只會根據模型中包含的其他屬性來群集案例。

輸入和可預測數據行

Microsoft時序群集演算法支援下表所列的特定輸入數據行和可預測數據行。 如需在採礦模型中使用內容類型的意義詳細資訊,請參閱 內容類型(資料採礦)

內容類型
輸入屬性 Continuous、Cyclical、Discrete、Discretized、Key、Key Sequence、Table 和 Ordered
可預測屬性 Continuous、Cyclical、Discrete、Discretized、Table 和 Ordered

言論

  • 使用 PredictSequence (DMX) 函數來預測時序。 如需支援時序預測之 SQL Server 版本的詳細資訊,請參閱 SQL Server 2012 版本所支援 功能()。

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

  • Microsoft時序群集演算法支持鑽研、使用 OLAP 採礦模型,以及使用數據採礦維度。

另請參閱

Microsoft 時序群集演算法
時序叢集模型查詢範例
時序群集模型的採礦模型內容 (Analysis Services - 數據採礦)