關聯規則(Apriori算法、FP-樹頻集算法、Eclat算法)


關聯規則最早是由R.Agrawal等人針對超市購物籃分析問題提出的,其目的是發現超市交易數據庫中不同商品之間的關聯關系。

關聯規則體現了顧客購物的行為模式,這可以為經營決策、市場預測和策划等方面提供依據。關聯規則挖掘系統已經被成功應用於市場營銷、銀行業、零售業、保險業、電信業和公司經營管理等各個方面。關聯規則還可以應用於文本挖掘、商品廣告有機分析和網絡故障分析等領域。

經典的關聯規則挖掘算法包括Apriori算法和FP-growth算法(J.Han等人提出)。前者多次掃描數據庫,每次利用候選頻繁集產生頻繁集;后者則利用樹形結構直接得到頻繁集,減少了掃描數據庫的次數,從而提高了算法的效率。但是前者的擴展性好,可用於並行計算等領域。

 

 

  
  
  
咖啡
  
  
不喝
咖啡
  
  
  
  
  
  
150
  
  
50
  
  
200
  
  
不喝茶
  
  
650
  
  
150
  
  
800
  
  
  
  
800
  
  
200
  
  
1000
  


假定希望分析愛喝咖啡和愛喝茶的人之間的關系。收集一組人關於飲料偏愛的信息
評估關聯規則:{茶} -> {咖啡}
支持度=15%   置信度=75%
Confidence= P(咖啡|茶) = 0.75
但是 P(咖啡) = 0.8

 

盡管規則 {茶} -> {咖啡}有很高的置信度,但是它卻是一個誤導。

支持度-置信度框架的局限性:

  由於置信度度量忽略了規則后件中出現的項集的支持度,高置信度的規則有時可能出現誤導。
  解決這個問題的一種方法是使用提升度:
lift(A,B)= P(B/A)P(B)或conf(A→B)/sup(B)
  如果提升度大於1,表明A和B是正相關的。如果小於1,表明A和B是負相關的。

 

 

關聯規則 Eclat算法案例

library(arules)  #加載arules程序包
data(Groceries)  #調用數據文件
frequentsets
=eclat(Groceries,parameter=list(support=0.05,maxlen=10)) #求頻繁項集 inspect(frequentsets[1:10]) #察看求得的頻繁項集 inspect(sort(frequentsets,by="support")[1:10]) #根據支持度對求得的頻繁項集排序並察看 supp(A) = P(A)= 出現的頻率 = count(A) / counts

 

 

關聯規則 Apriori算法案例

rules=apriori(Groceries,parameter=list(support=0.01,confidence=0.01))    #求關聯規則
summary(rules)    #察看求得的關聯規則之摘要
x=subset(rules,subset=rhs%in%"whole milk"&lift>=1.2)    #求所需要的關聯規則子集
inspect(sort(x,by="support")[1:5])      #根據支持度對求得的關聯規則子集排序並察看              supp(A) = P(A)= 出現的頻率 = count(A) / counts
inspect(sort(x,by="confidence")[1:5]) #根據置信度(可信度)對求得的關聯規則子集排序並察看 conf(A->B) = P(A ^ B)/ P(B)= P(B|A)
inspect(sort(x,by="lift")[1:5]) #根據提高率(興趣度)對求得的關聯規則子集排序並察看 lift(A->B) = lift(B->A) = conf(A->B)/ P(B)= conf(B->A) / P(A)
= P(A ^ B)/(P(A)* P(B))

# 保存內容 sink(
"apriori.txt") inspect(rules) sink()

 

 

關聯規則 FP-樹頻繁集算法案例

外鏈:FP-Tree算法的實現

 

 

 

Java開發算法推薦:http://blog.csdn.net/yangliuy/article/details/7494983


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM