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')
원의 크기는 각 규칙의 지지율을, 색상의 진하기는 향상도를 의미. Butter와 bread가 상대적으로 중심에 위치하고 있고, 콜라의 경우 떨어져 있다.
> plot(rules1,'paracoord')
품목 간 연간관계를 병렬적으로 확인할 수 있다. 화살표의 두께는 지지율을, 화살표의 색상의 진하기는 향상도를 나타낸다.
출처: 데이터마이닝(장영재, 김현중, 조형준 공저)
소감: 데이터 양이 많을 경우 입력이 조금 힘들 것 같지만, A를 사는 고객은 반드시 B를 사니 A를 사지 않은 고객 대상 타켓 마케팅이 가능해보여 적용할 수 있는 분야가 많아 보인다. 그래프도 조금 더 공부는 해야겠지만, 시각화된 내용이 매우 직관적이라 활용도가 많아 보인다.
'KNOU > 2 데이터마이닝' 카테고리의 다른 글
제6장 모형비교평가 - 연속형 목표변수 (0) | 2017.02.24 |
---|---|
제5장 신경망모형 - 분류 (5) | 2016.12.20 |
제5장 신경망모형 - 회귀 (0) | 2016.11.14 |
제4장 앙상블 모형 - 분류앙상블모형 - 랜덤 포레스트 (0) | 2016.11.09 |
제4장 앙상블 모형 - 분류앙상블모형 - 부스팅 (0) | 2016.11.07 |