1. 程式人生 > 其它 >Apriori與FP-Growth:啤酒與尿布的故事

Apriori與FP-Growth:啤酒與尿布的故事

 

關聯分析(無監督學習),目標是從大資料中找出那些經常一起出現的東西

 

項集(item set):可以是單個的項,也可以是一系列的專案的集合

關聯規則:根據頻繁項集挖掘出的結果。例如{尿布}-》{啤酒}    規則的左側稱為先導,右側稱為後繼

 

支援度:一個項集在資料中出現的比例

                支援度(尿布)=(尿布出現的次數)/(購物小票的數量)=0.9

 

置信度:在一條規則中,出現先導也出現後繼的比例

                 置信度(尿布-》啤酒)=(支援度【尿布U啤酒】)/(支援度【尿布】)=8/9

 

提升度:衡量先導和後繼的獨立性

      提升度(尿布-》啤酒)=(置信度(尿布-》啤酒)/(支援度【啤酒】)=10/9


【如果(尿布-》啤酒)的提升度等於1,這表示尿布和啤酒無關聯;提升度大於1,這表示如果顧客購買了尿布,可能也會買啤酒;而提升度小於1則表示如果顧客購買了尿布,那麼不太可能再購買啤酒】

 

確信度:對於一條規則,不發生先導而發生後繼的概率與這條規則錯誤的概率比值

                確信度(尿布-》啤酒)=(1-支援度(啤酒))/(1-置信度(尿布-》啤酒))=9/5

 

關聯挖掘的步驟:找出頻繁項集、從頻繁項集中提取規則

Apriori演算法的核心:如果某個項集是頻繁項集,那麼它的全部子集也都是頻繁項集

Apriori演算法:使用排列組合的方式列舉出所有可能的項集,每一次計算都需要重新讀取整個資料集,從而計算本輪次的項集支援度

FP-Growth:首先使用資料生成一顆FP-Growth樹,然後再根據這棵樹來生成頻繁項集。如下圖所示

 

 

 

#記得安裝包pip install efficient-apriori
from efficient_apriori import apriori

#設定資料集
data=[('尿布','啤酒','奶粉','洋蔥'),
('尿布','啤酒','奶粉','洋蔥'),('尿布','啤酒','蘋果','洋蔥'),('尿布','啤酒','蘋果'),('尿布','啤酒','奶粉'),
'尿布','啤酒','奶粉'),('尿布','啤酒','蘋果'),('尿布','奶粉','洋蔥'),('
奶粉','洋蔥')] #挖掘頻繁項集和規則 itemsets,rules=apriori(data,min_support=0.4,min_confidence=1) print(itemsets)