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關聯規則演算法是已知 Apriori 演算法的直接實作。

Microsoft 決策樹演算法與 Microsoft 關聯規則演算法都能分析關聯,但每個演算法找到的規則可能不同。 在決策樹模型中,資訊增益決定了導致特定規則的分裂。 在聯想模型中,信心完全決定規則。 因此,在關聯模型中,強規則或高信心度的規則不一定有趣,因為它不會提供新資訊。

Microsoft關聯演算法的實作

先驗演算法不會分析模式。 它會產生並統計 候選項目集。 項目可以代表事件、產品或屬性的價值,視你分析的資料類型而定。

在最常見的關聯模型中,你會為每個屬性(例如產品名稱或事件名稱)指派布林變數,代表Yes/No或Missing/Existing值。 購物籃分析是關聯規則模型的範例,其使用布爾變數來代表客戶購物籃中特定產品是否存在。

對於每個題目集,演算法會產生代表支持與信心的分數。 你可以利用這些分數來排名並從物品集中推導出有趣的規則。

你也可以為數值屬性建立關聯模型。 如果屬性是連續的,你可以 離散化,或將數字分成桶子。 你可以將離散化的值當作布林值或屬性值對來處理。

支持、機率與重要性

支持度,有時稱為 頻率,是指包含目標項目或項目組合的資料筆數。 該模型只能包含至少具有指定支撐量的項目。

頻繁項目集是指一組項目集合,其中項目組合的支持度也高於MINIMUM_SUPPORT參數所定義的閾值。 例如,如果專案集是 {A,B,C} 且MINIMUM_SUPPORT值為 10,則必須在至少 10 個案例中找到要包含在模型中的個別專案 A、B 和 C,而且至少必須在 10 個案例中找到專案 {A、B、C} 的組合。

附註

你也可以透過指定物品集的最大長度來控制挖礦模型中的項目集數量,其中長度代表項目數量。

預設情況下,任何特定項目或項目集的支持度,是指包含該項目或這些項目的案例數。 不過,你也可以輸入一個小於 1 的小數值,將 MINIMUM_SUPPORT 表示為資料集內案例總數的百分比。 例如,若MINIMUM_SUPPORT值為0.03,表示資料集中至少有3% 包含此項目或項目集,才能納入模型。 試著用模型來判斷用計數還是百分比比較合理。

相較之下,規則的門檻不是以計數或百分比表示,而是以機率表示,有時稱為 信心。 例如,若項目集 {A,B,C} 出現在 50 種情況,但項目集 {A,B,D} 也出現在 50 種情況,且項目集 {A,B} 出現在另外 50 種情況,則顯然 {A,B} 並非 {C} 的強預測因子。 因此,為了將特定結果與所有已知結果權衡,SQL Server Analysis Services 會將項目集 {A,B,C} 的支持度除以所有相關項目集的支持度,計算出該單一規則(例如 如果 {A,B} 則 {C} 的機率)。

您可以藉由設定MINIMUM_PROBABILITY的值來限制模型所產生的規則數目。

對於它所建立的每個規則,SQL Server Analysis Services 都會輸出一個分數,用來指出其重要性,這也稱為 lift。 提升的重要性在項目集和規則中計算方式不同。

專案集的重要性會計算為專案集的機率除以專案集中個別專案的複合機率。 例如,若一個項目集包含 {A,B},SQL Server Analysis Services 會先計算包含此組合 A 與 B 的所有案例,並將該數量除以總案例數,接著對機率進行正規化。

規則的重要性是根據在給定規則左側的條件下,規則右側的對數概似來計算。 例如,在規則 If {A} Then {B}中,SQL Server Analysis Services 計算了包含 A 和 B 的案例與有 B 但沒有 A 的案例比例,然後用對數刻度來正規化該比率。

特徵選取

Microsoft 關聯規則演算法不會自動選擇功能。 相反地,演算法提供參數來控制所使用的資料。 此控制可能包括每個項目集大小的限制,或設定新增項目集所需的最大與最小支援。

  • 若要篩選掉太常見的專案和事件,因此不感興趣,請減少MAXIMUM_SUPPORT的值,以從模型中移除非常頻繁的專案集。

  • 若要篩選掉罕見的專案和專案集,請增加MINIMUM_SUPPORT的值。

  • 若要篩選出規則,請增加MINIMUM_PROBABILITY的值。

自定義Microsoft關聯規則演算法

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

設定演算法參數

您可以使用 SQL Server Data Tools 中的數據採礦設計工具,隨時變更採礦模型的參數。 你也可以透過 AMO 中的集合,或在 XMLA 中使用 AlgorithmParameters來程式化更改參數。 下表描述每個參數。

附註

你不能透過 DMX 陳述來更改現有模型的參數。 你必須在 DMX 中指定參數,例如 CREATE MODEL 或 ALTER STRUCTURE...建立模型時請新增模型。

MAXIMUM_ITEMSET_COUNT
指定要產生的項目集數目上限。 如果你沒有指定數字,則會使用預設值。

預設值為 200000。

附註

項目集會依支持度排序。 對於支持度相同的項目集,其排序順序可任意決定。

MAXIMUM_ITEMSET_SIZE
指定專案集中允許的項目數目上限。 將此值設為 0 表示項目集大小沒有限制。

預設值為 3。

附註

減少此值可能會降低建立模型所需的時間,因為達到限制時,模型處理會停止。

MAXIMUM_SUPPORT
指定項目集支援度的最大個案數。 利用這個參數來剔除那些經常出現、因此可能意義不大的項目。

如果你將此值設為小於 1,該值代表案件總數的百分比。 大於 1 的值代表可以包含專案集的絕對案例數目。

預設值為 1。

MINIMUM_ITEMSET_SIZE
指定專案集中允許的項目數目下限。 如果您提高這個數值,模型包含的項目集可能會較少。 例如,如果你想忽略單一物品集,這個改動會很有用。

預設值為 1。

附註

你無法透過提高最小值來減少模型處理時間,因為 SQL Server Analysis Services 在處理過程中必須計算單一項目的機率。 不過,藉由將此值設定為較高,您可以篩選出較小的專案集。

MINIMUM_PROBABILITY
指定規則為 true 的最小機率。

例如,如果您將此值設定為 0.5,表示不會產生小於 50% 機率的規則。

預設值為 0.4。

MINIMUM_SUPPORT
指定在演算法產生規則之前,必須包含該項目集的最少案例數。

如果您將此值設定為小於 1,則最小案例數目會計算為總案例的百分比。

如果您將此值設定為大於 1 的整數,則表示最少案例數會計算為必須包含該項目集的案例數量。 如果記憶體有限,演算法可能會自動增加此參數的值。

預設值為 0.03。 此值表示,要納入模型,至少在 3% 情況下必須找到一個項目集。

OPTIMIZED_PREDICTION_COUNT
定義為了優化預測而要快取的項目數量。

預設值為 0。 當使用預設值時,演算法會產生查詢中要求的相同數量的預測。

如果你為OPTIMIZED_PREDICTION_COUNT指定非零值 , 預測查詢最多只能回傳指定數量的項目,即使你請求額外預測。 不過,設定值可以改善預測效能。

例如,若將值設為 3,演算法僅快取三個項目供預測。 你無法看到其他預測,而這些預測也可能和演算法回傳的三個項目具有同等可能性。

模型旗標

Microsoft 關聯規則演算法支援以下建模標誌。

不可為空
表示該欄位不能包含 null。 若 SQL Server Analysis Services 在模型訓練中遇到 null,則會回傳錯誤。

適用於採礦結構數據行。

MODEL_EXISTENCE_ONLY
將該欄位視為有兩種可能狀態: 缺失 與 存在。 Null 是遺漏值。

適用於採礦模型數據行。

要求

關聯模型必須包含索引鍵數據行、輸入數據行和單一可預測數據行。

輸入欄與可預測欄

Microsoft關聯規則演算法支援下表所列的特定輸入數據行和可預測數據行。 欲了解更多關於挖礦模型中內容類型意義的資訊,請參見內容類型(資料探勘)。

欄 內容類型
輸入屬性 循環、離散、離散化、鍵、資料表、有序
可預測屬性 循環、離散、離散化、資料表、有序

附註

該演算法支援循環與有序內容類型,但將它們視為離散值,不會執行特殊處理。

參見

Microsoft 關聯演算法
關聯模型查詢範例
關聯模型的挖掘模型內容(分析服務 - 資料探勘)