연관성 분석
지지도·신뢰도·향상도의 정의와 계산, 향상도 해석 방향, Apriori 알고리즘과 FP-Growth, 연관분석의 장단점을 다룹니다.
연관성 분석이란
거래(장바구니) 데이터에서 "A를 사면 B도 산다" 는 형태의 동시 발생 규칙을 찾는 비지도학습입니다. 장바구니 분석(Market Basket Analysis), 서열 분석이라고도 합니다.
- 규칙의 형태: A → B (A는 조건절/선행, B는 결과절/후항)
- 종속변수가 없고, 목적 없는(비지도) 탐색에 해당
- 인과관계가 아니라 동시 발생 관계입니다
"연관분석은 A가 B의 원인임을 보여준다"는 오답입니다. 연관규칙은 함께 일어나는 빈도만 말해 줍니다.
세 가지 측도
전체 거래 수를 N이라 할 때,
| 측도 | 식 | 의미 |
|---|---|---|
| 지지도(Support) | P(A ∩ B) = A와 B를 모두 포함한 거래 수 / 전체 거래 수 | 규칙이 얼마나 자주 나타나는가 (규칙의 유용성) |
| 신뢰도(Confidence) | P(B | A) = P(A ∩ B) / P(A) = A와 B 동시 거래 수 / A 포함 거래 수 | A를 살 때 B도 살 조건부 확률 (규칙의 정확도) |
| 향상도(Lift) | P(B | A) / P(B) = 신뢰도 / B의 지지도 | 규칙이 우연보다 얼마나 나은가 (규칙의 개선도) |
지지도는 방향이 없어 대칭(A→B와 B→A가 같음)이고, 신뢰도는 방향이 있어 비대칭입니다. 향상도도 대칭입니다.
계산 예제 ①
전체 거래 10건. 우유 포함 5건, 빵 포함 4건, 우유와 빵 동시 포함 3건.
규칙 우유 → 빵
- 지지도 = 3 / 10 = 0.3 (30%)
- 신뢰도 = 3 / 5 = 0.6 (60%)
- 빵의 지지도 = 4 / 10 = 0.4
- 향상도 = 0.6 / 0.4 = 1.5
향상도 1.5 > 1 → 우유를 산 사람이 빵을 살 확률이 전체 평균보다 1.5배 높음 → 양의 연관.
반대 방향 빵 → 우유
- 지지도 = 3 / 10 = 0.3 (같음)
- 신뢰도 = 3 / 4 = 0.75 (달라짐)
- 향상도 = 0.75 / 0.5 = 1.5 (같음)
이 예제가 시험 문제 그 자체입니다. 지지도의 분모는 전체 거래 수, 신뢰도의 분모는 조건절(A)의 거래 수, 향상도의 분모는 결과절(B)의 지지도. 분모를 어디에 두는지만 정확히 알면 전부 맞힐 수 있습니다.
계산 예제 ② — 향상도 = 1인 경우
전체 거래 10건. A 포함 5건, B 포함 6건, A와 B 동시 3건.
- 지지도 = 3/10 = 0.3
- 신뢰도 = 3/5 = 0.6
- B의 지지도 = 6/10 = 0.6
- 향상도 = 0.6 / 0.6 = 1.0 → A와 B는 서로 독립, 규칙에 아무 의미가 없음
향상도 해석 — 방향을 절대 뒤집지 말 것
| 향상도 | 해석 |
|---|---|
| > 1 | 양의 상관. A 구매가 B 구매 가능성을 높인다 → 의미 있는 규칙 |
| = 1 | A와 B는 서로 독립. 규칙이 무의미 |
| < 1 | 음의 상관. A 구매가 B 구매 가능성을 낮춘다 (대체재 관계) |
단골 함정 두 개. ① "향상도가 1이면 연관성이 가장 강하다" → 오답, 1은 독립입니다. ② "향상도가 낮을수록 좋은 규칙" → 오답, 향상도는 1보다 클수록 유용합니다. 향상도 0.5짜리 규칙은 쓸모없는 게 아니라 음의 연관(같이 안 사는 관계) 이라는 정보를 줍니다.
또 자주 나오는 조합 문제: 지지도와 신뢰도가 모두 높은데 향상도가 1 근처면, B가 원래 너무 잘 팔리는 상품이라 규칙이 무의미하다는 뜻입니다. 그래서 세 측도를 함께 봐야 합니다.
Apriori 알고리즘
모든 품목 조합을 다 세는 것은 품목이 k개일 때 조합 수가 지수적으로 폭발하므로, 빈발 항목집합만 남기며 후보를 줄이는 방식입니다.
핵심 원리 — Apriori 성질(하향 폐쇄성)
어떤 항목집합이 빈발하면 그 부분집합도 모두 빈발하다. 뒤집으면, 어떤 항목집합이 빈발하지 않으면 그것을 포함하는 모든 상위 집합도 빈발하지 않다.
절차
- 최소 지지도를 설정한다
- 최소 지지도를 넘는 1-항목 빈발집합을 찾는다
- 그 빈발집합들을 결합해 2-항목 후보를 만들고, 지지도를 계산해 걸러낸다
- 더 이상 빈발집합이 만들어지지 않을 때까지 k를 늘려가며 반복한다
- 남은 빈발집합에서 최소 신뢰도를 넘는 규칙을 생성한다
- 장점: 원리가 단순해 이해·구현이 쉽고 결과 해석이 직관적
- 단점: 후보 집합을 만들며 DB를 여러 번 스캔해야 해 느리고, 품목 수가 많으면 계산량이 급증
최소 지지도를 너무 낮게 잡으면 규칙이 폭발하고 계산이 감당되지 않으며, 너무 높게 잡으면 의미 있는 소수 규칙을 놓칩니다. 그리고 Apriori는 지지도 기준으로 먼저 걸러낸 뒤 신뢰도로 규칙을 만든다는 순서가 출제 포인트입니다.
FP-Growth
Apriori의 속도 문제를 개선한 알고리즘입니다.
- FP-Tree(빈발 패턴 트리) 라는 압축된 트리 구조를 만들고, 이 트리에서 패턴을 캐냅니다
- 후보 항목집합을 생성하지 않습니다
- DB 스캔이 2번으로 끝나 Apriori보다 훨씬 빠름
- 단점: 트리를 메모리에 올려야 하므로 메모리 사용량이 크고, 구조가 복잡
| 비교 | Apriori | FP-Growth |
|---|---|---|
| 후보 생성 | 함 | 안 함 |
| DB 스캔 | 여러 번(k+1회) | 2회 |
| 속도 | 느림 | 빠름 |
| 메모리 | 적게 | 많이(트리) |
"FP-Growth는 후보 항목집합을 생성한다"는 오답입니다. 후보 생성이 없다는 것이 FP-Growth의 정체성입니다.
순차 패턴과 확장
순차(서열) 분석은 시간 순서를 반영해 "A를 산 다음 B를 산다"는 규칙을 찾습니다. 연관분석에 시간 개념을 더한 것으로, 고객 ID와 거래 시점이 필요합니다.
연관분석의 장단점
| 장점 | 단점 |
|---|---|
| 결과가 if-then 규칙으로 나와 이해가 쉬움 | 품목 수가 늘면 계산량이 급증 |
| 목적 변수가 없어도 탐색적으로 적용 가능 | 상대적으로 거래가 드문 품목은 규칙에서 배제됨 |
| 분석 절차와 계산이 간단 | 품목을 세분화하면 지지도가 낮아져 규칙이 사라짐 |
품목을 너무 세분화하면(예: "우유"가 아니라 "○○브랜드 저지방 우유 500ml") 각 품목의 지지도가 떨어져 규칙이 나오지 않습니다. 반대로 너무 범주화하면 당연한 규칙만 나옵니다. 이 적절한 품목 세분화 수준이 연관분석 실무의 핵심 판단이며 서술형 소재로도 쓰입니다.