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關聯演算法的實作
Apriori 演算法不會分析模式,而是會產生並計算 候選專案集。 專案可以代表事件、產品或屬性的值,視所分析的數據類型而定。
在最常見的關聯模型布爾變數類型中,代表 Yes/No 或 Missing/Existing 值,會指派給每個屬性,例如產品或事件名稱。 購物籃分析是關聯規則模型的範例,其使用布爾變數來代表客戶購物籃中特定產品是否存在。
針對每個專案集,演算法接著會建立代表支援和信賴的分數。 這些分數可用來對專案集進行排名和衍生有趣的規則。
您也可以為數值屬性建立關聯模型。 如果屬性是連續的,數位可以 離散化,或 分組在貯體中。 接著可以將離散化值當作布爾值或屬性值組來處理。
支援、機率和重要性
支援,這稱為 頻率,表示包含目標專案或專案組合的案例數目。 只有至少具有指定支援量的專案可以包含在模型中。
頻繁的專案集 是指專案組合也支援高於 MINIMUM_SUPPORT 參數所定義的臨界值的專案集合。 例如,如果專案集是 {A,B,C} 且MINIMUM_SUPPORT值為 10,則必須在至少 10 個案例中找到要包含在模型中的個別專案 A、B 和 C,而且至少必須在 10 個案例中找到專案 {A、B、C} 的組合。
Note 您也可以藉由指定專案集的最大長度來控制採礦模型中的專案集數目,其中 length 表示項目數目。
根據預設,任何特定專案或專案集的支援代表包含該專案或專案的案例計數。 不過,您也可以將MINIMUM_SUPPORT表示為數據集中總案例的百分比,方法是將數位輸入為小於 1 的十進位值。 例如,如果您指定 0.03 的MINIMUM_SUPPORT值,表示數據集中至少 3 個% 必須包含此專案或專案集,才能包含在模型中。 您應該試驗模型,以判斷使用計數或百分比是否更合理。
相反地,規則的臨界值不會表示為計數或百分比,但以機率表示,有時稱為 信賴。 例如,如果專案集 {A,B,C} 發生在 50 個案例中,但專案集 {A,B,D} 也發生在 50 個案例中,而專案集 {A,B} 在另 50 個案例中,很明顯 {A,B} 不是 {C} 的強預測值。 因此,為了根據所有已知結果來加權特定結果,SQL Server Analysis Services 會將專案集 {A、B, C} 的支援除以所有相關專案集的支持,計算個別規則的機率(例如 If {A,B} Then {C})。
您可以藉由設定MINIMUM_PROBABILITY的值來限制模型所產生的規則數目。
針對所建立的每個規則,SQL Server Analysis Services 會輸出分數,指出其 重要性,也稱為 增益。 專案集和規則的增益重要性會以不同的方式計算。
專案集的重要性會計算為專案集的機率除以專案集中個別專案的複合機率。 例如,如果專案集包含 {A,B},SQL Server Analysis Services 會先計算包含這個組合 A 和 B 的所有案例,並將它除以案例總數,然後正規化機率。
規則的重要性是由規則右側的記錄可能性來計算,因為規則的左邊。 例如,在規則 If {A} Then {B}
中,SQL Server Analysis Services 會計算 A 和 B 與 B 與 B 案例的比率,但不含 A,然後使用對數小數位數來正規化該比率。
特徵選取
Microsoft關聯規則演算法不會執行任何類型的自動特徵選取。 相反地,演算法會提供參數來控制演算法所使用的數據。 這可能包括每個專案集的大小限制,或設定將專案集新增至模型所需的最大和最小支援。
若要篩選掉太常見的專案和事件,因此不感興趣,請減少MAXIMUM_SUPPORT的值,以從模型中移除非常頻繁的專案集。
若要篩選掉罕見的專案和專案集,請增加MINIMUM_SUPPORT的值。
若要篩選出規則,請增加MINIMUM_PROBABILITY的值。
自定義Microsoft關聯規則演算法
Microsoft關聯規則演算法支援數個影響結果採礦模型行為、效能和精確度的參數。
設定演算法參數
您可以使用 SQL Server Data Tools 中的數據採礦設計工具,隨時變更採礦模型的參數。 您也可以使用 AMO 中的 AlgorithmParameters 集合,或在 XMLA 中使用 MiningModels 元素 (ASSL),以程式設計方式變更參數。 下表描述每個參數。
注意
您無法使用 DMX 語句來變更現有模型中的參數;您必須在 DMX CREATE MODEL 或 ALTER STRUCTURE 中指定參數...當您建立模型時,請新增MODEL。
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,演算法只會快取 3 個專案以進行預測。 您無法看到可能同樣可能傳回的 3 個專案的其他預測。
模型旗標
支援下列模型旗標搭配Microsoft關聯規則演算法使用。
NOT NULL
表示數據行不能包含 Null。 如果 SQL Server Analysis Services 在模型定型期間遇到 Null,將會產生錯誤。
適用於採礦結構數據行。
MODEL_EXISTENCE_ONLY
表示資料列將被視為有兩種可能的狀態:遺漏 和 現有。 Null 是遺漏值。
適用於採礦模型數據行。
要求
關聯模型必須包含索引鍵數據行、輸入數據行和單一可預測數據行。
輸入和可預測數據行
Microsoft關聯規則演算法支援下表所列的特定輸入數據行和可預測數據行。 如需採礦模型中內容類型意義的詳細資訊,請參閱 內容類型(資料採礦)。
列 | 內容類型 |
---|---|
輸入屬性 | 迴圈、離散、離散、離散化、索引鍵、數據表、已排序 |
可預測屬性 | 迴圈、離散、離散、離散化、數據表、已排序 |
注意
支援迴圈和已排序的內容類型,但演算法會將它們視為離散值,而且不會執行特殊處理。
另請參閱
Microsoft 關聯演算法
關聯模型查詢範例
關聯模型的採礦模型內容 (Analysis Services - 數據採礦)