ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Algorithms] 연관 규칙(Association Rule) 분석
    Data Analysis/Algorithms 2020. 7. 4. 18:06

    Table of Contents

    • Introduction

    • 연관 규칙(Association Rule)이란?

    • 연관 규칙의 이해

    • 연관성 분석 in R
    • Reference

     

    Introduction

     데이터 마이닝에 관심이 있는 사람들이라면 기저귀를 사는 사람이 맥주도 산다는 사례를 들어본 적이 있을 것이다. 남편에게 기저귀 심부름을 하면 맥주를 사오는 현상에 따라 진열장을 재 배치했다는 이 사례는 Rakesh Agrawal이 Marks & Spencer 라는 영국의 할인점 체인에서 시도한 분석 기법이다. 다만, 이게 실제 성공한 사례인지에 대해서는 알려진 바 없다.

     

      바코드 시스템 도입으로 리테일 산업에서 대용량 데이터가 발생하기 시작했으며 이를 장바구니 데이터라고 부른다. 이런 대용량 데이터를 수집하기 전부터 도대체 고객들을 어떤 제품을 구매하고 어떤 행동 패턴을 보일까 하는 연구는 계속해서 지속하고 있다.

     

    연관 규칙(Association Rule)이란?

     연관규칙분석(장바구니분석) 데이터 분석 단위는 '구매 아이템'으로 보고 있다. 수 많은 구매 트랜잭션(구매 이력 데이터) 속에서 일정한 규칙을 도출하는 분석 방법이다.

    ID Items
    1 커피, 라면
    2 맥주, 라면
    3 달걀, 라면
    4 달걀, 라면, 맥주
    5 달걀, 라면, 맥주, 커피
    6 달걀
    7 커피

    [표 - 1] 장바구니 분석을 하기 위한 구매 이력 데이터

     

     예를 들어, '맥주', '기저귀', '커피' 라는 제품을 구매한 트랜잭션 속에서 '기저귀'를 구매할 때, '맥주'를 구매할 가능성이 높은 규칙이 연관 규칙(Association Rule)이라고 한다.

    ID 달걀 라면 맥주 커피
    1 0 1 0 1
    2 0 1 0 0
    3 0 1 0 0
    4 0 1 0 0
    5 0 1 0 0
    6 1 0 0 0
    7 0 0 0 1

    [표 - 2] 연관 규칙을 도출하기 위한 희소행렬(Sparse Matrix)

     

     고객의 구매 데이터를 이용한 연관 규칙을 도출하여 제품 카테고리를 만들거나, 업셀링(Add-on sales), 상품 진열, 고객 세그먼트 등에 활용할 수 있다.

     

    연관 규칙의 이해

     연관 규칙을 이해하기 위해 조건(X)와 결과(Y)를 이해할 필요가 있다. '맥주를 사면, 라면을 산다.'라는 말에서 '~를 사면'이라는 말은 조건(X)에 해당하는 것이고 '라면을 산다'라는 말이 결과(Y)에 해당한다. 구매 이력 데이터는 이러한 내용들이 담겨져 있으며, 구매 내역 ID이 1인 거래는 '커피를 사면, 라면을 산다'는 의미를 내포하고 있다.

     

     연관 규칙에서 가장 좋은 규칙은 어떤 규칙일까? 규칙의 가치를 나타낼 수 있는 지표로는 지지도(Support), 신뢰도(Confidence), 향상도(Lift)가 있다. 특정 아이템을 판별할 때, 지지도를 활용하며, 지지도는 (가)와 같이 정의한다.

     

    support( X -> Y ) = P(X∩Y)/P( X ∪ Y ) ················ (가)

     

     규칙에 대한 연관 정도를 측정하는 지표로 신뢰도를 사용하는데 아래의 (나)와 같이 조건(X)가 발생하고 결과(Y)가 일어날 조건부확률로 정의한다.

     

    confidence( X -> Y ) = P( Y | X ) ················(나)

     

     궁극적으로 연관성을 의미하는 지표는 향상도로, 전체 거래 대비 해당 거래의 비율로 아래의 (다)와 같이 정의한다.

     

    lift(X -> Y) = P( Y | X )/P( X )·P( Y ) ················(다)

     

     맥주를 구매한 사람이 4000명이고, 라면을 산 사람이 2000명일때, 맥주와 라면을 동시에 구매한 사람은 1000명이라고 하자. 이때, 지지도는 전체 구매를 한 총 트랜잭션인 10000중에 맥주와 라면을 동시에 구매한 1000. 즉, 10%라고 할 수 있다. 신뢰도는 맥주를 구매한 사람들 중에서 맥주와 라면을 동시에 구매한 사람으로 25%이다. 마지막으로, 향상도는 1.25로 1보다 크면 예측력이 있다고 한다.

     

    연관성 분석 in R

     연관성 분석을 위한 2가지 패키지가 있으며, 먼저 분석을 위한 arules 패키지와 시각화를 위한 arulesViz이 있다. arules에 담긴 샘플 데이터 Groceries를 활용해서 간단하게 연관성 분석을 확인 할 수 있다.

    library(arules)
    data("Groceries")
    
    inspect(head(Groceries))
    
    rules = apriori(Groceries, parameter = list(supp = 0.01, conf = 0.5))
    
    inspect(rules)
    
         lhs                     rhs                   support confidence     lift count
    [1]  {curd,                                                                         
          yogurt}             => {whole milk}       0.01006609  0.5823529 2.279125    99
    [2]  {other vegetables,                                                             
          butter}             => {whole milk}       0.01148958  0.5736041 2.244885   113
    [3]  {other vegetables,                                                             
          domestic eggs}      => {whole milk}       0.01230300  0.5525114 2.162336   121
    [4]  {yogurt,                                                                       
          whipped/sour cream} => {whole milk}       0.01087951  0.5245098 2.052747   107
    [5]  {other vegetables,                                                             
          whipped/sour cream} => {whole milk}       0.01464159  0.5070423 1.984385   144
    [6]  {pip fruit,                                                                    
          other vegetables}   => {whole milk}       0.01352313  0.5175097 2.025351   133
    

    Reference

    1. Andrew Seth et al., "Supermarket Wars: Global Strategies for Food Retailers", 2005

    2. Rakesh Agrawal, "Fast Algorithms for Mining Association Rules in Large Databases", https://dl.acm.org/doi/10.5555/645920.672836, 1994-09

    3. Michael Hahsler et al. "Mining Association Rules and Frequent Itemsets", https://cran.r-project.org/web/packages/arules/arules.pdf, 2020-05

    4. Michael Hahsler et al. "Visualizing Association Rules and Frequent Itemsets", https://cran.r-project.org/web/packages/arulesViz/arulesViz.pdf, 2019-05

    댓글

Designed by Tistory.