本節說明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 叢集演算法搭配使用的參數。 這些參數會影響產生的採礦模型的效能和精確度。
聚類方法
指定要使用之演算法的叢集方法。 下列叢集方法可供使用:
| 身份證 | 方法 |
|---|---|
| 1 | 可調整的 EM |
| 2 | 不可調整的 EM |
| 3 | 可擴展的K-均值算法 |
| 4 | 不可調整的 K-Means。 |
預設值為 1(可調整 EM)。
群集計數
指定演算法所要建置的大約叢集數目。 如果無法從數據建置大約數目的叢集,演算法會盡可能建置多個叢集。 將CLUSTER_COUNT設定為 0 會導致演算法使用啟發學習法來判斷要建置的叢集數目。
預設值為 10。
集群種子
指定用於隨機產生模型建置初始階段叢集的種子編號。
藉由變更這個數位,您可以變更初始叢集的建置方式,然後比較使用不同種子所建置的模型。 如果種子已變更,但找到的叢集不會大幅變更,則模型可視為相對穩定。
預設值為 0。
最低支援
指定建置叢集所需的最小案例數目。 如果叢集中的案例數目低於這個數位,則叢集會視為空白並捨棄。
如果您將此數字設定得太高,您可能會錯過有效的叢集。
備註
如果您使用 EM,這是預設叢集方法,某些叢集可能會有低於指定值的支援值。 這是因為每個案例都會評估其所有可能叢集中的成員資格,而針對某些叢集,可能只有最少的支援。
預設值為 1。
建模基數
指定叢集程式期間建構的範例模型數目。
降低候選模型數目可改善效能,但遺漏一些良好候選模型的風險。
預設值為 10。
停止公差
指定值,用來判斷何時達到聚合,且演算法完成建置模型。 當叢集機率的整體變更小於除以模型大小之STOPPING_TOLERANCE參數的比例時,就會達到聚合。
預設值為 10。
樣本大小
如果CLUSTERING_METHOD參數設定為其中一個可調整的叢集方法,則指定演算法在每個傳遞上使用的案例數目。 將 SAMPLE_SIZE 參數設定為 0 會導致整個數據集在單一傳遞中叢集。 在單一階段中載入整個數據集可能會導致記憶體和效能問題。
預設值為 50000。
最大輸入屬性
指定演算法在叫用特徵選取之前可以處理的最大輸入屬性數目。 將此值設定為 0 表示屬性數目沒有上限。
增加屬性數目可能會大幅降低效能。
預設值為 255。
最大狀態
指定演算法所支援的屬性狀態數目上限。 如果屬性的狀態超過最大值,演算法會使用最受歡迎的狀態,並忽略其餘狀態。
增加狀態數目可能會大幅降低效能。
預設值為 100。
模型旗標
此演算法支援下列模型旗標。 當您建立採礦結構或採礦模型時,您可以定義模型旗標。 模型旗標會指定在分析期間處理每個數據行中的值的方式。
| 模型旗標 | 說明 |
|---|---|
| 模型僅存在 | 欄位將被視為有兩個可能的狀態:缺失和存在。 Null 是遺漏值。 適用於採礦模型數據行。 |
| 不可為空 | 欄不能包含空值。 如果 Analysis Services 在模型定型期間遇到 Null,將會產生錯誤。 適用於採礦結構欄位。 |
需求
叢集模型必須包含索引鍵數據行和輸入數據行。 您也可以將輸入資料行定義為可預測。 設定為 Predict Only 的欄不會用來建立叢集。 叢集中這些值的分佈會在建立叢集之後計算。
輸入和可預測的欄位
Microsoft叢集演算法支援下表所列的特定輸入數據行和可預測數據行。 如需在採礦模型中使用內容類型的意義詳細資訊,請參閱內容類型(數據採礦)。
| 資料行 | 內容類型 |
|---|---|
| 輸入屬性 | 連續的、循環的、離散的、離散化的、鍵、表格、排序 |
| 可預測屬性 | 連續的、循環的、離散的、离散化的、表格、有序的 |
備註
支援迴圈和已排序的內容類型,但演算法會將它們視為離散值,而且不會執行特殊處理。
另請參閱
Microsoft叢集演算法
叢集模型查詢範例
叢集模型的採礦模型內容 (Analysis Services - 數據採礦)