이번 문서의 목표: 연관규칙이 무엇인지, 지지도·신뢰도·향상도를 거래 데이터로 직접 계산하고 해석할 수 있으며, Apriori 알고리즘의 동작 원리와 규칙 평가 기준을 설명할 수 있다.
연관규칙분석이란 무엇인가
왜 필요한가
마트에서 “기저귀를 산 고객이 맥주도 많이 산다”는 유명한 사례처럼, 서로 다른 상품이 함께 팔리는 패턴을 찾아내면 매장 진열이나 할인 전략, 온라인 쇼핑몰의 “이 상품과 함께 구매한 상품” 추천에 활용할 수 있다. 이런 “무엇과 무엇이 함께 나타나는가”를 찾는 필요에서 나온 기법이 연관규칙분석이다.
쉽게 말하면: 연관규칙분석은 대량의 거래 기록에서 “A를 사면 B도 같이 산다”는 패턴을 자동으로 찾아내는 기법이며, 흔히 장바구니 분석(market basket analysis)이라 부른다.
정의
연관규칙분석(association rule analysis)은 대량의 거래(트랜잭션, transaction) 데이터에서 항목(item)들 사이의 규칙적인 연관성, 즉 “항목집합 가 나타나면 항목집합 도 함께 나타난다”는 규칙 를 찾아내는 비지도학습 기법이다. 20편에서 정리했듯 연관규칙분석은 군집분석과 마찬가지로 레이블이 없는 비지도학습에 속하지만, 목표는 그룹을 나누는 것이 아니라 항목 사이의 동시 발생 패턴을 찾는 것이라는 점에서 다르다.
지지도·신뢰도·향상도: 규칙을 숫자로 평가한다
왜 필요한가
거래 데이터를 뒤지다 보면 수많은 “A를 사면 B도 산다”는 후보 규칙이 나올 수 있는데, 그중에는 우연히 몇 번 겹쳤을 뿐인 의미 없는 규칙도 섞여 있다. 어떤 규칙이 통계적으로 믿을 만한지 판단하려면 규칙의 강도를 숫자로 잴 기준이 필요하다. 이 기준이 지지도(support)·신뢰도(confidence)·향상도(lift)이며, ADsP 시험에서 회차마다 거의 빠짐없이 계산 문항으로 출제되는 핵심 개념이다.
쉽게 말하면: 지지도는 “그 조합이 전체에서 얼마나 자주 나오는가”, 신뢰도는 “A를 산 사람 중 B도 산 사람의 비율”, 향상도는 “A와 B가 우연이 아니라 진짜로 서로를 끌어당기는가”를 나타내는 지표다.
예시 데이터: 10건의 거래
아래는 어느 마트의 거래 10건을 정리한 표다. 각 거래에 포함된 품목을 나열했다.
| 거래번호 | 구매 품목 |
|---|---|
| T1 | 기저귀, 맥주 |
| T2 | 기저귀, 맥주, 빵 |
| T3 | 기저귀, 맥주 |
| T4 | 빵, 우유 |
| T5 | 기저귀, 빵 |
| T6 | 기저귀, 맥주, 우유 |
| T7 | 빵, 우유 |
| T8 | 기저귀, 맥주, 빵 |
| T9 | 우유 |
| T10 | 기저귀, 맥주 |
이 10건의 거래를 바탕으로 연관규칙 “기저귀를 사면 맥주도 산다”()를 평가해보자. 먼저 필요한 값을 표에서 직접 세어보면 다음과 같다.
- 전체 거래 수: 10건
- 기저귀를 포함한 거래: T1, T2, T3, T5, T6, T8, T10 → 7건
- 맥주를 포함한 거래: T1, T2, T3, T6, T8, T10 → 6건
- 기저귀와 맥주를 동시에 포함한 거래: T1, T2, T3, T6, T8, T10 → 6건
정의와 계산: 지지도
지지도(support)는 전체 거래 중에서 항목집합 와 가 함께 나타난 거래의 비율이다. 특정 규칙이 아니라 “그 조합 자체가 시장에서 얼마나 흔한가”를 나타낸다.
- : 규칙의 조건부(antecedent, 왼쪽 항목집합)와 결과부(consequent, 오른쪽 항목집합)
- 분모는 항상 전체 거래 수이며, 분자는 두 항목집합이 함께 나타난 거래 수다.
기저귀 → 맥주 규칙에 값을 대입하면 다음과 같다.
지지도가 0.6이라는 것은 “전체 거래 10건 중 6건에서 기저귀와 맥주가 함께 팔렸다”는 뜻이며 퍼센트로는 60퍼센트다.
정의와 계산: 신뢰도
신뢰도(confidence)는 를 포함한 거래 중에서 도 함께 포함한 거래의 비율이다. 조건부 확률 와 같은 개념이며, “이미 를 산 사람으로 한정했을 때, 그중 도 사는 비율이 얼마인가”를 나타낸다.
- 분자는 지지도와 같은 값(두 항목집합이 함께 나타난 거래 수)이지만, 분모가 전체 거래 수가 아니라 를 포함한 거래 수로 바뀐다는 점이 지지도와의 결정적 차이다.
기저귀 → 맥주 규칙에 값을 대입하면 다음과 같다.
신뢰도가 약 0.857이라는 것은 “기저귀를 산 7명 중 약 85.7퍼센트(6명)가 맥주도 함께 샀다”는 뜻이다.
정의와 계산: 향상도
신뢰도만으로는 함정이 있다. 만약 맥주 자체가 원래 인기 상품이라 아무거나 사도 맥주를 같이 사는 경우가 많다면, 기저귀와는 상관없이 신뢰도가 높게 나올 수 있다. 그래서 “기저귀가 맥주 구매에 실제로 영향을 주는가”를 판단하려면, 맥주가 원래 얼마나 잘 팔리는지(맥주의 지지도)와 비교해야 한다. 이 비교를 하는 지표가 향상도(lift)다.
- : 단독의 지지도(전체 거래 중 를 포함한 거래의 비율)
- 향상도는 “를 알고 있을 때 가 나타날 확률”을 “와 무관하게 가 나타날 원래 확률”로 나눈 값이므로, 라는 정보가 의 발생 가능성을 얼마나 끌어올리는지를 나타낸다.
먼저 맥주의 지지도를 구한다.
이제 향상도를 계산한다.
결과 해석
향상도는 1을 기준으로 다음과 같이 해석한다.
- 향상도가 1보다 크다: 와 가 양(+)의 상관관계를 가진다. 를 사면 를 살 가능성이 원래보다 더 커진다는 뜻이다.
- 향상도가 1이다: 와 가 서로 독립이다. 의 구매 여부가 의 구매 가능성에 아무런 영향을 주지 않는다는 뜻이다.
- 향상도가 1보다 작다: 와 가 음(-)의 상관관계를 가진다. 를 사면 오히려 를 살 가능성이 원래보다 작아진다는 뜻이다.
위 예시에서 향상도는 약 1.429로 1보다 크므로, 기저귀 구매와 맥주 구매는 양의 상관관계를 가진다. 즉 기저귀를 산 고객은 그렇지 않은 고객보다 맥주를 살 가능성이 약 1.43배 더 높다고 해석할 수 있으며, 이는 두 상품을 함께 진열하거나 묶음 할인을 기획할 근거가 된다.
검산
향상도 공식을 지지도만으로 다시 풀어써서 검산해보자. 신뢰도는 이므로, 향상도는 다음과 같이도 쓸 수 있다.
값을 대입하면 , , 이므로 다음과 같다.
앞서 신뢰도 나누기 지지도 방식으로 구한 값(약 1.429)과 정확히 같으므로 계산이 맞았음을 확인할 수 있다.
자주 틀리는 점
- 지지도와 신뢰도의 분모 혼동이 가장 흔한 함정이다. 지지도는 분모가 항상 전체 거래 수이고, 신뢰도는 분모가 조건부(왼쪽) 항목의 거래 수다. 문제에서 “A를 포함한 거래 중”이라는 표현이 나오면 신뢰도를 묻는 것이다.
- 향상도가 음수가 될 수 있다고 착각하면 안 된다. 지지도·신뢰도는 모두 확률이므로 0 이상이고, 향상도는 그 비율이므로 항상 0 이상이다. 음의 상관관계는 향상도가 “1보다 작은 값”으로 나타나는 것이지, 향상도 자체가 음수가 되는 것이 아니다.
- 규칙 와 의 신뢰도는 분모가 다르므로 일반적으로 값이 다르다. 지지도와 향상도는 와 를 바꿔도 같은 값이지만, 신뢰도만은 방향에 따라 달라진다는 점을 주의해야 한다.
Apriori 알고리즘: 빈발항목집합을 효율적으로 찾는 방법
왜 필요한가
품목이 수백 개, 수천 개가 되면 가능한 항목집합의 조합 수가 기하급수적으로 늘어난다. 모든 조합의 지지도를 일일이 다 계산하는 것은 현실적으로 불가능하다. 이 계산량 폭발 문제를 줄이기 위해 고안된 대표 알고리즘이 Apriori다.
쉽게 말하면: Apriori는 “자주 나오지 않는 품목의 조합이 포함된 더 큰 조합도 자주 나올 리 없다”는 상식을 이용해, 계산할 필요가 없는 조합을 미리 걸러내는 알고리즘이다.
정의와 원리
Apriori 알고리즘의 핵심 원리는 빈발집합의 부분집합도 반드시 빈발집합이어야 한다는 성질(반대로 말하면, 어떤 항목집합이 최소 지지도를 넘지 못하면 그 항목집합을 포함하는 더 큰 항목집합도 최소 지지도를 넘을 수 없다)이다. 이를 이용해 불필요한 계산을 가지치기(pruning)한다.
- 최소 지지도(minimum support)를 설정한다. 예를 들어 “전체 거래의 20퍼센트 이상에서 나타나는 조합만 의미 있다고 보겠다”는 기준을 미리 정한다.
- 개별 품목 중 최소 지지도를 넘는 품목을 찾는다. 낱개 품목 각각의 지지도를 계산해, 기준을 넘는 품목만 빈발항목(frequent item)으로 남긴다.
- 2개 품목 조합을 생성한다. 1단계에서 살아남은 빈발항목들끼리만 짝지어 2개짜리 조합을 만든다. 이미 탈락한 품목이 포함된 조합은 애초에 만들지 않는다.
- 반복적으로 수행하여 최소 지지도를 넘는 빈발항목집합을 찾는다. 3개, 4개… 품목 조합으로 항목 수를 하나씩 늘려가며, 매 단계 최소 지지도를 넘는 조합만 다음 단계의 후보로 남기는 과정을 더 이상 새로운 빈발집합이 나오지 않을 때까지 반복한다.
이 순서를 보면 “최소 지지도 설정 → 낱개 품목 탐색 → 2개 품목 조합 생성 → 반복 확장”의 흐름이며, 처음부터 모든 조합을 만드는 것이 아니라 작은 단위에서 통과한 것만 다음 단계로 확장한다는 점이 Apriori의 효율성의 핵심이다.
규칙 평가: 지지도·신뢰도 기준을 함께 쓴다
정의
실제로 Apriori로 빈발항목집합을 찾은 뒤에는, 그 항목집합으로 만들 수 있는 규칙 중에서 최소 신뢰도(minimum confidence)를 넘는 규칙만 최종적으로 채택한다. 즉 연관규칙 평가는 지지도 기준으로 “충분히 자주 나오는 조합인가”를 먼저 거르고, 신뢰도 기준으로 “그중 실제로 믿을 만한 방향성이 있는가”를 다시 거르는 2단계 과정이다. 여기에 향상도를 추가로 확인해 그 관계가 우연(독립)이 아닌 진짜 연관인지 최종 판단한다.
자주 틀리는 점
연관규칙의 대표적 평가지표로 지지도·신뢰도·향상도 세 가지를 꼽지 못하고 다른 지표(예: 정확도, 결정계수)를 섞어 놓는 오답이 출제된 바 있다. 연관규칙분석 고유의 평가지표는 지지도·신뢰도·향상도 세 가지로 명확히 구분해서 기억해야 한다.
핵심 정리
- 연관규칙분석은 거래 데이터에서 “X를 사면 Y도 산다”는 규칙을 찾는 비지도학습 기법이다.
- 지지도는 전체 거래 중 X와 Y가 함께 나타난 비율, 신뢰도는 X를 포함한 거래 중 Y도 포함한 비율(조건부 확률), 향상도는 신뢰도를 Y의 지지도로 나눈 값이다.
- 향상도가 1보다 크면 양의 상관, 1이면 독립, 1보다 작으면 음의 상관으로 해석한다.
- 지지도와 신뢰도는 분모가 다르다는 점, 신뢰도는 방향(X→Y와 Y→X)에 따라 값이 다르다는 점이 대표 함정이다.
- Apriori 알고리즘은 빈발집합의 부분집합도 빈발집합이어야 한다는 성질을 이용해 계산량을 줄인다.