Apriori演算法是什麼?適用於什麼情境?
01-15
經典的關聯規則挖掘演算法包括Apriori演算法和FP-growth演算法。apriori演算法多次掃描交易資料庫,每次利用候選頻繁集產生頻繁集;而FP-growth則利用樹形結構,無需產生候選頻繁集而是直接得到頻繁集,大大減少掃描交易資料庫的次數,從而提高了演算法的效率。但是apriori的演算法擴展性較好,可以用於並行計算等領域。 Apriori algorithm是關聯規則里一項基本演算法。是由Rakesh Agrawal和Ramakrishnan Srikant兩位博士在1994年提出的關聯規則挖掘演算法。關聯規則的目的就是在一個數據集中找出項與項之間的關係,也被稱為購物藍分析 (Market Basket analysis),因為「購物藍分析」很貼切的表達了適用該演算法情景中的一個子集。
適用於在大數量的項集中發現關聯共現的項。
在啤酒與尿布中,項集表示很多消費者的購物單,項就是啤酒、尿布單個商品等,這個例子因為發現了啤酒與尿布之前的關係而聞名。 演算法方面的東西就不說了,很多地方都可以搜到,由於性能原因,現在多用FP-Growth及其改進版本,HanJiawei提出的。 最後提一點,挖掘的關聯關係可能很多,但只有哪些有新奇度的才有意義挖掘頻繁項集的基本演算法,另一個常用的類似演算法是FPGrowth,性能更好。
購物網站里你買了一個商品,旁邊列出一系列買過該商品的人還買的其他商品,並且按置信度高低排序,一般會發現買手機的還會買充電器,買牙刷的還會買牙膏,這大概就是關聯規則的用處吧
寫了一個apriori演算法的應用小例子,鏈接:http://zhuanlan.zhihu.com/lhf-data/20537735
購物籃關聯分析——R語言代碼如下:setwd("E:/Rwd_All")
library(arules) #載入arules包
data(Groceries) #Groceries數據集
summary(Groceries)
length(Groceries)
inspect(Groceries[1:20]) #查看前20條購買記錄
rul=apriori(Groceries,parameter=list(support=0.005,
confidence=0.65)) #可嘗試不同的參數值(支持度support、置信度confidence)
rul
inspect(rul) #查看頻繁項集、關聯規則
rul_lift=sort(rul,by="lift") #亦可按support或confidence來控制
inspect(rul_lift)
##應用:假如我們作為商場經理想要促銷chocolate,該如何做(捆綁促銷)?
rul1=apriori(Groceries,parameter=list(support=0.002,confidence=0.2,maxlen=3),
appearance=list(rhs="chocolate",default="lhs")) #設置最大項數為3
rul1
inspect(rul1) #根據實際情況選擇捆綁組合,如{other vegetables,candy,chocolate}
推薦閱讀: