2025. 12. 10. 01:34ㆍ카테고리 없음
"우리 서비스에서 여러 상품을 같이 사는 고객은 얼마나 되고 어떤 상품 조합이 발생하는가"
이 분석의 주제는 [고객 구매 상품간의 연관성 분석] 으로 진행될수있다.
연관분석(Association Analysis)이란?
연관분석은 데이터 마이닝의 대표적인 기법 중 하나로, 데이터 내 항목 간의 숨겨진 관계를 발견하는데 사용된다. 흔히 장바구니 분석(Basket Analysis)라고 불리며, "기저귀를 사는 고객이 맥주를 함께 살 확률이 높다" 는 연관분석의 고전적인 예시 중 하나이다.
이 분석의 핵심은 연관 규칙(Association Rules) 을 찾아내는 것이다. 슈퍼마켓의 진열 전략부터 넷플릭스의 추천 시스템에 이르기까지, 사용자의 행동 패턴을 기반으로 다음 행동을 예측하거나 유도하는 데 광범위하게 활용된다.
방법론: Apriori 알고리즘

연관분석을 수행하는 가장 직관적이고 널리 알려진 알고리즘은 Apriori이다. 이 알고리즘은 빈발 항목 집합을 찾아내고 이를 바탕으로 연관규칙을 도출한다.
Apriori의 핵심 원리는 간단하다.
"어떤 항목 집합이 빈번하게 발생한다면, 그 집합의 모든 부분 집합 역시 빈번하게 발생해야 한다."
반대로 말하면, 어떤 항목이 빈번하지 않다면 그 항목을 포함하는 더 큰 집합 역시 빈번할 수 없다. 이 원리를 이용해 불필요한 후보 항목을 미리 가지치기(Pruning)함으로써 연산 효율성을 높인다.
주요 평가 지표(Metrics)
유의미한 규칙을 선별하기 위해 세가지 지표를 사용한다.
1. 지지도(Support)
- 전체 거래 중 항목 A와 B가 동시에 포함된 거래의 비율이다.
- 빈발 항목 집합을 걸러내는 1차 필터 역할을 한다.
2. 신뢰도(Confidence)
- 항목 A가 포함된 거래 중 항목 B가 포함될 확률이다.
- 규칙의 강도를 나타낸다.
3. 향상도(Lift)
- A와 B가 독립적이라고 가정했을때 대비, 실제 함께 구매되는 비율이 얼마나 높은지를 나타낸다.
- Lift > 1: 양의 상관관계 (함께 팔리는 경향이 강함 / 추천 적합)
- Lift = 1: 독립적 관계
- Lift < 1: 음의 상관관계 (오히려 따로 팔리는 경향)
분석 프로세스 예시
한 온라인 쇼핑몰에서 고객들이 구매한 상품에 대해서 다음과 같이 존재한다고 하였을때를 가정하겠다.

1. 빈발 항목 집합 찾기
우선 개별 상품들에 대해 지지도를 계산하여, 최소 지지도 기준을 만족하는 항목들을 찾는다.
최소 지지도는 분석가가 서비스에 맞게 설정하는데, 임의로 0.5를 기준으로 둔다.

모자를 제외한 티셔츠, 구두, 가방 3개의 상품이 최소 지지도 기준을 만족하는 빈발 항목 집합이다.
2. 연관 규칙 생성
다음으로 빈발항목 집합을 바탕으로 신뢰도를 계산하여 연관 규칙을 도출한다.
예를들어, "티셔츠 -> 구두" 라는 규칙을 생성하고 신뢰도를 계산해보면 아래와 같이 도출된다. 이처럼 신뢰도가 높은 규칙을 지속적으로 생성하면서 최종적으로 유용한 연관 규칙을 찾아낸다.

3. 규칙 평가
마지막으로 각 규칙의 향상도를 계산하여 연관 규칙의 유효성을 평가한다.
향상도는 두 항목이 독립적일 경우 구매 확률에 비해 얼마나 높은 확률로 함께 구매되는지 말한다.
즉, 두 상품간의 관계가 우연에 의한것이 아닌지를 평가하는 지표이다.
향상도 값이 1보다 크면 두 항목간에 긍정적인 관계가 있다고 할 수 있고, 1보다 작으면 부정적인 관계에 있다고 할 수 있다.

“티셔츠 → 구두” 규칙의 향상도를 구하면 약 0.94가 나오는데,
이는 티셔츠와 구두가 독립적으로 발생하는 것보다 함께 발생하는 확률이 낮다는 의미한다.
다시 말하면 두 상품이 함께 구매되는 경향이 상대적으로 적다는 것을 나타낸다.
Apriori 알고리즘은 다양한 도메인의 서비스에서, 단순하고 직관적으로, 효율적인 후보 집합 생성이 가능하다는 장점을 가지고 있다.
하지만 대규모의 데이터셋에서는 후보 항목 집합간의 연산량 증대로 성능이 떨어질 수 있는 우려가 있다.
문제를 해결하기 위해 FP-growth 알고리즘이 등장하기도 했다.
| Apriori 알고리즘, 실제 서비스에 적용하기
해당 알고리즘을 활용하여 고객의 상품들을 연관분석하기 전 다음과 같은 데이터 전처리 과정을 거친다.
- A 상품을 구매한 이후 n일 이내에 B 상품을 구매했을 경우, A 상품과 B 상품은 함께 구매된 것으로 판단
- 상품의 옵션(크기, 색상 등)만 다를 경우에는 동일 상품으로 취급
첫 번째 전처리 작업은 서비스 특성에 맞는 시간적 범위를 설정하여 보다 의미 있는 연관 규칙을 찾기 위해서이고,
두 번째 전처리는 상품의 옵션이 다르다고 해서 완전히 다른 상품으로 처리하면, 이로 인해 고객의 구매 패턴을 오히려 왜곡할 수 있기 때문이다.
MLxtend 라이브러리
Apriori 알고리즘을 코드로 구현하기 위해 가장 처음에 사용했던 방식이다.
MLxtend는 ‘Machine Learning Extensions’의 줄임말로, 여러 가지 기계 학습 및 데이터 분석 작업에 도움이 되는 함수들을 제공하는 파이썬 라이브러리이다.
Apriori 알고리즘도 내장 함수로 구현되어 있어서 그대로 가져다 쓸 수 있다는 장점이 있다.


이렇게 내장 함수가 알아서 신뢰도와 향상도를 잘 도출해주는 것을 알 수 있다.
Apriori 알고리즘은 대규모 데이터셋에서 후보 집합 연산량이 급증한다는 단점(이를 보완한 것이 FP-Growth 알고리즘이다)이 있지만, 결과가 직관적이고 설명력이 높아 현업에서 여전히 유용하다.