스타의 도서관/통계학

R을 이용한 통계 분석 - 연관규칙

스타(star) 2012. 11. 24. 21:34

흔히 장바구니 분석이라고 하죠. 마트나 쇼핑몰 판매자들이 궁금해 할 수 있는 정보들입니다.


1. 고객들은 어떤 상품들을 동시에 구매하는가?

2. 라면을 구매한 고객은 주로 다른 어떤 상품을 구매하는가?


위와 같은 질문에 대한 분석을 토대로 고객들에게 SMS를 보낸다든가, 판촉용 전화를 한다든가 묶음 판매를 기획 하고 그러겠죠. 


이와 같은 질문에 대한 답은 연관규칙을 이용하여 구할 수 있습니다. 연관규칙은 상업 데이터베이스에서 가장 흔히 쓰이는 도구로, 어떤 사건이 얼마나 자주 동시에 발생하는가를 표현하는 규칙 또는 조건을 의미합니다.


연관규칙의 평가 측도는 다음과 같은 것들이 있습니다.

1. 지지율

지지율을 A를 사고 나서 B가 얼마나 발새하는지 나타낸다. 자주 발생하지 않는 규칙을 제거하는데 주로 이용한다.

A->B의 지지율 = A와 B를 포함한 거래수 / 전체 거래수


2. 신뢰도

A가 포함된 거래 중에서 B를 포함한 거래의 비율.

A->B의 신뢰도 = A와 B를 포함한 거래수 / A를 포함한 거래수


3. 향상도

규칙을 알고 있을 때 판매가 얼마나 향상되는지 나타낸다. 

A->B의 향상도 = A->B의 신뢰도 / B를 포한한 거래비율



R에서는 arules 라는 패키지를 이용하여 연관규칙을 구할 수 있습니다.

다음과 같이 입력하여 패키지를 설치 합니다.


이제 아래와 같은 데이터들을 분석해 보기로 하겠습니다.

다음과 같은 자료를 불어 들이기 위해 다음과 같이 입력합니다. 



#자료를 읽어 transactions object형태로 저장합니다.

> tr=read.transactions("~/Documents/trans.txt", format="basket", sep=",")

> as(tr, "data.frame")

이제 연관규칙을 발견하기 위해 다음과 같이 입력합니다.

#apriori 함수를 rules라는 변수에 담는다. apriori(data, parameter, appearance, control)의 형태입니다. tr데이터의 지지율과 신뢰도의 최소를 각각 0.1로 설정하였습니다. 향상도는 기본이 1이므로 지정할 수 없습니다.

rules=apriori(tr, parameter=list(supp=0.1, conf=0.1))


#위에서 구한 연관규칙을 츌력해 줍니다.

inspect(rules)

이제 위의 결과를 분석해 봅시다.

와인->오렌지주스에 대한 지지율은 0.166, 신뢰도는 0.25, 향상도는 0.75 입니다. 이 결과를 보면 전체 거래 중에서 와인, 오렌지주스를 순서 상관없이 구매한 사람이 16%입니다. 또한, 와인을 산 25%의 고객들이 오렌지주스를 구매하였습니다. 


와인과 오렌지주스의 조합은 다른 거래에 비해서도 별로 많이 일어나는 거래가 아닌 것 같습니다. 소주, 콜라가 0.5의 지지율이고, 0.33의 지지율을 가지는 것에 비해서 훨씬 약한 조합입니다. 향상도가 0.75라는 것은 와인과 오렌지주스가 서로 음의 상관관계라고 할 수 있습니다.


이를 통해, 와인을 산 사람들은 오히려 오렌지주스를 사지 않는 다는 사실을 알게 되었습니다. 이를 알고 마케팅을 하면 몰랐을 때보다 25%의 매출 하락을 막을 수 있을 것입니다.