1.關(guān)聯(lián)分析
????關(guān)聯(lián)分析是從大量數(shù)據(jù)中發(fā)現(xiàn)項集之間的相關(guān)聯(lián)系。關(guān)聯(lián)分析的一個典型例子是購物籃分析。該過程通過發(fā)現(xiàn)顧客放人其購物籃中的不同商品之間的聯(lián)系,分析顧客的購買習(xí)慣即寒。通過了解哪些商品頻繁地被顧客同時購買,這種關(guān)聯(lián)的發(fā)現(xiàn)可以幫助零售商制定營銷策略。其他的應(yīng)用還包括價目表設(shè)計唠帝、商品促銷、商品的排放和基于購買模式的顧客劃分生蚁。
2.相關(guān)概念
支持度:A、B同時發(fā)生的概率Support(A==>B)=P(A and B)
置信度:如果A發(fā)生档悠,B發(fā)生的概率Confidence(A==>B)=P(B|A)
3.Aprior算法
(1)原理
????Aprior算法是一種找頻繁項目集的基本算法。其基本原理是逐層搜索的迭代:頻繁K項Lk集用于搜索頻繁(K+1)項集Lk+1望浩,如此下去辖所,直到不能找到維度更高的頻繁項集為止。
????這種方法依賴連接和剪枝這兩步來實現(xiàn)磨德。算法的第一次遍歷僅僅計算每個項目的具體值的數(shù)量缘回,以確定大型1項集。隨后的遍歷典挑,第k次遍歷酥宴,包括兩個階段。
????首先您觉,使用在第(k-1)次遍歷中找到的項集Lk-1和產(chǎn)生候選項集Ck拙寡。
????接著掃描數(shù)據(jù)庫,計算Ck中候選的支持度琳水。用Hash樹可以有效地確定Ck中包含在一個給定的事務(wù)t中的候選肆糕。如果某項集滿足最小支持度,則稱它為頻繁項集在孝。
(2)步驟:
①設(shè)定最小支持度s和最小置信度c诚啃;
②Apriori算法使用候選項集。首先產(chǎn)生出候選的項的集合浑玛,即候選項集绍申,若候選項集的支持度大于或等于最小支持度,則該候選項集為頻繁項集顾彰;
③在Apriori算法的過程中极阅,首先從數(shù)據(jù)庫讀入所有的事務(wù),每個項都被看作候選1-項集涨享,得出各項的支持度筋搏,再使用頻繁1-項集集合來產(chǎn)生候選2-項集,因為先驗原理保證所有非頻繁的1-項集的超集都是非頻繁的厕隧;
④再掃描數(shù)據(jù)庫奔脐,得出候選2-項集集合,再找出頻繁2-項集吁讨,并利用這些頻繁2-項集集合來產(chǎn)生候選3-項集髓迎;
⑤重復(fù)掃描數(shù)據(jù)庫,與最小支持度比較,產(chǎn)生更高層次的頻繁項集建丧,再從該集合里產(chǎn)生下一級候選項集排龄,直到不再產(chǎn)生新的候選項集為止。
(3)程序?qū)崿F(xiàn):
????python自帶庫里沒有Aprior模塊翎朱,可以去網(wǎng)上自己下載橄维,然后封裝成自定義模塊尺铣,放在~/python/Lib/目錄下;也可以在程序里增加導(dǎo)入數(shù)據(jù)的模塊争舞,每次只要加入數(shù)據(jù)源即可凛忿。
4.FP-growth算法
(1)原理
????FP-growth算法是基于Apriori原理的,通過將數(shù)據(jù)集存儲在FP(Frequent Pattern)樹上發(fā)現(xiàn)頻繁項集竞川,但不能發(fā)現(xiàn)數(shù)據(jù)之間的關(guān)聯(lián)規(guī)則店溢。FP-growth算法只需要對數(shù)據(jù)庫進(jìn)行兩次掃描,而Apriori算法在求每個潛在的頻繁項集時都需要掃描一次數(shù)據(jù)集流译,所以說Apriori算法是高效的逞怨。
(2)步驟
①掃描第一遍數(shù)據(jù)庫,找出頻繁項福澡;
②將記錄按照頻繁項集的支持度由大到小順序重新排列叠赦;
③掃描第二遍數(shù)據(jù)庫,產(chǎn)生FP-tree革砸;
④得到頻繁項集除秀。
(3)實例
數(shù)據(jù)如下:
其FP-tree為: