본문 바로가기
공부/R & Python

14-1. 연관규칙과 로지스틱회귀분석-연관규칙 분석 1(Association Rule Analysis)

by 드인 2020. 3. 5.

14. 연관규칙과 로지스틱회귀분석

14-1. 연관규칙 분석 1

(Association Rule Analysis)


1) 연관규칙

- 연관규칙 (Association Rule)

- 대용량 데이터베이스의 트랜잭션에서 빈번하게 발생하는 패턴을 발견

- 거래간의 상호 관련성을 분석

       A사건 -> B사건

 A가 일어나면 B가 일어난다

 

- 연관규칙 예시

- 신발을 구매하는 고객의 10%는 양말을 동시에 구입한다.

- 빵과 우유를 구매한 고객의 50%가 쥬스도 함께 구매한다.

 

- 시장바구니(market basket) : 고객이 구매한 물품에 대한 정보 (구매 시기, 지불 방법, 매장정보 포함)

- 트랜잭션(transaction) : 고객이 거래한 정보를 하나의 트랜잭션

- 시장바구니 분석(market basket analysis) : 시장바구니 데이터로부터 연관규칙을 탐색 분석

2) 연관규칙 평가 척도

- 연관규칙을 평가하기 위해 지지도(support), 신뢰도(Confidence), 향상도(Lift)를 사용

- 향상도(lift)

- A가 거래된 경우, 그 거래가 B를 포함하는 경우와 B가 임의로 거래되는 경우의 

3) 연관규칙 : 거래데이터 예제

- 식료품점 shopping cart

4) 연관규칙 수행 패키지

- 연관규칙 수행을 위한 패키지 : arules

install.packages("arules")
library(arules)

연관규칙분석 수행을 위한 패키지 설치 (arules), 라이브러리 설정

 

5) 연관규칙분석을 위한 데이터

- Data frame vs Transaction data

dvd1<-read.csv("dvdtrans.csv")
dvd1
dvd.list<-split(dvd1$Item,dvd1$ID)
dvd.list
dvd.trans<-as(dvd.list,"transactions")
dvd.trans

 

inspect(dvd.trans)

- arules package를 통해 transaction 데이터 변환과 연관 규칙 분석을 함

- Split을 통해 id별로 item들을 as함수를 통해 transaction 데이터로 변환

- transaction 데이터로 변환된 'dvd.trans'

- transaction 데이터의 요약

summary(dvd.trans)

- 10트랜잭션 / 10 항목

- 밀도가 0.3 라고 되어 있는데, 10*10 cell 중에서 30%의 cell에 거래가 발생해 데이터가 있다는 뜻

- 거래항목 중 Gladiator=7번, Patriot=6번, Six Sense=6번 순으로 나왔음을 의미

 

6) 연관규칙 수행함수

- 연관규칙 함수 : apriori(transaction, parameter=list(support=list(support=0.0#, confidence=0.##))

dvd_rule<-apriori(dvd.trans, parameter = list(support=0.2,confidence = 0.20,minlen = 2))
dvd_rule

 

[출력 결과]

set of 13 rules

support=0.2, confidence=0.2이상인 13개의 연관규칙 생성됨

 

7) 연관규칙 수행결과 - dvdtrans 데이터

- 연관규칙 수행 컨솔창

- 연관규칙 수행결과

- 연관규칙의 해석

지지도 : Green Mile과 Sixth Sense를 동시에 구매할 확률 : 20%

신뢰도 : Green Mile를 구매한 경우는 모두 Sixth Sense를 구매 : 100%

향상도 : Green Mile를 구매하면 Six Sense의 구매비율이 1.667배 향상됨을 의미

 

- 그래프로 표현한 연관규칙 - 지지도>0.2이상의 항목들의 상대빈도

itemFrequencyPlot(dvd.trans,support=0.2,main="item for support>=0.2", col="green")