1. 程式人生 > >Apriori關聯分析與FP-growth挖掘頻繁項集

Apriori關聯分析與FP-growth挖掘頻繁項集

1 問題引入

在去雜貨店買東西的過程,實際上包含了機器學習的應用,這包括物品的展示方式、優惠券等。通過檢視哪些商品經常被一起購買,商店可以瞭解使用者的購買習慣,然後將經常被一起購買的物品擺放在一起,有助於商品的售賣。從大規模資料集中尋找物品建的隱含關係被稱作關聯分析。但是尋找物品不同的組合是一項十分耗時的任務,暴力搜尋不不能解決這個問題,所以我們需要考慮更加智慧的方式去完成這項艱鉅的任務。

2 Apriori演算法

2.1 頻繁項集

關聯分析是一種在大規模資料集中尋找某種特定關係的任務。這些關係有兩種形式,頻繁項集和或關聯規則。頻繁項集是指經常一塊出現的物品的集合。但我們需要頻繁的定義是什麼,這裡引入兩個概念,支援度,一個項集的支援度被定義為資料集中包好該項集紀錄所佔的比例。可信度,針對關聯規則定義,如下圖。

{尿布}的支援度為4/5,{尿布,葡萄酒}的支援度為3/5。

{尿布}→{葡萄酒}的可信度定義為(尿布,葡萄酒的支援度)/(尿布的支援度),即3/4。

2.2 Apriori原理

規則很簡單,但對於N種物品的資料集共有2^n-1種組合,即以指數級增長,當我們有很多商品時,這個計算量會非常大,需要很長的時間。我們的Apriori原理是,當某個項集是頻繁的,那麼它的所有子集也是頻繁的,反過來說,如果某個項集是非頻繁的,那麼它的超集也是非頻繁的,這樣我們就可以刪除很多不必要計算的非頻繁項集,具體方法是當項集不滿足最小值支援度時,將其去掉。

2.3 關聯規則

在獲得頻繁項集之後,我們利用可信度挖掘出項集間的關聯規則。類似於上一節,如果某條規則不滿足最小可信度要求,那麼該規則的所有子集也不會滿足最小可信度要求。

優點:易於實現

缺點:在大資料集上執行較慢

3 FP-growth演算法

3.1 工作原理

FP-growth演算法基於Apriori,但是速度比A快,因為它只需要掃描兩次資料集,第一次構建FP樹儲存資料,第二次從FP樹種挖掘頻繁項集,但不能發現關聯規則。

3.2 構建FP樹

第一次遍歷資料集會獲得每個元素項的出現頻率,然後去掉不滿足最小支援度的元素項。構建FP樹時,讀入每個項集並將其新增到一條已經存在的路徑中,如果路徑不存在,則建立一條新路徑。如下圖。


3.3 建立條件FP樹

條件模式基是以所查詢的元素項為結尾的路徑集合。建立條件FP樹就是先找出某個頻繁項(如t)的所有條件模式基,根據在條件FP樹中最小支援度,去掉不頻繁項,構建條件FP樹。接下來,在條件FP樹裡,構建包含兩個元素項(初始項和條件樹中的另一項,如{t,z})的頻繁項集的條件樹,直到條件樹中沒有元素為止。


優點:速度快於Apriori

缺點:實現困難,在某些資料集上效能會下降

參考資料:統計學習方法(李航)、機器學習實戰(Peter)