연관분석(Association Analysis)

데이터 분석 · 연관분석(Association Analysis)

이 페이지의 목차

핵심 요약

연관규칙의 선행항·후행항과 지지도·신뢰도·향상도를 계산하고, Apriori 반단조성으로 빈발항목집합을 생성·가지치기한 뒤 최소 지지도·신뢰도와 실무 조건으로 규칙을 필터링한다.

본문

연관규칙의 선행항·후행항과 거래·항목집합

연관분석은 한 거래 안에서 항목들이 함께 나타나는 경향을 X → Y 형태로 표현한다. X는 선행항, Y는 후행항이며 서로 겹치지 않는 비어 있지 않은 항목집합이다.

거래는 상품 구매에만 한정되지 않는다. 한 세션의 기능 사용, 한 환자의 동시 코드처럼 한 관측 단위에서 여러 항목의 동시 출현을 정의할 수 있으면 적용할 수 있다.

연관규칙은 동시 출현을 요약하며 인과관계를 자동으로 증명하지 않는다. A → B라는 표기만으로 A가 시간적으로 먼저 발생했다는 뜻도 아니다.

거래 데이터는 거래-항목 이진 행렬로 나타낼 수 있다. 행은 거래, 열은 항목이며 해당 거래에 항목이 있으면 1, 없으면 0으로 둔다. 한 거래 안에 같은 항목이 여러 번 기록되어도 항목집합 관점에서는 ‘포함됨’ 한 번으로 센다. {A,C}의 지지도는 A열과 C열이 모두 1인 행의 수를 전체 거래 행 수로 나눈 값이다.

지지도·신뢰도·향상도 계산과 방향성·기본 출현율 해석

전체 거래 수를 N이라 하자.

  • support(X→Y) = n(X∪Y)/N
  • confidence(X→Y) = support(X∪Y)/support(X) = P(Y|X)
  • lift(X→Y) = confidence(X→Y)/support(Y)

전체 500건 중 A 100건, B 200건, A와 B 동시 거래 50건이면

  • support(A→B) = 50/500 = 0.10
  • confidence(A→B) = 50/100 = 0.50
  • support(B) = 200/500 = 0.40
  • lift(A→B) = 0.50/0.40 = 1.25

해석:

  • lift > 1: Y의 기본 출현율보다 함께 나타나는 비율이 높음
  • lift = 1: 독립 수준
  • lift < 1: 함께 나타나는 비율이 기본 출현율보다 낮음

support와 lift는 방향을 바꿔도 같지만 confidence는 선행항의 지지도가 분모이므로 달라질 수 있다.

빈발항목집합과 Apriori 반단조성·후보 생성·가지치기

최소 지지도 minsup 이상인 항목집합을 빈발항목집합이라 한다.

Apriori 핵심은 지지도의 반단조성이다.

  • 어떤 항목집합이 빈발하면 그 모든 부분집합도 빈발해야 한다.
  • 어떤 항목집합이 빈발하지 않으면 그것을 포함하는 모든 상위집합도 빈발할 수 없다.

따라서 {A,B}가 minsup을 통과하지 못하면 {A,B,C}의 지지도를 계산하기 전에 후보에서 제거할 수 있다.

전형적인 절차는 L1 → C2 → L2 → C3 → ...처럼 이전 단계의 빈발항목집합으로 후보를 만들고, 부분집합 조건과 지지도로 가지치기하는 방식이다.

빈발항목집합에서 규칙 생성과 최소 지지도·신뢰도 필터링

빈발항목집합 I가 정해지면 I를 선행항 X와 후행항 Y = I - X로 나누어 규칙을 만든다.

m개 항목을 가진 하나의 빈발항목집합에서 만들 수 있는 서로 다른 방향 규칙 최대 개수는

2^m - 2

다. 공집합과 전체집합을 선행항에서 제외하기 때문이다.

  • 3개 항목: 2^3-2 = 6
  • 4개 항목: 2^4-2 = 14

같은 빈발항목집합에서 나온 규칙들은 결합 항목집합이 같아 support는 동일하지만 선행항이 달라 confidence는 달라질 수 있다.

최소 신뢰도 minconf를 높이면 통과 규칙 수는 같거나 줄어들지만 이미 계산된 빈발항목집합 자체가 바뀌는 것은 아니다.

규칙 수에 후행항 크기나 필수 항목 조건이 붙으면 부분집합 조합으로 센다. 예를 들어 5-항목집합 {A,B,C,D,E}에서 후행항이 정확히 2개이고 반드시 E를 포함해야 한다면 나머지 후행항 한 개를 A~D 중에서 고르므로 C(4,1)=4개다.

같은 빈발항목집합 I에서 confidence(I-H → H) = support(I)/support(I-H)다. 후행항 H를 더 크게 만들면 선행항 I-H는 더 작아지고 그 지지도는 같거나 커지므로 confidence는 증가할 수 없다. 따라서 어떤 후행항이 minconf를 통과하지 못했다면 그 후행항을 포함해 더 크게 확장한 후보도 가지치기할 수 있다.

희소 규칙·규칙 수 제한·실무 해석과 지표 비교

낮은 minsup은 희귀 조합을 찾을 수 있지만 후보 수와 계산량을 크게 늘릴 수 있다. 항목이 m개이면 가능한 비어 있지 않은 항목집합은 최대 2^m-1개이므로 가지치기가 중요하다.

최종 규칙은 다음을 함께 본다.

  • 충분한 지지도와 실제 거래 건수
  • 신뢰도
  • 향상도와 후행항 기본 출현율
  • 기간·지역을 바꾸어도 재현되는지
  • 중복 규칙이 아닌지
  • 실제 추천·진열·정책으로 실행 가능한지

신뢰도가 높아도 Y가 원래 90% 거래에 등장하고 confidence가 90%라면 lift는 1이므로 특별한 연관이 아니다.

업무 목적이 명확하면 규칙 생성 또는 후처리 단계에서 항목 제약을 사용할 수 있다. 예를 들어 후행항에 쿠폰사용이 반드시 포함된 규칙만 남기거나, 선행항에서 특정 항목을 제외하는 식으로 검토할 규칙 수를 줄일 수 있다. 이 제약은 지지도·신뢰도 자체의 정의를 바꾸는 것이 아니라 후보를 업무 조건에 맞게 필터링하는 것이다.

복습 문제

답을 생각한 뒤 정답과 근거를 펼쳐 보세요.

01

전체 500건, A 100건, B 200건, A와 B 동시 50건일 때 support(A→B), confidence(A→B), lift(A→B)는?

정답과 근거

support=0.10, confidence=0.50, lift=1.25다.

02

{A,B}가 최소 지지도를 통과하지 못했다. {A,B,C}가 최소 지지도를 통과할 수 있는가?

정답과 근거

없다. Apriori 반단조성에 따라 비빈발 부분집합을 포함하는 상위 항목집합도 최소 지지도를 통과할 수 없다.

03

빈발 4-항목집합 하나에서 가능한 방향 규칙 최대 개수는?

정답과 근거

14개다. 2^4-2=16-2.

본문 예제

규칙 수에 후행항 크기나 필수 항목 조건이 붙으면 부분집합 조합으로 센다. 예를 들어 5-항목집합 {A,B,C,D,E}에서 후행항이 정확히 2개이고 반드시 E를 포함해야 한다면 나머지 후행항 한 개를 A~D 중에서 고르므로 C(4,1)=4개다.

04

confidence(X→Y)=0.90, support(Y)=0.90일 때 lift와 의미는?

정답과 근거

lift=1이다. X가 있을 때 Y의 출현률이 전체 Y 출현률과 같아 특별한 양·음의 연관이 없는 독립 수준으로 해석한다.