'association rule interestingness measures'에 해당되는 글 1건

  1. 2016.05.19 [R 연관규칙(Association Rule)] 지지도(support), 신뢰도(confidence), 향상도(lift), IS측도, 교차지지도 (23)

지난번 포스팅에서는 연관규칙분석, 장바구니분석, 순차분석의 개략적인 정의와 활용에 대해서 알아보았습니다.

 

이번 포스팅에서는 연관규칙(association rule)의 흥미를 평가할 수 있는 척도(interestingness measure) 들로서 지지도, 신뢰도, 향상도, IS측도, 교차지지도에 대해서 알아보겠습니다.

 

(참고. 연관규칙은 비지도학습으로서, Y값에 대한 label이 없는 상태에서 데이터에 숨겨진 패턴을 찾는 분석기법임.  Y값에 대한 label을 가지고 하는 지도학습인 예측이나 분류에서 하는 모델 성과평가와 Y값 label 없이 숨겨진 패턴을 찾는 연관규칙의 흥미척도는 성격이 다름)

 

이들 연관규칙 평가 척도가 중요한 이유는 연관규칙 분석을 하게 되면 수십, 수백, 수천개의 association rule 들이 쏟아지기 때문에 육안으로 일일이 보고 평가하기가 너무 힘들기 때문입니다.  (1) 모래사장에서 보석반지를 눈으로 찾는 방법과, (2) 모래를 거를 수 있는 체(screening filter)에 다가 삽으로 모래를 퍼다가 부어서 체에 걸러진 물건들 속에서 보석반지가 있나 확인하는 방법 중에서 어떤 것이 더 효율적이고 효과적일지 생각해보시면 됩니다.  (2)번  체를 사용하는 후자 방법에서 사용하는 체가 오늘 포스팅의 주제가 되겠습니다.

 

 

X와 Y를 서로 공통원소가 없는 항목들의 집합이라고 하고, X->Y 를 if X then B라는 연관규칙이라고 하며, N은 전체 거래 건수, n(X), n(Y)는 항목집합 X와 Y의 거래 건수(즉, row 개수)라고 했을 때, 지지도(Support), 신뢰도(Confidence), 향상도(Lift)의 정의는 아래와 같습니다.

 

  • 지지도 (Support)

    :
    두 항목 XY의 지지도는 전체 거래 건수 중에서 항목집합 XY를 모두 포함하는 거래 건수의 비율을 말합니다.   지지도는 좋은 규칙(빈도가 많은, 구성비가 높은)을 찾거나, 불필요한 연산을 줄일 때(prunning, 가지치기)의 기준으로 사용합니다.

지지도(support) s(X→Y) 

= X와 Y를 모두 포함하는 거래 수 / 전체 거래 수 = n(X∪Y) / N 


 

  • 신뢰도 (Confidence)

    : 항목집합 X를 포함하는 거래 중에서 항목집합 Y포함하는 거래 비율 (조건부 확률) 을 말합니다.  신뢰도가 높을 수록 유용한 규칙일 가능성 높다고 할 수 있습니다.

신뢰도(Confidence) c(X→Y) 

= X와 Y를 모두 포함하는 거래 수 / X가 포함된 거래 수 = n(X∪Y) / n(X) 

 

 

  • 향상도 (Lift)

    항목집합 X가 주어지지 않았을 때의 항목집합 Y의 확률 대비 항목집합 X가 주어졌을 대 항목집합 Y의 확률 증가 비율을 말합니다. 다른말로 표현하자면, 향상도가 1보다 크거나(+관계) 작다면(-관계) 우연적 기회(random chance)보다 우수함을 의미합니다. (X와 Y가 서로 독립이면 Lift = 1)

향상도(Lift)

= 연관규칙의 신뢰도/지지도 = c(X→Y) / s(Y)

 

 

 

연관규칙 평가 척도 : 지지도(Support), 신뢰도(Confidence), 향상도(Lift)

 

 

아래에 어떤 슈퍼마켓에서 5명의 고객에 의해서 발생한 5건의 거래(transaction N=5)을 가지고 예를 들어보았습니다.

 

 

참고로, 신뢰도(confidence)는 rule의 순서에 따라서 값이 달라집니다. 즉 신뢰도 c(X→Y)와 c(Y→X)의 값이 다르며, 이를 비대칭적 척도(asymmetric measure)라고 합니다.

 

반면에, 향상도(lift)는 Lift(X→Y) 값과 Lift(Y→X)의 값이 서로 같으며, 이런 특성을 가지는 척도를 대칭적 척도(symmetric measure)라고 합니다.  위의 예제를 가지고 한번 직접 계산해서 확인해보시기 바랍니다.

 

 

위의 3개의 rule 평가 척도를 소개하였는데요, 각각의 평가 관점이 다르기 때문에 어느 하나만을 가지고 rule을 평가하는 것이 아니라 보통은 3개의 척도를 모두 사용합니다.

 

보통 (1) 특정 지지도(Support) 와 신뢰도(Confidence) 이하의 rule 은 screening out 시키게끔 해놓고,

(minimun support, minimum confidence)

 

(2) 향상도(Lift) 내림차순(양의 관계를 찾을 때)으로 sorting을 해서 rule을 평가하는 식으로 이용하곤 합니다. 

 

그리고 관심이 있는 상품이나 item이 있으면 목적에 맞게 해당 item이 left-hand side 나 right-hand side 에 있는 rule만을 subset으로 선별해서 보기도 하구요.

 

 

분석에 oriented 된 통계전문가, 기계학습 전문가의 경우 신뢰도(confidence)와 향상도(lift)가 높은 rule을 눈에 불을 켜고 찾고, 선호하는 경향이 있습니다.  그런데 매출과 이익을 책임져야 하는 사업부 현업의 경우는 연관규칙을 보는 view가 조금 다를 수 있습니다.  "그 rule을 적용하면 기대할 수 있는 매출 증가분이 얼마나 되는데요?"라는 질문이 사업부 현업이 던지는 질문인데요, 이 질문에 만족할 만한 답을 주려면 '지지도(Support)'가 높아서 전체 거래 건수 중에서 해당 rule이 포함된 거래건수가 많아야지만이 해당 rule을 가지고 마케팅전략을 수립해서 실전에 적용했을 때 높은 매출 증가를 기대할 수 있게 됩니다.  즉, 아무리 신뢰도(confidence)와 향상도(lift)가 높아도 지지도(support)가 빈약해서 전체 거래 중에 가뭄에 콩나듯이 나오는 거래유형의 rule이라면 사업부 현업은 아마 무시할 겁니다.  현업을 빼고 분석가만 참여한 연관규칙 분석이 위험하거나 아니면 실효성이 떨어질 수 있는 이유입니다.  그리고 지지도(support)가 매우 낮으면 몇 개 소수이 관측치의 치우침만으로도 신뢰도나 향상도가 크게 영향을 받게 되어 '우연'에 의한 규칙이 잘못 선별될 위험도 있습니다.

 

 

위와 같이 지지도(support), 신뢰도(confidence), 향상도(lift)의 한계를 보완하기 위한 다양한 평가척도가 더 있는데요, 그 중에서도 IS(Interest-Support) 측도, 교차지지도(cross support) 에 대해서 간략하게 소개하겠습니다. 

 

연관규칙 A → B 에 대하여

  •  IS(Interest-Support) 측도 : 향상도(lift)와 지지도(support)의 곱에 제곱근을 취한 값

    ☞ 향상도(lift)와 지지도(support)가 모두 높을 수록 IS 측도값도 커짐. 둘 중에 하나라도 작으면 IS측도는 작아지며, 지지도는 낮고 향상도만 높은 rule이나 향상도는 낮고 지지도만 높은 rule을 screening out 시키고 둘다 높은 rule만 선별할 수 있음.

  • 교차지지도(cross support) : 최대지지도에 대한 최소지지도의 비율


    ☞ 항목집합 에 대하여 의미 없는 연관규칙의 생성을 방지하기 위하여 교차지지도 r(X)를 이용함.  분자에 지지도 중에서 최소값을, 분모에는 지지도 중에서 최대값을 가져다가 계산을 하므로 지지도의 최소값과 최대값의 차이가 클 수록 교차지지도는 낮아지게 되며, 이 비율이 매우 작으면 항목집합 X에서 생성되는 연관규칙이 의미가 없을 가능성이 높음.

 

지지도(support), 신뢰도(confidence), 향상도(lift), 이에 더해 IS측도나 교차지지도 등의 척도만을 가지고 기계적으로 연관규칙을 찾았다고 해서 끝나는 것은 아닙니다.  반드시 업 전문가(business domain expert)의 해석, 평가, 판단, 개입이 있어야지 연관규칙분석이 끝이 납니다.

 

 

연관규칙을 (1) 설명이 가능한가? (Explainable), (2) 활용이 가능한가? (Actionable) 라는 두 개의 기준을 가지고 평가를 해봐서 '설명이 가능하고 & 활용이 가능한 연관규칙 (Explainable & Actionable association rule)' 만이 최종적으로 살아남아 현장에 적용이 되고 그 효과를 검증받게 됩니다.

 

아래에 Useful rule, Trivial rule, Inexplicable rule의 예를 보면 금방 이해하실 수 있을 것입니다.  실제 연관규칙 분석을 해보면 rule이 엄청 많이 쏟아지는데 반해, 똘똘한 rule의 최종 판단/선별에 업 전문가의 개입이 필요하다는 점이 현장에서 많이 쓰이지 못하고 있는 장애 요인이 되고 있는게 아닌가 싶습니다.

 

 

 

다음번 포스팅에서는 Apriori algorithm 에 대해서 알아보도록 하겠습니다.

 

이번 포스팅이 도움이 되었다면 아래의 '공감 ♡'를 꾸욱~ 눌러주세요.

 

Posted by R Friend R_Friend

댓글을 달아 주세요

  1. 항상 고맙습니다 2016.06.05 15:53  댓글주소  수정/삭제  댓글쓰기

    정말 짱 좋은 사이트인 것 같네요. 매번 공부할 때마다 참고하고 갑니다.

  2. 졍이 2016.07.15 16:31  댓글주소  수정/삭제  댓글쓰기

    r을 독학하는데 늘 너무너무너무 도움이되는 글들이 많습니다 ㅠㅠㅠ 정말 감사합니다!!

  3. kjh 2016.08.24 22:39  댓글주소  수정/삭제  댓글쓰기

    아직 다 꼼꼼히 읽어보지는 못했는데
    지지도랑 신뢰도 공식이 좀 잘못된듯해요
    분자가 A합B가 아니라 A교B 아닌가요?

    글 계속 열심히 읽고 공부하겠습니다~

    • R Friend R_Friend 2016.08.24 22:57 신고  댓글주소  수정/삭제

      kjh님, 반갑습니다.

      Support = n(X U Y)/N 으로 표기하는 것이 맞습니다.

      X, Y는 항목집합(item set)을 나타내며,
      n(X U Y) 는 X 항목집합과 Y 항목집합을 모두 포함하는 거래(transaction)의 개수를 나타냅니다.

      포스팅의 본문에 예제를 가지고 설명을 해보자면요, 연관규칙 X -> Y 에서 X = {계란, 맥주}, Y = {기저귀} 인 규칙이 있다고 했을 때, X U Y = {계란, 맥주, 기저귀}가 되며, 총 5개의 거래 (즉, N = 5) 중에서 X U Y = {계란, 맥주, 기저귀} 를 포함하는 거래는 2번과 4번 거래의 총 2개가 됩니다. 따라서 support(X -> Y) = n(X U Y)/N = 2/5=0.4 가 됩니다.

      제가 본문에 'X와 Y를 동시에 포함하는'이라고도 표기했다가 'X와 Y를 모두 포함하는'이라고도 했는데요, '동시에 포함하는'이 '교집합'으로 오해하기 쉬울거 같습니다. '모두 포함하는'으로 일괄되고 혼돈이 없도록 포스팅 본문 수정하였습니다.

    • arules 2019.05.06 16:29  댓글주소  수정/삭제

      R Friend R_Friends 님,

      지지도에 대하여 잘못 알고계시고, 포스팅 내용도 다시 검토해보셔야 겠네요.

      A->B일때, 지지도는 전체 거래 중에서 A와 B를 모두 포함하는 거래 수로 계산하며, 분자는 A와 B의 교집합이 맞습니다.

      또한, 본인 포스팅의 지지도, 신뢰도, 향상도 예시를 보면,
      (계란, 맥주) -> (기저귀) 일때,
      n(X U Y)이 2번, 4번이 맞나요? 합집합이라면 3번 거래도 포함이 되어야 할텐데요?

      표기는 합집합을 하시고, 계산은 교집합을 하신 이유가 있을까요?

      집합 연산이 어려우신 건지, 다른 사람의 글을 그대로 옮기신 건지 의문이 듭니다.

      추가로, 경우에 따라서 합집합으로 표시한 공식들은 잘 보시면, (X U Y)의 앞에 갯수를 의미하는 n이 아니라 support(X U Y)로 X, Y 각각의 확률 곱을 의미합니다.

      잘못된 정보는 바로 잡아야 할 것 같아 글을 남깁니다.

      댓글들에 대하여 답변해 주신 내용들을 보니 제가 말씀드린 오류를 인정하지 못하실 수도 있을 것 같아,

      불필요한 논란을 없애고자 참고하실 링크를 아래 남겨드립니다.

      https://en.wikipedia.org/wiki/Association_rule_learning#Support

      https://towardsdatascience.com/association-rules-2-aa9a77241654

    • R Friend R_Friend 2019.05.06 19:53 신고  댓글주소  수정/삭제

      arules님, 남겨주신 댓글과 링크 잘 보았습니다.

      댓글에서 "합집합일 때 3번 거래도 포함되어야 한다"고 말씀해주셨는데요, 예로 들었던 X={계란, 맥주} -> Y={기저귀} 의 합집합(XUY)는 {계란, 맥주, 기저귀} 이고, 교집합은 공집합입니다. 3번 거래에는 "계란"이 안들어있습니다.

      그리고 "표기는 합집합을 하고, 계산은 교집합을 했다"고 말씀하셨는데요, 제 생각에는 표기법에 대한 서로 간의 혼선, 오해, 이런것 때문인거 같습니다.

  4. kjh 2016.08.24 23:23  댓글주소  수정/삭제  댓글쓰기

    아.. 생각한 개념은 제대로 이해한게 맞는데, 표기법에 혼동이 있었네요.
    제가 가진 책에서는 교집합으로 나온 것도 있고, 구글에서 검색해보면 또 합집합으로 된 것도 있어서 안그래도 헷갈리고 있었거든요..

    제가 생각한 X와 Y의 개념은 event?이고 글에서의 X,Y는 item set이라서
    표기법에 대한 혼동이 있었던 것 같습니다.
    빠른 답변 감사합니다~

  5. rura6502 2016.09.01 20:43  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 포스팅한 글 잘 봤습니다.
    다름이 아니라 support와 confidence에 대해서 혼란이 와서요
    기저귀=>맥주 의 관계를 보면
    support는 전체 거래 건수 중 맥주와 기저귀가 포함되어 있는 비율
    confidence는 기저귀를 산 사람이 맥주를 살 확률
    이라고 이해를 했는데 맞나요?

    • rura6502 2016.09.01 20:48  댓글주소  수정/삭제

      아 다른데 둘러보다가 알게되었는데
      기저귀=>맥주 의 관계가
      support가 낮을 경우 "전체 거래중에 기저귀와 맥주를 산 사람의 거래가 낮으니 이 조건을 분석하는건 의미가 없다" 라는 뜻으로 해석될 수 있고
      confidence가 낮을 경우 말그대로 "기저귀를 산 사람의 거래 내역 중에 맥주를 같이 산 사람이 별로 없으니 기저귀와 맥주는 연관관계? 가 낮다" 라고 해석될수 있는거군요
      제가 이해한 것이 맞나요?

    • R Friend R_Friend 2016.09.01 20:48 신고  댓글주소  수정/삭제

      rura님, 맞게 이해하셨습니다. ^^

    • rura6502 2016.09.01 21:03  댓글주소  수정/삭제

      헉, 실시간 댓글 감사합니다.
      lift에 대해서 조금 쉽게 설명해주실수있을까요? 제가 무지해서 위의 내용으로는 난해해서요 ㅠㅠ

    • R Friend R_Friend 2016.09.01 21:08 신고  댓글주소  수정/삭제

      lift는 눈감고 무작위로 찍었을 때 대비 몇 배나 예측력(설명력)이 향상되었냐 하는 뜻으로 이해하시면 됩니다. 1 은 눈감고 찍은 것과 도찐개찐 별 차이 없다고 해석합니다.

      분모의 support(Y)는 전체 거래 중에서 Y항목을 포함한 비율이므로, 눈감고 뽑았을때 Y가 나올 확률입니다.

      분자는 X가 거래에 포함된걸 알았을때 Y도 함께 포함되어 있을 조건부확률이구요

    • rura6502 2016.09.01 21:18  댓글주소  수정/삭제

      lift는 위와 같이 예를 들면 거래 건수 중 기저귀를 샀을 때 맥주를 산 건이 100건이고 맥주를 산 건이 100건이면 보았을 때 기저귀와 맥주를 동시에 산 사람이나 맥주만 산 사람이나 100건 100건 똑같으니 구매자는 그냥 찍어서 샀구나 라고 해석될수있고 lift가 1보다 크면 위에 예시에 건수가 기저귀, 맥주가 같이 산 건이 더 많으니 두 품목은 끈끈한 관계의 정도, 1보다 작으면 관계가 없는 정도, 1이면 위에 예를 든대로 반반이므로 그냥 적당한? 관계가 있다고 해석될수 있다. 이렇게 이해했는데 맞나요?? 포스팅은 수준이 높은데 제가 너무 수준낮게 예시를 들어 설명하는거 같네요 ㅠㅠ

    • R Friend R_Friend 2016.09.01 21:24 신고  댓글주소  수정/삭제

      lift '1' 이 연관성 없음이구요, 만약 +2라면 무작위 찌끼 대비 '+(양)'의 '방향'으로 연관성이 있다는 뜻이고, 만약 '0.5'라면 if X then Y 동시구매가 잘 안일어난다고, 즉 '-'(음) 관계라고 해석할 수 있읍니다.

      '1'이 기준선입니다

    • rura6502 2016.09.01 21:27  댓글주소  수정/삭제

      답변감사합니다! 정말많은 도움이 됬습니다!

  6. Ashtray Kim 2016.10.02 12:48  댓글주소  수정/삭제  댓글쓰기

    support, confidence, lift 등을 구할 때 궁금한 점이 있는데요.
    위의 각 지표들을 구할 때, 거래 건수(X와 Y를 포함하는 거래 건수 등)를 가지고 계산을 하는 것 같은데요.
    그러면, 한 거래 내에서 동일한 item을 여러 개 구입한 경우에 대해서 차이가 없는 건가요?
    이부분을 고려한 알고리즘의 변형된 형태가 혹시 있는지 궁금합니다.

  7. Stonehead Park 2017.09.24 15:32  댓글주소  수정/삭제  댓글쓰기

    정말 좋은 포스트 잘 읽었습니다. 저절로 엄지손가락이 올라가는 글이에요!
    감사합니다. 그리고 경영을 전공하는 학생으로서 분석이 반드시 업 전문가와의
    협의가 마무리되어야 끝난다고 말씀하신 점이 와닿았습니다.

    간간히 찾아오겠습니다. 다시 한 번 감사합니다 :)