fp grows,pfp grows與協同過濾cf

2021-06-23 00:38:13 字數 3123 閱讀 1566

fp增長演算法是一種以自底向上的探索樹fp-tree產生頻繁項集的演算法。

fim(

頻繁項集挖掘

)的定義: i=

是乙個專案的集合,乙個事務資料庫db是

i的乙個子集,

db=,每乙個

ti屬於i(

1<=i<=n

),ti

屬於乙個事務。模式

a(屬於

i)的支援度為

supp(a),

是這個某些事務(包含模式

a)在整個

db中的個數。

a是乙個頻繁模式且

supp(a)>=ξ(ξ

被定義為最小支援度閾值)。給定乙個db和

ξ,這個問題就可以描述為在

db中尋找頻繁模式集合,即為頻繁項集挖掘問題。

fp-tree

將事務資料表中的各個事務資料項按照支援度排序後,把每個事務中的資料項按降序依次插入到一棵以

null

為根結點的樹中,同時在每個結點處記錄該結點出現的支援度。

fp-growth

體現了一種分治的策略。該演算法需要掃瞄兩次資料庫,第一次掃瞄資料庫時計算所有專案的頻數,並按照此頻數的降序排序生成乙個

f-list

。在第二次掃瞄中所有資料庫中的資料都被壓縮為乙個

fp-tree

。接著fp-growth

就開始挖掘這個

fp-tree

,即針對每乙個滿足

supp

()>ξ

的專案遞迴的生成乙個條件

fp-tree

。然後遞迴的挖掘這個

fp-tree

。所以就把尋找頻繁專案集轉換為遞迴地查詢和建立樹的過程。

例: 演算法流程

頻繁集的閾值是3,最小支援度為3。

事務資料:

圖(1)

首先,掃一遍資料,統計每一項的頻率;刪除頻率小於最小支援度的項;根據項頻率,由大到小排序。

然後再掃一遍資料,構造頻繁項集樹。構造樹的流程如下。

讀第一條記錄:

圖(2)

讀第二條記錄:

圖(3)

讀第三條記錄:

圖(4)

讀第四條記錄:

圖(5)

讀第五條記錄:

圖(6)

為了便於後邊的樹的遍歷,我們為這棵樹又增加了乙個結構-頭表,頭表儲存了所有的頻繁專案,並且按照頻率的降序排列,表中的每個專案包含乙個節點鍊錶,指向樹中和它同名的節點。

圖(7)

好了,一顆完整的fp-tree構造完成。

二、挖掘頻繁模式

圖(8)

以m為例挖掘,以m結尾的有和兩條路徑。以m為條件,得到(將頻數設定成最低的那個數)

,得到。兩項相加得到,b不符合頻繁項閾值3,所以,

mine(fptree|m)=mine(|m)

。其他以此類推,得到最終的結果,如下圖。

圖(9)

演算法:

·pfp: parallel fp-growth

·  

pfp使用三個mr去實現pf-growth演算法。圖2顯示描述了pfp的5步:

·  

·  

step1:分割。分割db到p臺不同的電腦,每台電腦的部分資料稱為分片(shard);

·  

·  

step3:劃分專案組。把f-list分為q組(每組為乙個g-list),每組賦予乙個唯一的組id(gid),這個過程在乙個電腦上完成;

·  

·  

ti(屬於

db),

執行下面的操作:

1. 對於每個專案aj(屬於ti),用相應的group-id替換aj;

pair key = gid, value = .

這句的意思應該是:對於這樣一條已轉換的記錄[0,2,3,5],應該輸出為{[gid1:0,2,3,5], [gid2:0,2]

·  

·  

reducer:每個reducer操作乙個或者多個由組分配的分片,對於乙個分片這個reducer建立乙個本地的fp-tree,接著遞迴的建立條件fp-tree並且在遞迴的過程中輸出發現的模式組合;

·  

step5:聚集所有的結果

原文及偽**請見

pfp: parallel fp-growth for query recommendation

l什麼是協同過濾

協同過濾是利用集體智慧型的乙個典型方法。要理解什麼是協同過濾 (collaborative filtering, 簡稱 cf),首先想乙個簡單的問題,如果你現在想看個電影,但你不知道具體看哪部,你會怎麼做?大部分的人會問問周圍的朋友,看看最近有什麼好看的電影推薦,而我們一般更傾向於從口味比較類似的朋友那裡得到推薦。這就是協同過濾的核心思想。

l深入協同過濾的核心

要實現協同過濾,需要以下幾個步驟

收集使用者偏好

找到相似的使用者或物品

計算推薦

基於使用者的cf(

user cf

基於使用者的 cf 的基本思想相當簡單,基於使用者對物品的偏好找到相鄰鄰居使用者,然後將鄰居使用者喜歡的推薦給當前使用者。計算上,就是將乙個使用者對所有物品的偏好作為乙個向量來計算使用者之間的相似度,找到 k 鄰居後,根據鄰居的相似度權重以及他們對物品的偏好,**當前使用者沒有偏好的未涉及物品,計算得到乙個排序的物品列表作為推薦。圖 2 給出了乙個例子,對於使用者 a,根據使用者的歷史偏好,這裡只計算得到乙個鄰居 - 使用者 c,然後將使用者 c 喜歡的物品 d 推薦給使用者 a。

基於物品的cf(

item cf

3.基於物品的

cf 的基本原理

協同過濾 基於使用者的協同過濾itemCF

基於使用者的協同過濾演算法也被稱為最近鄰協同過濾或knn k nearest neighbor,k最近鄰演算法 其核心思想就是,首先根據相似度計算出目標使用者的鄰居集合,然後用鄰居使用者評分的加權組合來為目標使用者作推薦。通常這些演算法都可以總結成三步 首先,使用使用者已有的評分來計算使用者之間的相...

基於使用者協同過濾與基於專案協同過濾的適用場景

一 在適合用途上的比較 基於使用者的協同過濾演算法主要有兩步 1 找到和目標使用者興趣相似的使用者集合 2 找到這個集合中的使用者喜歡的,且目標使用者沒有聽說過的物品推薦給目標使用者。基於物品的協同過濾演算法主要有兩步 1 計算物品之間的相似度。2 根據物品的相似度和使用者的歷史行為給使用者生成推薦...

基於使用者協同過濾與基於專案協同過濾的適用場景

一 在適合用途上的比較 基於使用者的協同過濾演算法主要有兩步 1 找到和目標使用者興趣相似的使用者集合 2 找到這個集合中的使用者喜歡的,且目標使用者沒有聽說過的物品推薦給目標使用者。基於物品的協同過濾演算法主要有兩步 1 計算物品之間的相似度。2 根據物品的相似度和使用者的歷史行為給使用者生成推薦...