6 關聯分析: 基本概念和算法
一、問題定義
關聯分析
關聯分析用於發現隱藏在大型數據集中的令人感興趣的聯繫,所發現的模式通常用關聯規則或頻繁項集的形式表示。
關聯分析可以應用於生物信息學、醫療診斷、網頁挖掘、科學數據分析等
頻繁項集
項集
:包含0個或多個項的集合 例子: {Milk, Bread, Diaper}
k-項集
:如果一個項集包含k個項
支持度計數
():包含特定項集的事務個數。 例如:
支持度
:包含項集的事務數與總事務數的比值。 例如:
頻繁項集
:滿足最小支持度閾值( minsup)的所有項集
關聯規則
關聯規則是形如 的蘊含表達式, 其中 X 和 Y 是不相交的項集
例子:
關聯規則強度:
支持度
:確定項集的頻繁程度
置信度
:確定Y在包含X的事務中出現的頻繁程度
關聯規則發現
關聯規則發現:
給定事務的集合 T, 關聯規則發現是指找出支持度大於等於 minsup並且置信度大於等於minconf的所有規則, minsup和minconf是對應的支持度和置信度閾值
關聯規則發現的一種原始方法是:Brute-force approach
:
- 計算每個可能規則的支持度和置信度
- 這種方法計算代價過高,因爲可以從數據集提取的規則的數量達指數級
- 從包含d個項的數據集提取的可能規則的總數
,如果d等於6,則R=602
挖掘關聯規則的策略
大多數關聯規則挖掘算法通常採用的一種策略是,將關聯規則挖掘任務分解爲如下兩個主要的子任務:
①頻繁項集產生(Frequent Itemset Generation)
其目標是發現滿足最小支持度閾值的所有項集,這些項集稱作頻繁項集。
②規則的產生(Rule Generation)
其目標是從上一步發現的頻繁項集中提取所有高置信度的規則,這些規則稱作強規則(strong rule)。
二、頻繁項集的產生
暴力法→Brute-force 方法:
把格結構中每個項集作爲候選項集
將每個候選項集和每個事務進行比較,確定每個候選項集的支持度計數。
時間複雜度 ~ O(NMw),這種方法的開銷可能非常大。
降低產生頻繁項集計算複雜度的方法:
- 減少候選項集的數量 (M) - 先驗(apriori)原理
- 減少比較的次數 (NM)
替代將每個候選項集與每個事務相匹配,可以使用更高級的數據結構,或存儲候選項集或壓縮數據集,來減少比較次數
1)先驗原理
先驗原理
:如果一個項集是頻繁的,則它的所有子集一定也是頻繁的
相反,如果一個項集是非頻繁的,則它的所有超集也一定是非頻繁的:
- 這種基於支持度度量修剪指數搜索空間的策略稱爲基於支持度的剪枝(support-based pruning)
- 這種剪枝策略依賴於支持度度量的一個關鍵性質,即一個項集的支持度決不會超過它的子集的支持度。這個性質也稱爲支持度度量的反單調性(anti-monotone)。
2)Apriori算法的頻繁項集產生
3)候選的產生與剪枝
構造apriori-gen函數
候選項集的產生與剪枝(構造apriori-gen函數)包含2個步驟:
- 候選項集的產生:由頻繁(k-1)-項集產生新的候選k-項集
- 候選項集的剪枝:採用基於支持度的剪枝,刪除一些候選k-項集
4)支持度計數
支持度計數過程確定在apriori-gen函數的候選項剪枝步驟保留下來的每個候選項集出現的頻繁程度。
計算支持度的主要方法:
- 一種方法是將每個事務與所有的候選項集進行比較,並且更新包含在事務中的候選項集的支持度計數。這種方法是計算昂貴的,尤其當事務和候選項集的數目都很大時。
- 另一種方法是枚舉每個事務所包含的項集,並且利用它們更新對應的候選項集的支持度。
存放在被訪問的葉結點中的候選項集與事務進行比較,如果候選項集是該事務的子集,則增加它的支持度計數。
在該例子中 ,訪問了9個葉子結點中的5個。
15個項集中的9個與事務進行比較
5)計算複雜度
▪ 支持度閾值
降低支持度閾值通常將導致更多的項集是頻繁的。計算複雜度增加
隨着支持度閾值的降低,頻繁項集的最大長度將增加,導致算法需要掃描數據集的次數也將增多
▪ 項數
隨着項數的增加,需要更多的空間來存儲項的支持度計數。如果頻繁項集的數目也隨着數據項數增加而增長,則由於算法產生的候選項集更多,計算量和I/O開銷將增加
▪ 事務數
由於Apriori算法反覆掃描數據集,因此它的運行時間隨着事務數增加而增加
▪ 事務的平均寬度
頻繁項集的最大長度隨事務平均寬度增加而增加
隨着事務寬度的增加,事務中將包含更多的項集,這將增加支持度計數時Hash樹的遍歷次數
三、規則的產生
忽略那些前件或後件爲空的規則,每個頻繁k-項集能夠產生多達個關聯規則
關聯規則的提取:將一個項集 Y劃分成兩個非空的子集 X 和Y-X,使得X → Y –X滿足置信度閾值。
這樣的規則必然已經滿足支持度閾值,因爲它們是由頻繁項集產生的。
怎樣有效的從頻繁項集中產生關聯規則?
▪ 一般,計算關聯規則的置信度並不需要再次掃描事務數據集。規則{A,B,C} → {D}的置信度爲σ(ABCD)/ σ(ABC)。 因爲這兩個項集的支持度計數已經在頻繁項集產生時得到,因此不必再掃描整個數據集
▪ 如果規則不滿足置信度閾值,則形如的規則一定也不滿足置信度閾值,其中X’是X的子集。
bingo~ ✨ 無論天空如何陰霾,太陽一直都在,不在這裏,就在那裏。