Apriori與FP-Growth:啤酒與尿布的故事
阿新 • • 發佈:2022-03-16
關聯分析(無監督學習),目標是從大資料中找出那些經常一起出現的東西
項集(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)