1. 程式人生 > >Apriori、FP-Tree 關聯規則演算法學習

Apriori、FP-Tree 關聯規則演算法學習

Apriori演算法

性質

頻繁項集的所有非空子集必須是頻繁項集。

支援度

項集A、B同時發生的概率稱為關聯規則的支援度,也稱相對支援度。


置信度

項集A發生,則項集B發生的概率稱為關聯規則的置信度。


演算法過程

該演算法根據最小支援度找出最大k項頻繁集,再根據最小置信度,在頻繁集中產生關聯規則。

找出最大k項頻繁集

  1. 掃描所有事務,事務中的每一項都是候選1項集C1的成員,計算每一項的支援度;
  2. 對候選1項集C1中各項集的支援度與預先設定的最小支援度閾值進行比較,保留大於或等於該閾值的項,得到1項頻繁集L1;
  3. 掃描所有事務,L1與L1連線得到候選2項集C2,計算每一項的支援度。由於C2的每個子集(L1)都是頻繁集,因此沒有項集從C2中剔除;
  4. 將C2中各項集的支援度與預先設定的最小支援度閾值進行比較,保留大於或等於該閾值的項,得到2項頻繁集L2;
  5. 掃描所有事務,L2與L1連線得到候選3項集C3,計算每一項的支援度。根據頻繁集性質對C3進行剪枝,剔除C3的子集中含有不包含在頻繁集L2中的項集;
  6. 將C3中各項集的支援度與預先設定的最小支援度閾值進行比較,保留大於或等於該閾值的項,得到3項頻繁集L3;
  7. 重複上述連線和剪枝步驟,直到找到最大k項頻繁集。

由頻繁集產生關聯規則

  1. 根據上述的置信度公式,對所得到的k項頻繁集計算置信度;
  2. 將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資料分析與資料探勘