共用方式為


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叢集演算法的實作,包括可用來控制叢集模型行為的參數。 它也提供如何在建立和處理叢集模型時改善效能的指引。

如需如何使用叢集模型的其他資訊,請參閱下列主題:

Microsoft叢集演算法的實作

Microsoft叢集演算法提供兩種方法來建立叢集,並將數據點指派給叢集。 第一個,K-means 演算法,是硬式叢集方法。 這表示數據點只能屬於一個叢集,而且會針對該叢集中每個數據點的成員資格計算單一機率。 第二種方法是 預期最大化 (EM) 方法,是 軟叢集 方法。 這表示數據點一律屬於多個叢集,而且會計算每個數據點和叢集組合的機率。

您可以藉由設定 CLUSTERING_METHOD 參數來選擇要使用的演算法。 叢集的預設方法是可調整EM。

EM 叢集

在EM群集中,演算法會反覆精簡初始叢集模型以符合數據,並判斷數據點存在於叢集中的機率。 演算法會在概率模型符合數據時結束此程式。 用來判斷適合的函式是給定模型之數據的記錄可能性。

如果在程式期間產生空的叢集,或一或多個叢集的成員資格低於指定的閾值,則會在新點重新指派具有低母體擴展的叢集,並重新執行 EM 演算法。

EM 叢集方法的結果是概率的。 這表示每個數據點都屬於所有叢集,但每個數據點指派給叢集的機率都不同。 因為方法可讓叢集重疊,因此所有叢集中的專案總和可能會超過定型集中的項目總數。 在採礦模型結果中,會調整指出支援的分數,以考慮這一點。

EM 演算法是Microsoft叢集模型中使用的預設演算法。 相較於 k-means 叢集,此演算法會作為預設值使用,因為它提供多個優點:

  • 最多需要一次資料庫掃描。

  • 儘管記憶體有限(RAM)仍可運作。

  • 能夠使用正向數據指標。

  • 效能優於取樣方法。

Microsoft實作提供兩個選項:可調整且無法調整的 EM。 根據預設,在可調整的EM中,前50,000筆記錄會用來植入初始掃描。 如果成功,模型只會使用此數據。 如果模型無法使用 50,000 筆記錄來調整,則會讀取額外的 50,000 筆記錄。 在無法調整的 EM 中,不論其大小為何,都會讀取整個數據集。 此方法可能會建立更精確的叢集,但記憶體需求可能相當重要。 因為可調整的 EM 會在本機緩衝區上運作,所以逐一查看數據的速度會快得多,而且演算法比無法調整的 EM 更能使用 CPU 記憶體快取。 此外,可調整的EM速度比不可調整的EM快三倍,即使所有數據都能容納在主要記憶體中也一樣。 在大部分情況下,效能改善並不會導致完整的模型品質較低。

如需描述Microsoft叢集演算法中 EM 實作的技術報告,請參閱 將 EM(預期最大化)叢集調整為大型資料庫

K-Means 叢集

K-means 叢集是指派叢集成員資格的已知方法,方法是將叢集中專案之間的差異降至最低,同時將叢集之間的距離最大化。 k-means 中的「means」是指叢集 ,這是任意選擇的數據點,然後反覆精簡,直到它代表叢集中所有數據點的真正平均數為止。 “k” 是指用來植入群集程式的任意數目點。 k-means 演算法會計算叢集中數據記錄與代表叢集平均數的向量之間的平方 Euclidean 距離,並在總和達到最小值時聚合在最後一組 k 叢集上。

k-means 演算法會將每個數據點指派給完全相同的一個叢集,而且不允許成員資格的不確定性。 叢集中的成員資格會以距心距離表示。

k-means 演算法通常用來建立連續屬性的叢集,其中計算平均距離很簡單。 不過,Microsoft實作會使用機率,將 k-means 方法調整為叢集離散屬性。 針對離散屬性,數據點與特定叢集的距離會計算如下:

1 - P(資料點、叢集)

注意

Microsoft群集演算法不會公開計算 k-means 中使用的距離函數,而且已完成的模型中無法使用距離量值。 不過,您可以使用預測函數傳回對應至距離的值,其中距離會計算為屬於叢集之數據點的機率。 如需詳細資訊,請參閱 ClusterProbability (DMX)

k-means 演算法提供兩個取樣數據集的方法:不可擴充的 K-means,它會載入整個數據集,並讓一個叢集傳遞或可調整 k-means,其中演算法會使用前 50,000 個案例,而且只有在需要更多數據才能達到數據模型適合時,才會讀取更多案例。

SQL Server 2008 中Microsoft叢集演算法的更新

在 SQL Server 2008 中,Microsoft叢集演算法的預設組態已變更為使用內部參數 NORMALIZATION = 1。 正規化是使用 z 分數統計數據來執行,並假設常態分佈。 此變更在預設行為的意圖是將可能具有較大大小和許多極端值的屬性效果降到最低。 不過,z 分數正規化可能會改變非常態分佈的群集結果(例如統一分佈)。 若要防止正規化並取得與 SQL Server 2005 中 K-means 叢集演算法相同的行為,您可以使用 [參數設定] 對話框,將自定義參數 NORMALIZATION,並將其值設定為 0。

注意

NORMALIZATION 參數是Microsoft叢集演算法的內部屬性,不支援。 一般而言,建議在群集模型中使用正規化來改善模型結果。

自定義Microsoft叢集演算法

Microsoft叢集演算法支援數個會影響結果採礦模型行為、效能和精確度的參數。

設定演算法參數

下表描述可與 Microsoft 叢集演算法搭配使用的參數。 這些參數會影響產生的採礦模型的效能和精確度。

CLUSTERING_METHOD
指定要使用之演算法的叢集方法。 下列叢集方法可供使用:

標識碼 方法
1 可調整的 EM
2 不可調整的 EM
3 可調整的 K-Means
4 不可調整的 K-Means。

預設值為 1(可調整 EM)。

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

預設值為 10。

CLUSTER_SEED
指定用於隨機產生模型建置初始階段叢集的種子編號。

藉由變更這個數位,您可以變更初始叢集的建置方式,然後比較使用不同種子所建置的模型。 如果種子已變更,但找到的叢集不會大幅變更,則模型可視為相對穩定。

預設值為 0。

MINIMUM_SUPPORT
指定建置叢集所需的最小案例數目。 如果叢集中的案例數目低於這個數位,則叢集會視為空白並捨棄。

如果您將此數字設定得太高,您可能會錯過有效的叢集。

注意

如果您使用 EM,這是預設叢集方法,某些叢集可能會有低於指定值的支援值。 這是因為每個案例都會評估其所有可能叢集中的成員資格,而針對某些叢集,可能只有最少的支援。

預設值為 1。

MODELLING_CARDINALITY
指定叢集程式期間建構的範例模型數目。

降低候選模型數目可改善效能,但遺漏一些良好候選模型的風險。

預設值為 10。

STOPPING_TOLERANCE
指定值,用來判斷何時達到聚合,且演算法完成建置模型。 當叢集機率的整體變更小於除以模型大小之STOPPING_TOLERANCE參數的比例時,就會達到聚合。

預設值為 10。

SAMPLE_SIZE
如果CLUSTERING_METHOD參數設定為其中一個可調整的叢集方法,則指定演算法在每個傳遞上使用的案例數目。 將 SAMPLE_SIZE 參數設定為 0 會導致整個數據集在單一傳遞中叢集。 在單一階段中載入整個數據集可能會導致記憶體和效能問題。

預設值為 50000。

MAXIMUM_INPUT_ATTRIBUTES
指定演算法在叫用特徵選取之前可以處理的最大輸入屬性數目。 將此值設定為 0 會指定屬性數目上限。

增加屬性數目可能會大幅降低效能。

預設值為 255。

MAXIMUM_STATES
指定演算法所支援的屬性狀態數目上限。 如果屬性的狀態超過最大值,演算法會使用最受歡迎的狀態,並忽略其餘狀態。

增加狀態數目可能會大幅降低效能。

預設值為 100。

模型旗標

此演算法支援下列模型旗標。 當您建立採礦結構或採礦模型時,您可以定義模型旗標。 模型旗標會指定在分析期間處理每個數據行中的值的方式。

模型旗標 描述
MODEL_EXISTENCE_ONLY 數據行將被視為有兩個可能的狀態:Missing 和 Existing。 Null 是遺漏值。

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

適用於採礦結構數據行。

要求

叢集模型必須包含索引鍵數據行和輸入數據行。 您也可以將輸入資料行定義為可預測。 設定為 Predict Only 的數據行不會用來建置叢集。 叢集中這些值的分佈會在建立叢集之後計算。

輸入和可預測數據行

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

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

注意

支援迴圈和已排序的內容類型,但演算法會將它們視為離散值,而且不會執行特殊處理。

另請參閱

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