ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [데이터분석개론] Association Rules & Collaborative Filtering
    IT&컴퓨터공학/데이터분석개론 2021. 2. 14. 23:07

    Association Rules

    많은 추천시스템에서 사용하는 Rule이다.

     

    만약 어떤 이가 A라는 상품을 구매하면 후에 B 도 구매한다고 가정하자.

    이때 어떤 이가 A라는 상품을 구매하면 을 "선행사건" , B도 구매한다를 "후행결과" 라고 부른다.

     

    예제를 살펴보자 !

     

    해당 예제는 사람들이 어떤 색의 핸드폰 케이스를 샀는지 나타낸다.

     

    우리는 여기서 다양한 Rules 를 발견할 수 있다.

    1. 1,4,8,9 번 사람을 보니 red 를 사면 white 도 사는거 같네

    2. 혹은 white 를 사면 red 를 사는거 같네

    3. white 를 사면 blue 도 사는거 같네

     

    처럼 언뜻보기에 수 많은 rules 를 찾을 수 있다.

     

    사실 모든 아이템의 조합을 찾아내는게 가장 이상적이지만, 현실적으로 핸드폰 케이스가 다양하면 다양해질수록 모든 조합을 찾아내는건 거의 불가능에 가깝다.

     

    따라서 현실적으로는 보통 " 자주 나오는 아이템 집합 " 을 고려한다.

    위의 예제를 살펴보자.

     

    자주나오지않는 green , yellow 를 아무리 정확히 예측해봤자 핸드폰 케이스를 많이 파는데는 도움이 되지 못한다.

    자주나오는 white, red 같은 아이템과 관련있는 rule 을 찾아야 판매율을 눈에띄게 높일 수 있다.

     

    그리고 어떤색의 케이스가 얼마나 나오는지는 support 를 기준으로 알 수 있다.

     

    support

     

    쉽게 말하면 데이터 셋에서 몇번이나 등장했냐 ? 를 의미한다.

    예를들어 { red, white } 집합의 경우 10개의 데이터 중 총 4번 등장했다. 따라서 40%의 support 를 가지고있다.

     

     

    이제 이 rules 를 찾는 방법 중 대표적인 알고리즘 Apriori Algorithm 에 대해 소개하겠다.

    Apriori Algorithm

    먼저 탐색을 위한 Transaction 데이터가 필요하다.

     

    Minimum Support 를 설정해줘야하는데, 임의로 4로 설정하겠다.

    이제 위처럼 아이템별로 support 를 계산한다.

    우리는 minimum support 기준을 5로 잡았기 때문에 4보다 낮은 1번 아이템은 제외된다.

     

    이제 이를 바탕으로 Self-Join 과 Prune 과정을 거친다.

     

    Self-Join 은 남은 아이템 {2},{3},{4} 를 가지고 만들 수 있는 길이가 2인 모든 후보를 만드는 과정이다.

    따라서 {2,3},{3,4},{2,4} 가 생성될 것이다.

     

    이렇게 만들어진 후보로 이제 Prune 과정을 진행한다.

    {2,3} 의 subset {2} 와 {3} 의 경우엔 위 표에서 제외되지않았으므로 프루닝대상이 아니다.

    {3,4},{2,4} 역시 마찬가지다.

     

    이제 다시 Self-Join 을 통해 {2,3},{3,4},{2,4} 를 가지고 길이가 3인 후보를 만들자.

    {2,3,4} 가 나온다.

     

    이제 Prune 과정을 진행한다.

    {2,3,4} 의 subset {2,3},{3,4},{2,4} 의 경우 위 표에서 제외되지않았으므로 프루닝 대상이 아니다.

    minimum support 4보다 더 큰 아이템 셋이 없으므로 이제 종료한다.

     

    위의 과정을 통해 우리는 어떤 아이템들이 빈번하게 묶이는지 알 수 있다.

     

    그렇다면 우리가 묶은 이 아이템들이 실제로 얼마나 연관이 있는지 측정해보자 !

     

    Confidence

     

    confidence 는 support 와 주는의미가 조금다른데,

    confidence 는 선행사건 + 후행결과 / 선행사건 을 의미한다.

     

    예를들어 100,000 개의 거래 데이터가 있다고 가정하자.

    이 데이터 중 오렌지 주스와 감기약을 같이 산 경우가 2000, 그 2000 중 800 건은 수프를 같이샀다.

     

    support 의 경우 해당 rule 이 몇번이나 나왔냐 ? 를 뜻하므로,

    이 경우 오렌지 주스와 감기약을 산 경우, 수프도 같이 산 association rule 은 800/100,000 = 0.08% 이라는 support 값을 가진다.

     

    confidence 의 경우, 800/2000 = 40 % 라는 값을 가진다.

     

     

    Lift Ratio

     

    내가 이 rule 을 가지고 아이템 A를 사라고 조언을 해줬을 때 , 이사람이 진짜로 사게되면 나한테 얼마나 이득이 되냐 ? 를 나타내는 값이다.

     

    만약 이 값이 1이라면 이 사람은 내가 조언을 해주지않았더라도 원래 이 물건을 같이 살 생각이였으므로 매출이 더 올라갔다고 볼 순 없다. 

    이 값이 1 이상으로 올라가야 내가 권유해서 샀으므로 실제로 매출에 기여했다고 말할 수 있다.

    Rule Selection

    • 충분한 support 를 가지는 item sets 를 선택하자
    • 이 item sets 중에서 충분한 confidence 를 가지는 세트를 선택하자. ( 보통 0.5 이상 )
    • 이렇게 고른 세트 중에서 lift 가 큰 세트가 가장 좋다. ( 1 이상 )

    Apriori Algorithm 의 단점

    •  주관성이 들어간다.
      • 얼마나 support 가 높으면 남길지 , 
      • 얼마나 Lift 가 높으면 남길지 등등 우리가 결정하기 때문에 주관성이 들어간다.

    댓글

Designed by Tistory.