频繁项集挖掘之Aprior和FPGrowth算法
頻繁項集挖掘的應用多出現于購物籃分析,現介紹兩種頻繁項集的挖掘算法Aprior和FPGrowth,用以發現購物籃中出現頻率較高的購物組合。
基礎知識
項:“屬性-值”對。比如啤酒2罐。?
項集:項的集合。比如{啤酒2罐,…,尿布5片}?
K項集:項集中的每個項都有K個項。?
支持度:項集在訓練元組中同時出現的次數(或者比例)。?
置信度:A?>BA?>B的置信度,表示P(B|A)P(B|A),是個條件概率。(置信度大于用戶規定的最小置信度的規則是可信的)?
興趣度:A?>BA?>B的置信度與BB的整體占比的差值。興趣度越大,表示AA對BB的出現起到的促進作用越大。為負值時表示起到的抑制作用。為0時表示沒有影響。?
子集:被包含于某項集的項集。?
超集:能包含某項集的項集。?
頻繁項集:在訓練元組中,同時出現次數超過支持度的項集。?
極大頻繁項集:對當前頻繁項集來說,沒有包含它的頻繁超集,則稱當前項集為極大頻繁超集。
Aprior算法
Aprior算法的基本思想是由KK項頻繁項集產生K+1K+1項頻繁項集,直到滿足條件的頻繁項集發現為止。
連接定理和頻繁子集定理
連接定理:解決如何由KK項集產生K+1K+1項集問題。若有兩個KK項集,其前K?1K?1個項是相同的,則這兩個項集可以連接產生一個K+1項集。?
頻繁子集定理:用來壓縮搜索空間。若一個項集的子集不是頻繁項集,則該項集也不是頻繁項集。(換句話說,非頻繁項集的超集也是非頻繁項集;頻繁項集的所有非空子集也都是頻繁項集)
Aprior算法步驟
1. 掃描數據庫,產生候選1項集和頻繁項集。?
2. 從2項集開始循環,由頻繁K-1項集生成頻繁K項集。?
2.1 產生候選項集。根據連接定理,產生候選項集(有個排序的要求,加快比較)。?
2.2 去掉非頻繁項集。根據頻繁子集定理產生頻繁項集。?
2.3 去掉不符合條件的項集。掃描數據庫,計算支持度、置信度、興趣度,去掉不符合條件的項集。(這地方可變)?
2.4 判斷迭代終止條件。
Apriro優缺點
Aprior優點:?
1)對大型數據庫的處理能力,不需要將數庫讀入內存就可以完成頻繁項集的挖掘。?
Aprior缺點:?
1)需要多次掃描數據庫,效率低下。
FPGrowth算法
FPGrowth的基本思想是將原始數據壓縮到一個FPTree上,在該樹上進行頻繁項集的挖掘。(FPTree是共用前綴的)
FPGrowth算法步驟
講地非常好的FPGrowth算法博客(包括原理講解和代碼實現):?
(1)http://blog.csdn.net/huagong_adu/article/details/17739247 (2)http://www.cnblogs.com/zhangchaoyang/articles/2198946.html
FPGrowth優缺點
優點:?
1)只需要掃描兩邊數據庫,效率高。?
2)可以并行化實現。?
缺點:?
1)受內存大小限制。
轉載于:https://www.cnblogs.com/a-du/p/9324061.html
總結
以上是生活随笔為你收集整理的频繁项集挖掘之Aprior和FPGrowth算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从零开始学PowerShell(2)管道
- 下一篇: JS 常用函数二(改变HTML样式)