'arulesViz'에 해당되는 글 1건

  1. 2016.12.26 제8장 연관성분석
반응형

1. 연관분석의 의의

연관분석(association analysis)은 연관 규칙을 통해 하나의 거래나 사건에 포함되어 있는 둘 이상의 품목 간 상호 연관성을 발견해 내는 것. 예를 들어 와인을 구매한 고객 중 15%가 치즈를 구매한다, 기저귀를 산 남성 고객은 맥주를 산다 등. 이러한 분석을 통하여 효율적인 매장 진열, 패키지 품목의 개발, 교차판매전략 등에 응용할 수 있다.

 

2. 연관 분석의 측도

(1) 지지율:  A -> B의 지지율은 전체 거래 중 A B가 동시에 포함된 거래의 수. 전체 거래 수 5건 중 빵과 버터를 동시에 구매한 거래수가 3건이라면 지지율은 3/5 = 60%. 지지율이 1에 가까울수록 연관도가 높다고 할 수 있다.

지지율의 단점은 표본수가 적은 경우 통계적 유의성을 증명하기 어렵고, A->B 연관규칙과 B->A의 연관규칙 차이를 알 수 없으므로 다른 평가지표가 필요하다.

(2) 신뢰도: 지지율의 경우 기준이 되는 사건(구매)이 전체 집합인 데 비하여 신뢰도는 기준이 되는 사건을 특정 품목을 구매한 것에 한정한다. A->B 신뢰도는 A를 구매하였을 때, 품목 B를 추가로 구매할 확률. 예를 들어 장바구니 수가 150개였고, 빵과 우유가 함께 들어가 있는 장바구니가 30개였다면, -> 우유의 지지율은 30/150 = 20%. 그런데 빵이 들어가 있는 장바구니만 추렸더니 100개였고, 이중 우유가 들어있는 것이 30개였다면, -> 우유의 신뢰도는 30/100 = 30%. 신뢰도가 1에 가까울수록 연관도가 높다고 할 수 있다.

하지만 빵->우유의 신뢰도가 30%였으나, 빵이 없는 장바구니 50개 중 우유가 있는 경우가 15개라면 이 경우에도 신뢰도가 30%, 또 다른 지표가 필요하다.

(3)향상도: 향상도는 A->B의 신뢰도를 독립 가정하에서의 신뢰도로 나눈 것을 의미한다. 우유를 살 확률 p(A) 0.6, 콜라를 살 확률 p(B) 0.5, 동시 구매할 지지율이 0.4, 신뢰도가 0.67일 경우, 향샹도는 신뢰도 / p(B) 0.67/0.5 = 1.34가 된다. 이는 우유 구매 데이터를 안 상태에서 콜라 마케팅을 진행 할 경우, 우유 구매 데이터를 모를 때 보다 그 효과가 34% 증가한다고 알 수 있다.

 

l  A->B 지지율 : 품목 A를 구매한 후 B를 구매한 거래 수 / 전체 거래수

l  A->B 신뢰도 : 품목 A를 구매한 후 B를 구매한 거래 수 / A를 포함한 전체 거래 수

l  A->B 향상도 : A->B 신뢰도 / B를 포함한 거래의 비중

 

3. 연관 분석의 장단점

l  장점: 쉽게 이해할 수 있고, 적용하기도 편하다. 목적변수 없는 직관적인 분석(자율학습 unsupervised learning에 해당)이라는 점도 쉽게 활용할 수 있는 장점. 데이터마이닝에 앞서 탐색 도구로도 유용

l  단점: 품목수의 증가에 따라 계산량이 증가. 유사한 품목은 한 범주로 일반화해야 함. 연속형 변수를 사용해서는 규칙을 찾기 힘들고, 거래가 드문 품목에 대한 정보를 찾기 어렵다.


4. R 실습

1) 데이터 입력

> setwd('c:/Rwork')

> read.table('trains3.txt')

V1

1 癤퓅ilk,bread,butter

2     milk,butter,coke

3    bread,butter,coke

4      milk,coke,ramen

5   bread,butter,ramen

> tr1=read.transactions('trains3.txt',format='basket',sep=',')

> tr1

transactions in sparse format with

6 transactions (rows) and

6 items (columns)

> as(tr1,'data.frame')

items

1 {bread,butter,癤퓅ilk}

2     {butter,coke,milk}

3    {bread,butter,coke}

4      {coke,milk,ramen}

5   {bread,butter,ramen}

6                     {}

as 함수를 통해 tr1이라는 이름으로 저장되어 있는 거래 object를 출력해 볼 수 있다.

 

2) apriori 함수로 연관규칙을 산출.

> rules1=apriori(tr1,parameter=list(supp=0.4,conf=0.4))

Apriori

 

Parameter specification:

confidence minval smax arem  aval originalSupport maxtime support minlen maxlen target   ext

0.4    0.1    1 none FALSE        TRUE      5     0.4     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

 

set item appearances ...[0 item(s)] done [0.00s].

set transactions ...[6 item(s), 6 transaction(s)] done [0.00s].

sorting and recoding items ... [3 item(s)] done [0.00s].

creating transaction tree ... done [0.00s].

checking subsets of size 1 2 done [0.00s].

writing ... [5 rule(s)] done [0.00s].

creating S4 object  ... done [0.00s].

> inspect(rules1)

lhs         rhs      support   confidence lift

[1] {}       => {bread}  0.5000000 0.5000000  1.0

[2] {}       => {coke}   0.5000000 0.5000000  1.0

[3] {}       => {butter} 0.6666667 0.6666667  1.0

[4] {bread}  => {butter} 0.5000000 1.0000000  1.5

[5] {butter} => {bread}  0.5000000 0.7500000  1.5

함수 설명: rules1=apriori(tr1,parameter=list(supp=0.4,conf=0.4)) default값으로는 지지율support 0.1, 신뢰도confidence 0.8. bread

결과 해석: bread -> butter의 지지율은 0.5, 신뢰도는 1.0(100%), 향상율은 1.5(150%). 이는 빵을 구매한 고객은 반드시 버터를 사고 이 사실을 알고 버터에 대한 마케팅을 할 경우 모를 때 보다 그 효과가 25% 증가한다는 것을 의미한다.

 

3) 연관규칙의 시각화

> library(arulesViz)

> plot(rules1)

 

가로축은 지지율, 세로축은 신뢰도, 우측 막대기는 향상도

 


> plot(rules1,'grouped')


 

원의 크기는 지지율, 색상의 진하기는 향상도. LHS는 조건으로 이름 앞의 숫자는 각 규칙의 수를 의미


 

> plot(rules1,'graph')

 

원의 크기는 각 규칙의 지지율을, 색상의 진하기는 향상도를 의미. Butterbread가 상대적으로 중심에 위치하고 있고, 콜라의 경우 떨어져 있다.

 

 

> plot(rules1,'paracoord')

  

품목 간 연간관계를 병렬적으로 확인할 수 있다. 화살표의 두께는 지지율을, 화살표의 색상의 진하기는 향상도를 나타낸다.

 

출처: 데이터마이닝(장영재, 김현중, 조형준 공저)


소감: 데이터 양이 많을 경우 입력이 조금 힘들 것 같지만, A를 사는 고객은 반드시 B를 사니 A를 사지 않은 고객 대상 타켓 마케팅이 가능해보여 적용할 수 있는 분야가 많아 보인다. 그래프도 조금 더 공부는 해야겠지만, 시각화된 내용이 매우 직관적이라 활용도가 많아 보인다.

반응형
Posted by 마르띤
,