推荐算法-关联分析(关联规则)
轉(zhuǎn)載自? ?推薦算法-關(guān)聯(lián)分析(關(guān)聯(lián)規(guī)則)
關(guān)聯(lián)分析又稱(chēng)關(guān)聯(lián)挖掘,就是在交易數(shù)據(jù)、關(guān)系數(shù)據(jù)或其他信息載體中,查找存在于項(xiàng)目集合或?qū)ο蠹现g的頻繁模式、關(guān)聯(lián)、相關(guān)性或因果結(jié)構(gòu)。
或者說(shuō),關(guān)聯(lián)分析是發(fā)現(xiàn)交易數(shù)據(jù)庫(kù)中不同商品(項(xiàng))之間的聯(lián)系。
關(guān)聯(lián)分析是一種簡(jiǎn)單、實(shí)用的分析技術(shù),就是發(fā)現(xiàn)存在于大量數(shù)據(jù)集中的關(guān)聯(lián)性或相關(guān)性,從而描述了一個(gè)事物中某些屬性同時(shí)出現(xiàn)的規(guī)律和模式。
關(guān)聯(lián)分析是從大量數(shù)據(jù)中發(fā)現(xiàn)項(xiàng)集之間有趣的關(guān)聯(lián)和相關(guān)聯(lián)系。關(guān)聯(lián)分析的一個(gè)典型例子是購(gòu)物籃分析。該過(guò)程通過(guò)發(fā)現(xiàn)顧客放人其購(gòu)物籃中的不同商品之間的聯(lián)系,分析顧客的購(gòu)買(mǎi)習(xí)慣。通過(guò)了解哪些商品頻繁地被顧客同時(shí)購(gòu)買(mǎi),這種關(guān)聯(lián)的發(fā)現(xiàn)可以幫助零售商制定營(yíng)銷(xiāo)策略。其他的應(yīng)用還包括價(jià)目表設(shè)計(jì)、商品促銷(xiāo)、商品的排放和基于購(gòu)買(mǎi)模式的顧客劃分。
可從數(shù)據(jù)庫(kù)中關(guān)聯(lián)分析出形如“由于某些事件的發(fā)生而引起另外一些事件的發(fā)生”之類(lèi)的規(guī)則。如“67%的顧客在購(gòu)買(mǎi)啤酒的同時(shí)也會(huì)購(gòu)買(mǎi)尿布”,因此通過(guò)合理的啤酒和尿布的貨架擺放或捆綁銷(xiāo)售可提高超市的服務(wù)質(zhì)量和效益。又如“C語(yǔ)言課程優(yōu)秀的同學(xué),在學(xué)習(xí)‘?dāng)?shù)據(jù)結(jié)構(gòu)’時(shí)為優(yōu)秀的可能性達(dá)88%”,那么就可以通過(guò)強(qiáng)化“C語(yǔ)言”的學(xué)習(xí)來(lái)提高教學(xué)效果。
何為關(guān)聯(lián)分析
定義:
1、事務(wù):每一條交易稱(chēng)為一個(gè)事務(wù),例如示例1中的數(shù)據(jù)集就包含四個(gè)事務(wù)。
2、項(xiàng):交易的每一個(gè)物品稱(chēng)為一個(gè)項(xiàng),例如Cola、Egg等。
3、項(xiàng)集:包含零個(gè)或多個(gè)項(xiàng)的集合叫做項(xiàng)集,例如{Cola, Egg, Ham}。
4、k?項(xiàng)集:包含k個(gè)項(xiàng)的項(xiàng)集叫做k-項(xiàng)集,例如{Cola}叫做1-項(xiàng)集,{Cola, Egg}叫做2-項(xiàng)集。
5、支持度計(jì)數(shù):一個(gè)項(xiàng)集出現(xiàn)在幾個(gè)事務(wù)當(dāng)中,它的支持度計(jì)數(shù)就是幾。例如{Diaper, Beer}出現(xiàn)在事務(wù) 002、003和004中,所以它的支持度計(jì)數(shù)是3。
6、支持度:支持度計(jì)數(shù)除于總的事務(wù)數(shù)。例如上例中總的事務(wù)數(shù)為4,{Diaper, Beer}的支持度計(jì)數(shù)為3,所以它的支持度是3÷4=75%,說(shuō)明有75%的人同時(shí)買(mǎi)了Diaper和Beer。
關(guān)聯(lián)規(guī)則A->B的支持度support=P(AB),指的是事件A和事件B同時(shí)發(fā)生的概率。
7、頻繁項(xiàng)集:支持度大于或等于某個(gè)閾值的項(xiàng)集就叫做頻繁項(xiàng)集。例如閾值設(shè)為50%時(shí),因?yàn)閧Diaper, Beer}的支持度是75%,所以它是頻繁項(xiàng)集。
8、前件和后件:對(duì)于規(guī)則{Diaper}→{Beer},{Diaper}叫做前件,{Beer}叫做后件。
9、置信度:對(duì)于規(guī)則{Diaper}→{Beer},{Diaper, Beer}的支持度計(jì)數(shù)除于{Diaper}的支持度計(jì)數(shù),為這個(gè)規(guī)則的置信度。例如規(guī)則{Diaper}→{Beer}的置信度為3÷3=100%。說(shuō)明買(mǎi)了Diaper的人100%也買(mǎi)了Beer。
置信度confidence=P(B|A)=P(AB)/P(A),指的是發(fā)生事件A的基礎(chǔ)上發(fā)生事件B的概率。
10、強(qiáng)關(guān)聯(lián)規(guī)則:大于或等于最小支持度閾值和最小置信度閾值的規(guī)則叫做強(qiáng)關(guān)聯(lián)規(guī)則。
關(guān)聯(lián)分析的最終目標(biāo)就是要找出強(qiáng)關(guān)聯(lián)規(guī)則。
1.Apriori算法
電子商務(wù)中常用的一種數(shù)據(jù)挖掘方法就是從用戶(hù)交易數(shù)據(jù)集中尋找商品之間的關(guān)聯(lián)規(guī)則。關(guān)聯(lián)規(guī)則中常用的一種算法是Apriori算法。該算法主要包含兩個(gè)步驟:首先找出數(shù)據(jù)集中所有的頻繁項(xiàng)集,這些項(xiàng)集出現(xiàn)的頻繁性要大于或等于最小支持度;然后根據(jù)頻繁項(xiàng)集產(chǎn)生強(qiáng)關(guān)聯(lián)規(guī)則,這些規(guī)則必須滿足最小支持度和最小置信度。
上面提到了最小支持度和最小置信度,事實(shí)上,在關(guān)聯(lián)規(guī)則中用于度量規(guī)則質(zhì)量的兩個(gè)主要指標(biāo)即為支持度和置信度。那么,什么是支持度和置信度呢?接下來(lái)進(jìn)行講解。
給定關(guān)聯(lián)規(guī)則X=>Y,即根據(jù)X推出Y。形式化定義為:
算法步驟:
1.找出出現(xiàn)頻率最大的一個(gè)項(xiàng)L1。
2.根據(jù)L1找頻繁“2項(xiàng)集”的集合C2.
3.并剪掉不滿足支持度閾值的項(xiàng),得到L2。
4.根據(jù)L2找頻繁“3項(xiàng)集”的集合C3。
假設(shè)D表示交易數(shù)據(jù)集;K為項(xiàng)集,即包含k個(gè)項(xiàng)的集合;Lk表示滿足最小支持度的k項(xiàng)集;Ck表示候選k項(xiàng)集。Apriori算法的參考文獻(xiàn)描述如下。在該算法中,候選集的計(jì)算過(guò)程如下所示:
例如: L2 = {{A,C},{B,C},{B,E}{C,E}}
那么 C3= {{A,B,C},{A,C,E},{B,C,E}}
5.根據(jù)性質(zhì)和支持度閾值進(jìn)行剪枝,得到L3。
Apriori性質(zhì):一個(gè)頻繁項(xiàng)集的任一子集也應(yīng)該是頻繁項(xiàng)集。也就是,生成一個(gè)k-itemset的候選項(xiàng)時(shí),如果這個(gè)候選項(xiàng)有子集不在(k-1)-itemset(已經(jīng)確定是frequent的)中時(shí),那么這個(gè)候選項(xiàng)就不用拿去和支持度判斷了,直接刪除。
6.循環(huán)上述過(guò)程,直到得到空集C,即直到不能發(fā)現(xiàn)更大的頻集L。
7.計(jì)算最大頻集L的非空子集,兩兩計(jì)算置信度,得到大于置信度閾值的強(qiáng)關(guān)聯(lián)規(guī)則。
舉個(gè)栗子
假設(shè)給定如下電子商務(wù)網(wǎng)站的用戶(hù)交易數(shù)據(jù)集,其中,定義最小支持度為2/9,即支持度計(jì)數(shù)為2,最小置信度為70%,現(xiàn)在要計(jì)算該數(shù)據(jù)集的關(guān)聯(lián)規(guī)則,如圖所示。
用戶(hù)交易數(shù)據(jù)集步驟1,根據(jù)Apriori算法計(jì)算頻繁項(xiàng)集。
1)計(jì)算頻繁1項(xiàng)集。掃描交易數(shù)據(jù)集,統(tǒng)計(jì)每種商品出現(xiàn)的次數(shù),選取大于或等于最小支持度的商品,得到了候選項(xiàng)集。
2)根據(jù)頻繁1項(xiàng)集,計(jì)算頻繁2項(xiàng)集。首先將頻繁1項(xiàng)集和頻繁1項(xiàng)集進(jìn)行連接運(yùn)算,得到2項(xiàng)集,如下所示:
2項(xiàng)集掃描用戶(hù)交易數(shù)據(jù)集,計(jì)算包含每個(gè)候選2項(xiàng)集的記錄數(shù)。
候選2項(xiàng)集根據(jù)最小支持度,得到頻繁2項(xiàng)集。
頻繁2項(xiàng)集3)根據(jù)頻繁2項(xiàng)集,計(jì)算頻繁3項(xiàng)集。首先將頻繁2項(xiàng)集進(jìn)行連接,得到{{I1,I2,I3},{I1,I2,I5},{I1,I3,I5},{I2,I3,I4},{I2,I3,I5},{I2,I4,I5}},然后根據(jù)頻繁項(xiàng)集性質(zhì)進(jìn)行剪枝(第一種剪枝),即頻繁項(xiàng)集的非空子集必須是頻繁的。
{I1,I2,I3}的2項(xiàng)子集為{I1,I2},{I1,I3},{I2,I3},都在頻繁2項(xiàng)集中,則保留;
{I1,I2,I5}的2項(xiàng)子集為{I1,I2},{I1,I5},{I2,I5},都在頻繁2項(xiàng)集中,則保留;
{I1,I3,I5}的2項(xiàng)子集為{I1,I3},{I1,I5},{I3,I5},由于{I3,I5}不是頻繁2項(xiàng)集,移除該候選集;
{I2,I3,I4}的2項(xiàng)子集為{I2,I3},{I2,I4},{I3,I4},由于{I3,I4}不是頻繁2項(xiàng)集,移除該候選集;
{I2,I3,I5}的2項(xiàng)子集為{I2,I3},{I2,I5},{I3,I5},由于{I3,I5}不是頻繁2項(xiàng)集,移除該候選集;
{I2,I4,I5}的2項(xiàng)子集為{I2,I4},{I2,I5},{I4,I5},由于{I4,I5}不是頻繁2項(xiàng)集,移除該候選集。通過(guò)剪枝,得到候選集{{I1,I2,I3},{I1,I2,I5}},掃描交易數(shù)據(jù)庫(kù),計(jì)算包含候選3項(xiàng)集的記錄數(shù)(第二種閾值剪枝)。
4)根據(jù)頻繁3項(xiàng)集,計(jì)算頻繁4項(xiàng)集。重復(fù)上述的思路,得到{I1,I2,I3,I5},根據(jù)頻繁項(xiàng)集定理,它的子集{I2,I3,I5}為非頻繁項(xiàng)集,所以移除該候選集。從而,頻繁4項(xiàng)集為空,至此,計(jì)算頻繁項(xiàng)集的步驟結(jié)束。
步驟2,根據(jù)頻繁項(xiàng)集,計(jì)算關(guān)聯(lián)規(guī)則。
這里以頻繁3項(xiàng)集{I1,I2,I5}為例,計(jì)算關(guān)聯(lián)規(guī)則。{I1,I2,I5}的非空子集為{I1,I2}、{I1,I5}、{I2,I5}、{I1}、{I2}和{I5}。
規(guī)則1,{I1,I2}=>{I5},置信度為{I1,I2,I5}的支持度除以{I1,I2}的支持度,即2/4=50%,因其小于最小置信度,所以刪除該規(guī)則。
同理,最后可以得到{I1,I5}=>{I2},{I2,I5}=>{I1}和{I5}=>{I1,I2}為3條強(qiáng)關(guān)聯(lián)規(guī)則。
缺點(diǎn)
(1)在每一步產(chǎn)生侯選項(xiàng)目集時(shí)循環(huán)產(chǎn)生的組合過(guò)多,沒(méi)有排除不應(yīng)該參與組合的元素;
(2)每次計(jì)算項(xiàng)集的支持度時(shí),都對(duì)數(shù)據(jù)庫(kù)D中的全部記錄進(jìn)行了一遍掃描比較,如果是一個(gè)大型的數(shù)據(jù)庫(kù)的話,這種掃描比較會(huì)大大增加計(jì)算機(jī)系統(tǒng)的I/O開(kāi)銷(xiāo)。而這種代價(jià)是隨著數(shù)據(jù)庫(kù)的記錄的增加呈現(xiàn)出幾何級(jí)數(shù)的增加。因此人們開(kāi)始尋求更好性能的算法。
改進(jìn)
1)基于劃分的方法。該算法先把數(shù)據(jù)庫(kù)從邏輯上分成幾個(gè)互不相交的塊,每次單獨(dú)考慮一個(gè)分塊并對(duì)它生成所有的頻繁項(xiàng)集,然后把產(chǎn)生的頻繁項(xiàng)集合并,用來(lái)生成所有可能的頻繁項(xiàng)集,最后計(jì)算這些項(xiàng)集的支持度。這里分塊的大小選擇要使得每個(gè)分塊可以被放入主存,每個(gè)階段只需被掃描一次。而算法的正確性是由每一個(gè)可能的頻繁項(xiàng)集至少在某一個(gè)分塊中是頻繁項(xiàng)集保證的。
上面所討論的算法是可以高度并行的。可以把每一分塊分別分配給某一個(gè)處理器生成頻繁項(xiàng)集。產(chǎn)生頻繁項(xiàng)集的每一個(gè)循環(huán)結(jié)束后.處理器之間進(jìn)行通信來(lái)產(chǎn)生全局的候選是一項(xiàng)集。通常這里的通信過(guò)程是算法執(zhí)行時(shí)間的主要瓶頸。而另一方面,每個(gè)獨(dú)立的處理器生成頻繁項(xiàng)集的時(shí)間也是一個(gè)瓶頸。其他的方法還有在多處理器之間共享一個(gè)雜湊樹(shù)來(lái)產(chǎn)生頻繁項(xiàng)集,更多關(guān)于生成頻繁項(xiàng)集的并行化方法可以在其中找到。
2)基于Hash的方法。Park等人提出了一個(gè)高效地產(chǎn)生頻繁項(xiàng)集的基于雜湊(Hash)的算法。通過(guò)實(shí)驗(yàn)可以發(fā)現(xiàn),尋找頻繁項(xiàng)集的主要計(jì)算是在生成頻繁2—項(xiàng)集Lk
上,Park等就是利用這個(gè)性質(zhì)引入雜湊技術(shù)來(lái)改進(jìn)產(chǎn)生頻繁2—項(xiàng)集的方法。
3)基于采樣的方法。基于前一遍掃描得到的信息,對(duì)它詳細(xì)地做組合分析,可以得到一個(gè)改進(jìn)的算法,其基本思想是:先使用從數(shù)據(jù)庫(kù)中抽取出來(lái)的采樣得到一些在整個(gè)數(shù)據(jù)庫(kù)中可能成立的規(guī)則,然后對(duì)數(shù)據(jù)庫(kù)的剩余部分驗(yàn)證這個(gè)結(jié)果。這個(gè)算法相當(dāng)簡(jiǎn)單并顯著地減少了FO代價(jià),但是一個(gè)很大的缺點(diǎn)就是產(chǎn)生的結(jié)果不精確,即存在所謂的數(shù)據(jù)扭曲(Dataskew)。分布在同一頁(yè)面上的數(shù)據(jù)時(shí)常是高度相關(guān)的,不能表示整個(gè)數(shù)據(jù)庫(kù)中模式的分布,由此而導(dǎo)致的是采樣5%的交易數(shù)據(jù)所花費(fèi)的代價(jià)同掃描一遍數(shù)據(jù)庫(kù)相近。
4)減少交易個(gè)數(shù)。減少用于未來(lái)掃描事務(wù)集的大小,基本原理就是當(dāng)一個(gè)事務(wù)不包含長(zhǎng)度為志的大項(xiàng)集時(shí),則必然不包含長(zhǎng)度為走k+1的大項(xiàng)集。從而可以將這些事務(wù)刪除,在下一遍掃描中就可以減少要進(jìn)行掃描的事務(wù)集的個(gè)數(shù)。這就是AprioriTid的基本思想。
2.FP-growth算法
由于Apriori方法的固有缺陷.即使進(jìn)行了優(yōu)化,其效率也仍然不能令人滿意。2000年,Han Jiawei等人提出了基于頻繁模式樹(shù)(Frequent Pattern Tree,簡(jiǎn)稱(chēng)為FP-tree)的發(fā)現(xiàn)頻繁模式的算法FP-growth。在FP-growth算法中,通過(guò)兩次掃描事務(wù)數(shù)據(jù)庫(kù),把每個(gè)事務(wù)所包含的頻繁項(xiàng)目按其支持度降序壓縮存儲(chǔ)到FP—tree中。在以后發(fā)現(xiàn)頻繁模式的過(guò)程中,不需要再掃描事務(wù)數(shù)據(jù)庫(kù),而僅在FP-Tree中進(jìn)行查找即可,并通過(guò)遞歸調(diào)用FP-growth的方法來(lái)直接產(chǎn)生頻繁模式,因此在整個(gè)發(fā)現(xiàn)過(guò)程中也不需產(chǎn)生候選模式。該算法克服了Apriori算法中存在的問(wèn)顥.在執(zhí)行效率上也明顯好于Apriori算法。
構(gòu)造FP-Tree
挖掘頻繁模式前首先要構(gòu)造FP-Tree,算法偽碼如下:
輸入:一個(gè)交易數(shù)據(jù)庫(kù)DB和一個(gè)最小支持度threshold.
輸出:它的FP-tree.
步驟:
1.掃描數(shù)據(jù)庫(kù)DB一遍.得到頻繁項(xiàng)的集合F和每個(gè)頻繁項(xiàng)的支持度.把F按支持度遞降排序,結(jié)果記為L(zhǎng).
2.創(chuàng)建FP-tree的根節(jié)點(diǎn),記為T(mén),并且標(biāo)記為’null’.然后對(duì)DB中的每個(gè)事務(wù)Trans做如下的步驟.
根據(jù)L中的順序,選出并排序Trans中的事務(wù)項(xiàng).把Trans中排好序的事務(wù)項(xiàng)列表記為[p|P],其中p是第一個(gè)元素,P是列表的剩余部分.調(diào)用insert_tree([p|P],T).
函數(shù)insert_tree([p|P],T)的運(yùn)行如下.
如果T有一個(gè)子結(jié)點(diǎn)N,其中N.item-name=p.item-name,則將N的count域值增加1;否則,創(chuàng)建一個(gè)新節(jié)點(diǎn)N,使它的count為1,使它的父節(jié)點(diǎn)為T(mén),并且使它的node_link和那些具有相同item_name域串起來(lái).如果P非空,則遞歸調(diào)用insert_tree(P,N).
挖掘頻繁模式
對(duì)FP-Tree進(jìn)行挖掘,算法如下:
輸入:一棵用算法一建立的樹(shù)Tree
輸出:所有的頻繁集
步驟:
調(diào)用FP-growth(Tree,null).
procedure FP-Growth ( Tree, x)
{
(1)if (Tree只包含單路徑P) then
(2) 對(duì)路徑P中節(jié)點(diǎn)的每個(gè)組合(記為B)
(3) 生成模式B并x,支持?jǐn)?shù)=B中所有節(jié)點(diǎn)的最小支持度
(4) else 對(duì)Tree頭上的每個(gè)ai,do
{
(5) 生成模式B= ai 并 x,支持度=ai.support;
(6) 構(gòu)造B的條件模式庫(kù)和B的條件FP樹(shù)TreeB;
(7)if TreeB != 空集
(8)**then **call FP-Growth ( TreeB , B )
}
}
舉個(gè)栗子
構(gòu)建FP-tree
FP-growth算法通過(guò)構(gòu)建FP-tree來(lái)壓縮事務(wù)數(shù)據(jù)庫(kù)中的信息,從而更加有效地產(chǎn)生頻繁項(xiàng)集。FP-tree其實(shí)是一棵前綴樹(shù),按支持度降序排列,支持度越高的頻繁項(xiàng)離根節(jié)點(diǎn)越近,從而使得更多的頻繁項(xiàng)可以共享前綴。
根據(jù)上面的例子,構(gòu)建FP-tree。
頻數(shù)得到新的順序:
用戶(hù)交易排序數(shù)據(jù)集FP-tree的根節(jié)點(diǎn)為null,不表示任何項(xiàng)。接下來(lái),對(duì)事務(wù)型數(shù)據(jù)庫(kù)進(jìn)行第二次掃描,從而開(kāi)始構(gòu)建FP-tree:
第一條記錄<I2,I1,I5>對(duì)應(yīng)于FP-tree中的第一條分支<(I2:1),(I1:1),(I5:1)>:
由于第二條記錄<I2,I4>與第一條記錄有相同的前綴<I2>,因此<I2>的支持度加一,同時(shí)在(I2:2)節(jié)點(diǎn)下添加節(jié)點(diǎn)(I4:1)。所以,FP-tree中的第二條分支是<(I2:2),(I4:1)>:
第二條記錄第三條記錄<I2,I3>與前兩條記錄相比,只有一個(gè)共同前綴<I2>,因此,只需要在(I2:3)下添加節(jié)點(diǎn)<I3:1>:
第三條記錄第四條記錄<I2,I1,I4>與之前所有記錄共同前綴<I2,I1>,因此在<I2,I1>節(jié)點(diǎn)下添加節(jié)點(diǎn)<I4>:
第四條記錄類(lèi)似地,將第五條記錄<I1,I3>作為FP-tree的一個(gè)分支,更新相關(guān)節(jié)點(diǎn)的支持度:
第五條記錄以此類(lèi)推的到最后的樹(shù):
FP-tree綜上,FP-tree的節(jié)點(diǎn)可以定義為:
class TreeNode { private: String name; // 節(jié)點(diǎn)名稱(chēng) int count; // 支持度計(jì)數(shù) TreeNode *parent; // 父節(jié)點(diǎn) Vector<TreeNode *> children; // 子節(jié)點(diǎn) TreeNode *nextHomonym; // 指向同名節(jié)點(diǎn) ... }
從FP-tree中挖掘頻繁模式(Frequent Patterns)
我們從頭表的底部開(kāi)始挖掘FP-tree中的頻繁模式。在FP-tree中以I5結(jié)尾的節(jié)點(diǎn)鏈共有兩條,分別是<(I2:7),(I1:4),(I3:2),(I5:1)>和<(I2:7),(I1:4),(I5:1)>。
其中,第一條節(jié)點(diǎn)鏈表表示客戶(hù)購(gòu)買(mǎi)的物品清單<I2,I1,I3,I5>在數(shù)據(jù)庫(kù)中共出現(xiàn)了1次。需要注意到是,盡管<I2,I4>在第一條節(jié)點(diǎn)鏈中出現(xiàn)了4次,單個(gè)物品<I2>出現(xiàn)了7次,但是它們與I5一起出現(xiàn)只有1次,所以在條件FP-tree中將<(I2:7),(I1:4),(I3:2),(I5:1)>記為<(I2:1),(I1:1),(I3:1),(I5:1)>。
同理,第二條節(jié)點(diǎn)鏈表示客戶(hù)購(gòu)買(mǎi)的物品清單<(I2:7),(I1:4),(I5:1)>在數(shù)據(jù)庫(kù)中只出現(xiàn)了一次。
我們將p的前綴節(jié)點(diǎn)鏈<(I2:1),(I1:1),(I3:1),(I5:1)>和<(I2:1),(I1:1),(I5:1)>稱(chēng)為I5的條件模式基(conditional pattern base)。
我們將I5的條件模式基作為新的事務(wù)數(shù)據(jù)庫(kù),每一行存儲(chǔ)p的一個(gè)前綴節(jié)點(diǎn)鏈,根據(jù)第二節(jié)中構(gòu)建FP-tree的過(guò)程,計(jì)算每一行記錄中各種物品的支持度,然后按照支持度降序排列,僅保留頻繁項(xiàng)集,剔除那些低于支持度閾值的項(xiàng),建立一棵新的FP-tree,這棵樹(shù)被稱(chēng)之為I5的條件FP-tree:
I5的條件FP-tree從圖可以看到I5的條件FP-tree中滿足支持度閾值的剩下2個(gè)節(jié)點(diǎn),所以以I5結(jié)尾的頻繁項(xiàng)集有(I5:2),(I1,I5 :2),(I2,I5 :2),(I1,I2,I5 :2)。
同理可得I3的條件FP-tree:
I3的條件FP-tree得到以I3結(jié)尾的頻繁項(xiàng)集有(I3:4),(I1,I3 :4),(I2,I3 :4),(I1,I2,I3 :2)。
于是,以I4結(jié)尾的頻繁項(xiàng)集有(I4:2),(I2,I4 :2),以I2結(jié)尾的頻繁項(xiàng)集有(I2:7),以I1結(jié)尾的頻繁項(xiàng)集有(I1:6),(I2,I1 :4)。
最后計(jì)算關(guān)聯(lián)。
引用:
http://baike.baidu.com/link?url=3LCct6owUbtQJp8m-y5F-8VfpnRroF1-gVijGeI8J9znoZS1cWHxv2Z9kubuBMwDTIY5YUGm-8u0AhPO1xeU9lTFasXq0JiRuXmrMenhQm5bFxBpNrWOswuMO-kPx0je
備注:
http://www.cnblogs.com/datahunter/p/3903413.html
總結(jié)
以上是生活随笔為你收集整理的推荐算法-关联分析(关联规则)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 微软旗下领英将裁员668人 涉及工程、产
- 下一篇: 关联分析:FP-Growth算法