R 연관규칙학습

1 개요[ | ]

R 연관성분석
R 연관규칙탐사
R 연관규칙학습

2 데이터 입력[ | ]

거래ID 우유 버터 맥주 기저귀
1 1 1 0 0 0
2 0 0 1 0 0
3 0 0 0 1 1
4 1 1 1 0 0
5 0 1 0 0 0
df <- read.table(header=T, text="
ID  milk  bread butter  beer  diapers
1   T   T   F   F   F
2   F   F   T   F   F
3   F   F   F   T   T
4   T   T   T   F   F
5   F   T   F   F   F
")
df
##   ID  milk bread butter  beer diapers
## 1  1  TRUE  TRUE  FALSE FALSE   FALSE
## 2  2 FALSE FALSE   TRUE FALSE   FALSE
## 3  3 FALSE FALSE  FALSE  TRUE    TRUE
## 4  4  TRUE  TRUE   TRUE FALSE   FALSE
## 5  5 FALSE  TRUE  FALSE FALSE   FALSE

3 처리[ | ]

library("arules")
trans <- as(df[, -1], "transactions")
str(trans)
## Formal class 'transactions' [package "arules"] with 3 slots
##   ..@ data       :Formal class 'ngCMatrix' [package "Matrix"] with 5 slots
##   .. .. ..@ i       : int [1:9] 0 1 2 3 4 0 1 2 1
##   .. .. ..@ p       : int [1:6] 0 2 3 5 8 9
##   .. .. ..@ Dim     : int [1:2] 5 5
##   .. .. ..@ Dimnames:List of 2
##   .. .. .. ..$ : NULL
##   .. .. .. ..$ : NULL
##   .. .. ..@ factors : list()
##   ..@ itemInfo   :'data.frame':	5 obs. of  3 variables:
##   .. ..$ labels   : chr [1:5] "milk" "bread" "butter" "beer" ...
##   .. ..$ variables: Factor w/ 5 levels "beer","bread",..: 5 2 3 1 4
##   .. ..$ levels   : Factor w/ 1 level "TRUE": 1 1 1 1 1
##   ..@ itemsetInfo:'data.frame':	5 obs. of  1 variable:
##   .. ..$ transactionID: chr [1:5] "1" "2" "3" "4" ...

rules <- apriori(trans, list(supp = 0.01, conf = 0.01, minlen = 2))
## Apriori
## 
## Parameter specification:
##   confidence minval smax arem  aval originalSupport maxtime
## 0.01    0.1    1 none FALSE            TRUE       5
## support minlen maxlen target   ext
## 0.01      2     10  rules FALSE
## 
## Algorithmic control:
##   filter tree heap memopt load sort verbose
## 0.1 TRUE TRUE  FALSE TRUE    2    TRUE
## 
## Absolute minimum support count: 0 
## 
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[5 item(s), 5 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 ... [11 rule(s)] done [0.00s].
## creating S4 object  ... done [0.00s].

inspect(rules)
##      lhs               rhs       support confidence lift      count
## [1]  {beer}         => {diapers} 0.2     1.0000000  5.0000000 1    
## [2]  {diapers}      => {beer}    0.2     1.0000000  5.0000000 1    
## [3]  {butter}       => {milk}    0.2     0.5000000  1.2500000 1    
## [4]  {milk}         => {butter}  0.2     0.5000000  1.2500000 1    
## [5]  {butter}       => {bread}   0.2     0.5000000  0.8333333 1    
## [6]  {bread}        => {butter}  0.2     0.3333333  0.8333333 1    
## [7]  {milk}         => {bread}   0.4     1.0000000  1.6666667 2    
## [8]  {bread}        => {milk}    0.4     0.6666667  1.6666667 2    
## [9]  {milk,butter}  => {bread}   0.2     1.0000000  1.6666667 1    
## [10] {bread,butter} => {milk}    0.2     1.0000000  2.5000000 1    
## [11] {milk,bread}   => {butter}  0.2     0.5000000  1.2500000 1

4 해석[ | ]

지지도, 신뢰도, 향상도 기준으로 정렬하여 상위 5개 보기

head(inspect(sort(rules,by=c("support","confidence","lift"))),5)
##                lhs          rhs support confidence     lift count
## [1]         {milk} =>   {bread}     0.4  1.0000000 1.666667     2
## [2]        {bread} =>    {milk}     0.4  0.6666667 1.666667     2
## [3]         {beer} => {diapers}     0.2  1.0000000 5.000000     1
## [4]      {diapers} =>    {beer}     0.2  1.0000000 5.000000     1
## [5] {bread,butter} =>    {milk}     0.2  1.0000000 2.500000     1
→ 우유를 산 사람은 빵도 살 가능성이 높다.
→ 빵을 산 사람은 우유도 살 가능성이 높다.
→ 맥주를 산 사람은 기저귀도 살 가능성이 높다.
→ 기저귀를 산 사람은 맥주도 살 가능성이 높다.
→ 빵고 버터를 산 사람은 우유도 살 가능성이 높다.

5 같이 보기[ | ]

6 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}