연관규칙으로 거래 데이터의 동시 발생 패턴 찾기
연관규칙의 지지도·신뢰도·향상도와 Apriori, FP-Growth, Eclat 선택 기준을 정리한 데이터 마이닝 실무 가이드
2026-08-14 · 최초 발행 2025-10-14
거래 로그에서 관계를 읽는 방법
연관규칙은 거래 또는 사건이 함께 일어난 패턴을 찾아내는 데이터 마이닝 기법이다. 장바구니 분석에서 출발했지만, 추천·진단·사기 탐지처럼 동시 발생 자체가 의사결정 단서가 되는 영역에도 적용된다.
핵심은 두 제품이나 사건의 관계를 발견하고, 이를 상업적 또는 운영상 액션으로 바꾸는 데 있다. 트랜잭션에서 반복되는 동시 발생빈도를 분석해 연관성을 추정한다.
지지도(Support)는 S = P(X ∩ Y) = N(X ∩ Y) / N(전체)로 계산하며, X와 Y가 함께 포함된 거래의 비율이다.
신뢰도(Confidence)는 C = P(Y|X) = N(X ∩ Y) / N(X)다. X가 발생했을 때 Y도 발생한 조건부 확률을 뜻한다.
향상도(Lift)는 L = P(Y|X) / P(Y) = P(X ∩ Y) / (P(X)·P(Y))로, 독립적인 경우와 비교했을 때 결합 발생이 얼마나 강한지 나타낸다. 향상도가 1이면 독립, 1보다 크면 양의 상관, 1보다 작으면 음의 상관으로 본다.
신뢰도만으로 규칙을 판단하면 유행 품목에 과대반응할 수 있다. 따라서 독립성 대비를 반영하는 향상도로 보정해야 한다. 지지도가 낮은 규칙은 우연일 가능성도 커지므로 최소 지지도, 최소 신뢰도, 최소 향상도를 함께 적용하는 편이 낫다.
규칙 탐색 전에 정리할 데이터와 기준
입력은 거래 ID별 품목 집합 또는 이벤트 시퀀스로 표현한다. 품목을 정규화하고 희귀하거나 잡음에 가까운 품목을 걸러낸 뒤, One-Hot 인코딩과 세션화 절차를 적용한다.
규칙의 품질은 지지도·신뢰도·향상도를 기본으로 평가한다. 필요하다면 레버리지(Leverage), 컨빅션(Conviction), 여러 지표를 조합한 다기준 필터링을 더할 수 있다.
탐색 알고리즘은 데이터 구조와 목적에 따라 달라진다.
- Apriori는 빈발 항목집합을 단계적으로 확장하며, 반(anti)-모노토닉 성질로 후보를 프루닝한다.
- FP-Growth는 FP-트리 압축 구조를 바탕으로 빈발 항목집합을 찾으며 대규모 데이터에 유리하다.
- Eclat은 수직 데이터 포맷인 TID-List의 교집합 연산으로 탐색하며, 메모리와 속도 사이에 트레이드오프가 있다.
최소 지지도, 최소 신뢰도, 최소 향상도, 최대 길이(max_len)를 먼저 정한다. 레드-오션 규칙을 제외하고 중복·부분집합 규칙을 줄이며, 통계적 유의성 검증을 함께 수행한다. 규칙을 뽑은 뒤에는 홀드아웃 또는 시계열 분할로 검증하고, 퍼뮤테이션 테스트나 FDR 보정을 적용할 수 있다.
추천과 탐지에 규칙을 연결하는 방식
소매와 이커머스에서는 장바구니의 X→Y 규칙을 동시 진열, 번들, 쿠폰 최적화에 쓴다. 예를 들어 “커피 캡슐 → 캡슐 정리함”의 향상도 2.1 규칙은 PDP 추천 슬롯에 적용할 수 있다.
구독·통신 서비스에서는 부가서비스 동시 가입 규칙으로 추천 번들을 구성하고 업셀링에 활용한다. 채널별로 다른 규칙을 적용하면 콜센터 스크립트도 조정할 수 있다.
금융·보안 영역에서는 의심 이벤트가 함께 발생하는 규칙으로 탐지 시그널을 강화한다. 정상 규칙과 비교해 Lift<1인 패턴을 찾으면 역상관을 활용해 오탐을 줄이는 데 도움이 된다.
헬스케어에서는 병용금기와 상호작용 후보를 탐색해 임상 검증 전 가설을 만들 수 있다. 코호트별 규칙 차이를 분석하면 개인화 가이드라인 초안에도 활용할 수 있다.
교차판매 전환률은 +13%p, 평균객단가(AOV)는 +25%가 기대되며, 번들 최적화는 장바구니 이탈률을 12%p 줄일 수 있다. 동시 수요 예측 정확도를 높여 재고회전일을 510% 개선하고, 프로모션 낭비 쿠폰을 10~20% 절감하는 효과도 기대할 수 있다.
이런 정량 효과는 산업·시즌·채널에 따라 달라진다. A/B 테스트와 시계열 홀드아웃으로 보수적으로 추정해야 한다.
데이터 규모와 목적에 따른 탐색 알고리즘
| 항목 | Apriori | FP-Growth | Eclat |
|---|---|---|---|
| 성능 | 중간, 후보 수 증가 시 급격 저하 | 높음, 압축 효과 큼 | 높음, 교집합 연산 빠름 |
| 확장성 | 제한적, 메모리 부담 | 높음, 대용량 적합 | 중간, 메모리 사용량 민감 |
| 일관성 | 파라미터 동일 시 안정 | 안정, 반복 재현 용이 | 데이터 분할 영향 큼 |
| 안정성 | 희귀 아이템 많을 때 불안정 | 상대적 안정 | TID-List 편향 시 성능 저하 |
| 운영 편의 | 구현 용이, 이해도 높음 | 구현 복잡, 라이브러리 의존 | 튜닝 난이도 중간 |
대용량·고차원 환경이라면 FP-Growth를 우선 검토한다. 규칙의 해석과 교육이 목적이면 Apriori가 적합하다. 수직 포맷을 사용하고 교집합 연산을 최적화할 수 있는 환경에서는 Eclat을 선택할 수 있다.
Python으로 배치 규칙 생성하기
전제조건은 Python 3.10+, pandas 2.x, mlxtend 0.23+다.
# pip install pandas mlxtend
import pandas as pd
from mlxtend.frequent_patterns import apriori, association_rules
# 예시 데이터: 거래-품목 이진 매트릭스
df = pd.DataFrame({
'milk': [1,0,1,1,0,1],
'bread': [1,1,1,0,1,1],
'butter': [0,1,1,0,0,1],
'eggs': [1,0,0,1,1,0],
})
# apriori: 최소 지지도 0.3
freq = apriori(df.astype(bool), min_support=0.3, use_colnames=True)
rules = association_rules(freq, metric='confidence', min_threshold=0.3)
# 향상도와 신뢰도 기준 필터
rules = rules[(rules['lift'] > 1.2) & (rules['confidence'] >= 0.3)]
# 컬럼 정리
print(rules[['antecedents','consequents','support','confidence','lift']].sort_values('lift', ascending=False))
과도한 조합은 max_len으로 억제한다. 희귀 품목은 군집이나 카테고리로 승격해 차원을 줄일 수 있다. 주/월 단위 재학습과 시즌성 반영을 위한 슬라이딩 윈도우도 운영 기준에 포함한다.
운영에서 규칙의 신뢰도를 지키려면
SKU 병합과 단종 처리, 옵션·패키지 분리 기준을 먼저 관리해야 한다. 지나친 집계는 해석을 쉽게 만드는 대신 세밀한 추천 정밀도를 낮춘다.
파라미터는 min_support, min_confidence, min_lift, max_len을 함께 그리드 검색한다. 지지도를 높이면 신뢰성은 높아지지만 신규성이나 희귀 패턴의 발굴은 줄어든다.
퍼뮤테이션 테스트와 Benjamini–Hochberg(FDR) 보정은 과다탐색을 제어하는 방법이다. 보수적인 검증은 발견되는 규칙 수를 줄이지만 실전 효과에 대한 신뢰성은 높인다.
배치는 안정성과 비용 효율 측면에서, 실시간 처리는 개인화와 맥락 적합성 측면에서 강점이 있다. 스트리밍 환경에서는 Approximate Counting과 샘플링을 적용한다.
개인식별정보는 분리하거나 가명처리하고, 최소 수집 원칙과 접근제어·감사로그를 운영한다. 개인정보보호법/GDPR 최신 해석 반영 필요(최신 정보 확인 필요).