Apriori、FP-Tree 關聯規則演算法學習
阿新 • • 發佈:2019-01-22
Apriori演算法
性質
頻繁項集的所有非空子集必須是頻繁項集。
支援度
項集A、B同時發生的概率稱為關聯規則的支援度,也稱相對支援度。
置信度
項集A發生,則項集B發生的概率稱為關聯規則的置信度。
演算法過程
該演算法根據最小支援度找出最大k項頻繁集,再根據最小置信度,在頻繁集中產生關聯規則。
找出最大k項頻繁集
- 掃描所有事務,事務中的每一項都是候選1項集C1的成員,計算每一項的支援度;
- 對候選1項集C1中各項集的支援度與預先設定的最小支援度閾值進行比較,保留大於或等於該閾值的項,得到1項頻繁集L1;
- 掃描所有事務,L1與L1連線得到候選2項集C2,計算每一項的支援度。由於C2的每個子集(L1)都是頻繁集,因此沒有項集從C2中剔除;
- 將C2中各項集的支援度與預先設定的最小支援度閾值進行比較,保留大於或等於該閾值的項,得到2項頻繁集L2;
- 掃描所有事務,L2與L1連線得到候選3項集C3,計算每一項的支援度。根據頻繁集性質對C3進行剪枝,剔除C3的子集中含有不包含在頻繁集L2中的項集;
- 將C3中各項集的支援度與預先設定的最小支援度閾值進行比較,保留大於或等於該閾值的項,得到3項頻繁集L3;
- 重複上述連線和剪枝步驟,直到找到最大k項頻繁集。
由頻繁集產生關聯規則
- 根據上述的置信度公式,對所得到的k項頻繁集計算置信度;
- 將k項頻繁集中各項集的置信度與預先設定的最小置信度閾值進行比較,保留大於或等於該閾值的項,得到強關聯規則。
FP Tree演算法
建立項頭表
首先根據上述Apriori演算法找出1項頻繁集L1,並將L1放入項頭表中,按支援度降序排列。然後掃描資料,剔除原始資料中的非頻繁1項集,按支援度降序排列。
建立FP樹
在建立FP樹時,需要依次讀入排序後的資料集。插入FP樹時,排序靠前的節點為祖先節點,靠後的為子孫節點。若有共同的祖先,則在對應的共同祖先節點處計數加1。如果有新節點出現,則項頭表對應的節點會通過節點連結串列連結到新節點上。直到所有的資料都插入到FP樹中,完成FP樹的建立。
FP Tree的挖掘
在得到FP樹、節點連結串列和項頭表後,需要從項頭表的底部項依次向上挖掘,找到項頭表中每一項的條件模式基。
條件模式基
以要挖掘的節點(假設為節點A)作為葉子節點所對應的FP子樹,將該子樹中的祖先節點的計數設定為葉子節點的計數,並刪除計數低於支援度的節點。剩餘的祖先節點則構成要節點A的條件模式基。條件模式基中任一祖先節點與節點A構成一個2項頻繁集,再根據所得到的2項頻繁集和條件模式基,得到3項頻繁集,直到不能遞迴挖掘為止。
參考文獻
Python資料分析與資料探勘