1. 程式人生 > >R_Studio(關聯)使用apriori函式簡單檢視資料存在多少條關聯規則,並按支援度降序排序輸出

R_Studio(關聯)使用apriori函式簡單檢視資料存在多少條關聯規則,並按支援度降序排序輸出

 

 

  

  檢視資料menu_orders.txt檔案存在多少條關聯規則,並按支援度降序排序輸出

 

  

 

#匯入arules包
install.packages("arules")
library ( arules )

setwd('D:\\data') 
Gary<- read.transactions("menu_orders.txt", format = "basket", sep=",")                              
summary(Gary)  

#檢視部分規則
inspect(Gary) #支援度0.2,置信度0.5 rules0=apriori(Gary,parameter=list(support=0.2,confidence=0.5)) #按支援度降序排序輸出 rules0.sorted_sup = sort(rules0, by="support") #讀取rules0中存在多少條資料 rules0 inspect(rules0)
Gary.R

 

apriori函式

  apriori(data, parameter = NULL, appearance = NULL, control = NULL)

  data:資料
  parameter  設定引數,預設情況下parameter=list(supp=0.1,conf=0.8,maxlen=10,minlen=1,target=”rules”)
  supp:  支援度(support)
  conf:  置信度(confidence)
  maxlen,minlen:  每個項集所含項數的最大最小值(lhs+rhs的長度)
  target:  “rules”或“frequent itemsets”(輸出關聯規則/頻繁項集)
  apperence:  對先決條件X(lhs),關聯結果Y(rhs)中具體包含哪些項進行限制,如:設定lhs=beer,將僅輸出lhs含有beer這一項的關聯規則。預設情況下,所有項都將無限制出現。
  control:  控制函式效能,如可以設定對項集進行升序sort=1或降序sort=-1排序,是否向使用者報告程序(verbose=F/T)

 

排序:

  通過支援度控制:rules.sorted_sup = sort(rules, by=”support”)
  通過置信度控制:rules.sorted_con = sort(rules, by=”confidence”)
  通過提升度控制:rules.sorted_lift = sort(rules, by=”lift”)

 

 

read.transactions(file, format =c("basket", "single"), sep = NULL,

           cols = NULL, rm.duplicates =FALSE, encoding = "unknown")

file:檔名,對應click_detail中的“click_detail.txt”

format:檔案格式,可以有兩種,分別為“basket”,“single”,click_detail.txt中用的是basket。basket: basket就是籃子,一個顧客買的東西都放到同一個籃子,所有顧客的transactions就是一個個籃子的組合        結果。如下形式,每條交易都是獨立的。single: single的意思,顧名思義,就是單獨的交易,簡單說,交易記錄為:顧客1買了產品1, 顧客1買了產品2,顧客2買了產品3……(產品1,產品2,產品3中可以是單個產品,也可以是多個產品)


sep:檔案中資料是怎麼被分隔的,預設為空格,click_detail裡面用逗號分隔

cols:對basket, col=1,表示第一列是資料的transaction ids(交易號),如果col=NULL,則表示資料裡面沒有交易號這一列;對single,col=c(1,2)表示第一列是transaction ids,第二列是item ids

rm.duplicates:是否移除重複項,預設為FALSE

encoding:寫到這裡研究了encoding是什麼意思,發現前面txt可以不是”ANSI”型別,如果TXT是“UTF-8”,寫encoding=”UTF-8”。
read.transactions函式

 

實現過程

 

  讀取資料並展示

> setwd('D:\\data')
> Gary<- read.transactions("menu_orders.txt", format = "basket", sep=",")
> summary(Gary)
transactions as itemMatrix
in sparse format with         10 rows (elements/itemsets/transactions) #10行(元素/項集/事務) 5 columns (items) and a density of 0.54            #5列(項)和0.54的密度 most frequent items: b a c e d (Other) 8 7 7 3 2 0 element (itemset/transaction) length distribution:      #元素(項集/事務)長度分佈 sizes 2 3 4 5 3 2 Min. 1st Qu. Median Mean 3rd Qu. Max. 2.0 2.0 2.5 2.7 3.0 4.0 includes extended item information - examples: labels 1 a 2 b 3 c

 

  檢視部分規則

> inspect(Gary)
     items    
[1]  {a,c,e}  
[2]  {b,d}    
[3]  {b,c}    
[4]  {a,b,c,d}
[5]  {a,b}    
[6]  {b,c}    
[7]  {a,b}    
[8]  {a,b,c,e}
[9]  {a,b,c}  
[10] {a,c,e} 

 

  支援度0.2,置信度0.5

> rules0=apriori(Gary,parameter=list(support=0.2,confidence=0.5))
Apriori

Parameter specification:
 confidence minval smax arem  aval originalSupport maxtime support minlen maxlen target   ext
        0.5    0.1    1 none FALSE            TRUE       5     0.2      1     10  rules FALSE

Algorithmic control:                    #演算法控制:
 filter tree heap memopt load sort verbose       #過濾樹堆
    0.1 TRUE TRUE  FALSE TRUE    2    TRUE

Absolute minimum support count: 2             #絕對最小支援計數:2

set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[5 item(s), 10 transaction(s)] done [0.00s].
sorting and recoding items ... [5 item(s)] done [0.00s].
creating transaction tree ... done [0.00s].
checking subsets of size 1 2 3 done [0.00s].
writing ... [18 rule(s)] done [0.00s].
creating S4 object  ... done [0.00s].

  

  按支援度降序排序輸出

> rules0.sorted_sup = sort(rules0, by="support")
> rules0
set of 18 rules 
#根據支援度對求得的關聯規則子集進行檢視
> inspect(rules0) lhs rhs support confidence lift count [1] {} => {c} 0.7 0.7000000 1.0000000 7 [2] {} => {b} 0.8 0.8000000 1.0000000 8 [3] {} => {a} 0.7 0.7000000 1.0000000 7 [4] {d} => {b} 0.2 1.0000000 1.2500000 2 [5] {e} => {c} 0.3 1.0000000 1.4285714 3 [6] {e} => {a} 0.3 1.0000000 1.4285714 3 [7] {c} => {b} 0.5 0.7142857 0.8928571 5 [8] {b} => {c} 0.5 0.6250000 0.8928571 5 [9] {c} => {a} 0.5 0.7142857 1.0204082 5 [10] {a} => {c} 0.5 0.7142857 1.0204082 5 [11] {b} => {a} 0.5 0.6250000 0.8928571 5 [12] {a} => {b} 0.5 0.7142857 0.8928571 5 [13] {c,e} => {a} 0.3 1.0000000 1.4285714 3 [14] {a,e} => {c} 0.3 1.0000000 1.4285714 3 [15] {a,c} => {e} 0.3 0.6000000 2.0000000 3 [16] {b,c} => {a} 0.3 0.6000000 0.8571429 3 [17] {a,c} => {b} 0.3 0.6000000 0.7500000 3 [18] {a,b} => {c} 0.3 0.6000000 0.8571429 3