Apriori演算法是什麼?適用於什麼情境?


經典的關聯規則挖掘演算法包括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}


推薦閱讀:

千元級別顏值夠好的手錶推薦?
有哪些值得推薦的物權法和侵權行為法體系書?

TAG:推薦 | 演算法 | 推薦引擎 | 推薦系統 | 推薦演算法 |