장바구니 분석이란 무엇인가요? 지표, 예시 및 활용 사례

장바구니 분석(Market basket analysis)은 동일한 거래에서 어떤 제품들이 함께 구매되는지 찾아내는 방법입니다. 우연히 발생할 확률보다 더 자주 나타나는 상품 조합을 찾기 위해 주문 데이터를 스캔합니다. 각 패턴은 지지도(support), 신뢰도(confidence), 향상도(lift)라는 세 가지 지표로 설명됩니다. 소매업체와 온라인 쇼핑몰은 이를 교차 판매, 번들 상품 구성, 상품 진열 등에 활용합니다.
이 가이드에서는 이 분석 방법이 어떻게 작동하는지, 각 지표를 어떻게 계산하는지, 그리고 결과를 어떻게 해석하는지 설명합니다. 또한 흔히 사용되는 알고리즘, 주요 활용 사례, 그리고 규칙을 실제로 적용하기 전에 알아두어야 할 한계점도 다룹니다.
장바구니 분석이란 무엇인가
장바구니 분석의 기본 개념은 간단합니다. 모든 주문은 하나의 장바구니입니다. 수천 개의 장바구니를 살펴보면 유독 자주 함께 나타나는 상품들이 있습니다. 이 분석은 그러한 조합을 찾아내고 각 조합의 연관성이 얼마나 강한지 측정합니다.
분석 결과는 일련의 연관 규칙(association rules)으로 나타납니다. 하나의 규칙은 "장바구니에 A가 포함되어 있다면, C도 포함되어 있을 가능성이 높다"라고 해석됩니다. 이때 A를 조건(antecedent), C를 결과(consequent)라고 부릅니다. 둘 다 단일 상품일 수도 있고 상품 그룹일 수도 있습니다.
이 작업에 널리 사용되는 Python 라이브러인 mlxtend의 공식 문서에는 클래식한 예시가 나와 있습니다. 바로 "기저귀를 사는 사람들은 맥주도 함께 살 가능성이 높다"는 규칙입니다. 특정 매장에서 실제로 이 조합이 성립하는지 여부와 관계없이, 이는 분석 결과가 어떤 형태로 도출되는지 잘 보여줍니다.
이 기술은 연관 규칙 학습(association rule learning)이라는 더 넓은 분야에 속합니다. mlxtend 문서에 따르면, Apriori 알고리즘은 "상점 고객의 구매 내역과 같이 트랜잭션이 포함된 데이터베이스에서 작동하도록 설계되었습니다." 이 방법은 소매업에서 시작되었지만, 장바구니 형태로 구성된 데이터라면 무엇이든 적용할 수 있습니다.
작동 원리
장바구니 분석은 두 단계로 진행됩니다.
첫 번째 단계는 빈번 항목집합(frequent itemsets)을 찾는 것입니다. 항목집합은 {휴대폰 케이스, 액정 보호 필름}과 같은 상품들의 그룹을 말합니다. 전체 거래 중 최소한의 비율 이상으로 나타날 때 '빈번'한 것으로 간주됩니다. 이 최소 비율을 지지도 임계값(support threshold)이라고 하며, 사용자가 직접 설정합니다.
두 번째 단계는 항목집합을 규칙으로 변환하는 것입니다. 알고리즘은 각각의 빈번 항목집합을 조건과 결과로 나누고, 그렇게 만들어진 규칙의 점수를 계산합니다. mlxtend 문서에서는 규칙 생성을 "빈번 패턴 마이닝에서 흔히 수행되는 작업"으로 설명합니다.
입력 데이터의 형태는 항상 동일합니다. 각 행은 하나의 거래(트랜잭션)이고, 각 열은 특정 상품의 포함 여부를 나타냅니다. 대부분의 이커머스 플랫폼에서 내보낸 주문 데이터는 피벗 작업을 통해 이러한 형식으로 변환할 수 있습니다.
지표를 계산하기 전에 세 가지 준비 단계를 거치며 결과의 방향성을 잡아야 합니다. 첫째, 거래의 기준을 정의해야 합니다. 보통은 하나의 주문 ID가 기준이 됩니다. 둘째, 수량이 아닌 구매 여부만을 기록합니다. 즉, 한 상품을 3개 구매했더라도 1회 구매한 것으로 계산합니다. 셋째, 분석의 세부 수준을 선택합니다. 제품 카테고리를 기준으로 하면 더 적고 광범위한 규칙이 나오고, 개별 SKU를 기준으로 하면 더 많은 데이터가 필요한 대신 더 정밀한 규칙을 얻을 수 있습니다.
세 가지 핵심 지표
모든 규칙에는 세 가지 수치가 부여됩니다. 이 수치들을 종합적으로 읽어내는 것이 유용한 규칙과 단순한 우연을 구분하는 열쇠입니다.
지지도 (Support)
지지도는 전체 거래 중 해당 항목집합을 포함하는 거래의 비율입니다. 1,000건의 주문 중 60건에 휴대폰 케이스와 액정 보호 필름이 모두 포함되어 있다면, 이 조합의 지지도는 0.06(또는 6%)입니다.
지지도는 패턴이 얼마나 흔하게 발생하는지 알려줍니다. 지지도가 매우 낮은 규칙은 실제로 존재하더라도 너무 드물게 발생하여 비즈니스에 적용하기 어려울 수 있습니다.
신뢰도 (Confidence)
신뢰도는 장바구니에 이미 조건 상품이 들어있을 때, 결과 상품도 함께 구매할 확률을 의미합니다. 이는 두 상품 조합의 지지도를 조건 상품의 지지도로 나누어 계산합니다.
신뢰도에는 방향성이 있습니다. A에서 C로 가는 신뢰도는 보통 C에서 A로 가는 신뢰도와 다릅니다. 아래의 구체적인 예시를 보면 그 이유를 알 수 있습니다.
향상도 (Lift)
향상도는 두 상품이 서로 아무런 관계가 없다고 가정했을 때 예상되는 빈도와 실제 빈도를 비교합니다. 규칙의 신뢰도를 결과 상품의 지지도로 나누어 계산합니다.
mlxtend 문서에서는 기준점을 명확하게 설명합니다. "A와 C가 독립적이라면 향상도 점수는 정확히 1이 됩니다." 향상도가 1보다 크면 두 상품이 우연보다 더 자주 함께 나타난다는 뜻이고, 1보다 작으면 함께 나타나는 빈도가 우연보다 낮다는 뜻입니다.
구체적인 예시
한 달 동안 1,000건의 주문이 발생한 온라인 전자기기 쇼핑몰을 예로 들어 보겠습니다.
| 지표 | 값 |
|---|---|
| 휴대폰 케이스가 포함된 주문 | 200 |
| 액정 보호 필름이 포함된 주문 | 100 |
| 두 상품이 모두 포함된 주문 | 60 |
| 두 상품 조합의 지지도 | 60 / 1,000 = 0.06 |
| 신뢰도 (휴대폰 케이스 -> 액정 보호 필름) | 0.06 / 0.20 = 0.30 |
| 신뢰도 (액정 보호 필름 -> 휴대폰 케이스) | 0.06 / 0.10 = 0.60 |
| 향상도 | 0.30 / 0.10 = 3.0 |
결과를 쉽게 풀어서 설명해 보겠습니다. 휴대폰 케이스 구매자 10명 중 3명이 액정 보호 필름도 함께 구매했습니다. 반면, 액정 보호 필름 구매자 10명 중 6명이 휴대폰 케이스도 함께 구매했습니다. 이 두 상품 조합은 우연히 함께 구매될 확률보다 3배 더 자주 함께 나타납니다.
전체 규칙 테이블이 완성되면 정해진 순서대로 읽어보세요. 먼저 향상도(lift) 기준으로 정렬하여 가장 강력한 연관 관계를 찾습니다. 그런 다음 최소 지지도 미만의 규칙은 비즈니스에 적용하기에 너무 드물게 발생하므로 제외합니다. 마지막으로 신뢰도를 활용하여 어느 방향으로 추천할지 결정합니다.
두 신뢰도 수치는 서로 다른 액션으로 이어집니다. 액정 보호 필름 구매자에게 휴대폰 케이스를 제안하는 것이 더 강력한 추천입니다. 왜냐하면 그들 중 60%가 이미 케이스를 함께 구매하기 때문입니다. 향상도는 양방향 모두 동일하므로, 연관 관계 자체의 강도를 측정하는 데는 향상도가 더 좋은 지표가 됩니다.
알아두면 좋은 기타 지표
세 가지 핵심 지표만으로도 대부분의 요구사항을 충족할 수 있지만, 라이브러리에서는 약한 규칙을 걸러내는 데 도움이 되는 다른 지표들도 제공합니다.
레버리지(Leverage)는 관찰된 공동 발생 빈도와 예상된 빈도 사이의 차이를 측정합니다. mlxtend 문서에서는 관찰된 공동 발생 빈도를 "A와 C가 독립적일 때 예상되는 빈도"와 비교하여 이를 정의합니다. 레버리지가 0이면 두 상품이 서로 독립적임을 의미합니다.
확신도(Conviction)는 결과 상품이 조건 상품에 얼마나 강하게 의존하는지 측정합니다. 향상도와 마찬가지로 1은 독립적임을 나타냅니다. 값이 높을수록 규칙이 우연보다 덜 위배된다는 것을 의미합니다.
실무에서는 대부분의 팀이 규칙을 향상도 순으로 정렬한 다음, 최소 지지도와 신뢰도를 기준으로 필터링합니다. 이 조합을 통해 강력하고, 비즈니스에 유의미할 만큼 자주 발생하며, 신뢰할 수 있는 패턴을 표면화할 수 있습니다.
알고리즘: Apriori 및 FP-Growth
Apriori는 가장 클래식한 알고리즘입니다. mlxtend 문서는 연관 규칙 마이닝을 위한 빠른 알고리즘에 관한 Agrawal과 Srikant의 1994년 논문을 그 출처로 인용합니다. Apriori는 항목집합을 단계별로 구축하고, 하위 집합이 빈번하지 않은 항목집합은 가지치기(pruning)하여 탐색 범위를 관리 가능한 수준으로 유지합니다.
FP-Growth는 다른 경로를 통해 동일한 빈번 항목집합에 도달합니다. mlxtend 문서에서는 이를 "기존 Apriori 알고리즘의 대안으로 널리 쓰이는 방법"으로 설명합니다. 이 알고리즘은 빈번 패턴 트리(frequent pattern tree)를 구축하며 후보군 생성(candidate generation) 단계를 필요로 하지 않습니다. 문서에 따르면 이 특징 덕분에 "대용량 데이터셋에 특히 매력적"입니다.
지지도 임계값은 두 알고리즘 모두에서 동일하게 작동합니다. mlxtend 문서에서는 간단한 예시를 제공합니다. 임계값이 0.5인 경우, 빈번 항목집합은 전체 거래의 최소 절반 이상에서 나타나야 합니다. 소매업에서의 임계값은 보통 이보다 훨씬 낮습니다. 인기 있는 조합이라 하더라도 전체 주문에서 차지하는 비율은 작기 때문입니다.
대부분의 비즈니스 질문에서 알고리즘 선택은 처리 속도를 바꿀 뿐, 결과 자체를 바꾸지는 않습니다. 두 알고리즘 모두 동일한 지지도 임계값에 대해 동일한 항목집합을 반환합니다.
장바구니 분석의 활용 분야
장바구니 분석은 소매업과 이커머스에서 가장 흔하게 사용되지만, 활용 사례는 그보다 훨씬 더 넓습니다.
- 교차 판매. 장바구니에 조건 상품이 담겨 있을 때 결제 단계에서 결과 상품을 추천합니다.
- 번들 상품 구성. 향상도가 높은 상품들을 하나의 패키지 상품으로 묶어 제안합니다.
- 매장 및 페이지 레이아웃. 자주 함께 구매되는 상품들을 오프라인 매대나 온라인 제품 페이지에서 서로 가까이 배치합니다.
- 재고 계획. 연관된 상품들의 재고를 함께 관리하여, 한 상품의 품절이 다른 상품의 매출까지 암묵적으로 떨어뜨리는 일을 방지합니다.
- 콘텐츠 및 미디어. 사용자의 세션을 하나의 장바구니로 취급하여 어떤 기사나 동영상이 함께 소비되는지 찾아냅니다.
- 서비스 산업. 은행이나 통신사에서 각 고객이 가입한 상품들을 하나의 장바구니로 보고, 어떤 상품 조합이 함께 가입되는 경향이 있는지 분석합니다.
- 캠페인 평가. 캠페인 전후로 특정 상품 조합의 향상도를 비교합니다. 향상도가 급증했다면 캠페인이 단순히 판매량뿐만 아니라 구매 행동 자체를 변화시켰음을 보여줍니다.
모든 활용 사례는 동일한 질문에서 시작합니다. "고객이 한 가지를 선택할 때, 다른 어떤 것을 함께 선택하는 경향이 있는가?"
이후의 실행 조치는 신뢰도의 방향성과 일치해야 합니다. 번들 상품은 두 상품이 동시에 필요할 때 효과적입니다. 결제 단계에서의 추천은 한 상품이 다른 상품의 구매로 확실하게 이어질 때 효과적입니다.
장바구니 분석 vs 관련 분석 방법
장바구니 분석은 고객 세분화(customer segmentation)나 추천 엔진과 혼동되는 경우가 많습니다. 아래 표는 이들의 차이점을 보여줍니다.
| 분석 방법 | 분석 단위 | 주요 질문 | 대표적인 결과물 |
|---|---|---|---|
| 장바구니 분석 | 거래 (트랜잭션) | 어떤 상품들이 함께 판매되는가? | 지지도, 신뢰도, 향상도를 포함한 연관 규칙 |
| 고객 세분화 | 고객 | 어떤 고객들이 서로 유사한가? | 공통된 특성을 공유하는 고객 그룹 |
| 협업 필터링 | 고객 및 상품 이력 | 이 사람이 다음에 좋아할 상품은 무엇인가? | 개인화된 추천 |
| 코호트 분석 | 시작일 기준 그룹 | 시간이 지남에 따라 행동이 어떻게 변하는가? | 리텐션 곡선 및 테이블 |
이러한 방법들은 서로를 보완합니다. 세분화를 통해 가치가 높은 고객이 누구인지 파악할 수 있고, 장바구니 분석을 통해 해당 고객들이 어떤 상품을 함께 구매하는지 알아낼 수 있습니다. 저희의 고객 세분화 보고서 작성 가이드에서는 전반부를 다루고, 코호트 분석 설명글에서는 시간적 차원을 다룹니다.
알아두어야 할 한계점
장바구니 분석을 통해 도출된 규칙은 유용하지만, 과도하게 해석하기 쉽습니다.
공동 발생이 곧 인과관계를 의미하지는 않습니다. 향상도가 높은 상품 조합은 두 상품이 함께 구매된다는 사실만 알려줄 뿐, 한 상품의 구매가 다른 상품의 구매를 유발한다는 인과관계를 증명하지는 않습니다.
임계값 설정이 결과를 좌우합니다. 지지도를 너무 높게 설정하면 틈새 시장의 가치 있는 조합을 놓칠 수 있습니다. 반대로 너무 낮게 설정하면 수천 개의 규칙이 생성되어 대부분이 노이즈가 될 수 있습니다.
드물게 판매되는 상품은 누락되기 쉽습니다. 한 달에 몇 번만 판매되는 고가의 상품은 연관 관계가 아무리 강력하더라도 지지도 임계값을 넘지 못해 분석에서 제외될 수 있습니다.
반품 및 취소는 장바구니 데이터를 왜곡합니다. 반품된 상품이 데이터에 그대로 남아 있으면, 고객이 최종적으로 취소한 조합까지 분석에 포함됩니다. 제품 반품 보고서 작성 가이드에서 이 부분을 별도로 측정하는 방법을 다룹니다.
조합의 수가 많으면 잘못된 패턴이 나타날 수 있습니다. 500개의 상품 카탈로그가 있다면 가능한 조합은 100,000개가 넘습니다. 이 중 일부는 순전히 우연에 의해 높은 향상도를 보일 수 있습니다. 중요한 규칙은 실제 비즈니스에 적용하기 전에 다른 기간의 데이터로 다시 한번 검증해 보세요.
시간적 요인도 중요합니다. 연휴 시즌의 구매 패턴이 봄철에는 유지되지 않을 수 있습니다. 레이아웃을 변경하거나 번들 상품을 구성하기 전에 비교 가능한 기간의 데이터를 바탕으로 분석을 실행하세요.
코드 작성 없이 분석을 실행하는 방법
전통적인 방법은 mlxtend와 같은 라이브러리를 사용하는 Python이나, 조합을 계산하기 위한 SQL을 사용하는 것입니다. 두 방법 모두 주문 데이터를 거래당 하나의 행, 상품당 하나의 열로 변환하는 재구성 작업이 필요합니다.
데이터 규모가 작다면 스프레드시트를 활용할 수 있습니다. 피벗 테이블로 상품별 주문 수를 계산하고, COUNTIFS 수식으로 두 상품이 함께 포함된 주문 수를 계산합니다. 하지만 카탈로그가 커질수록 가능한 조합의 수가 급격히 늘어나기 때문에 처리 규모에 한계가 있습니다.
AI 워크스페이스를 사용하면 일반 주문 내보내기 파일에서 바로 데이터 재구성 및 계산을 수행할 수 있습니다. Powerdrill Bloom은 모든 요금제에서 Excel 및 CSV 업로드를 지원합니다. 어떤 제품들이 가장 자주 함께 구매되는지 질문하고, 상위 조합에 대한 지지도, 신뢰도, 향상도를 요청할 수 있습니다.
먼저 카테고리 수준에서 분석을 실행하여 대략적인 패턴을 파악해 보세요. 그런 다음 가장 중요한 카테고리에 대해 SKU 수준으로 다시 실행하는 것이 좋습니다.
스크립트를 검증할 때와 마찬가지로 결과물을 확인하세요. 거래 건수를 확인하고, 한두 개의 조합을 수동으로 교차 검증하며, 반품된 주문이 제외되었는지 확인합니다. CSV AI assistant 페이지에서 파일 중심의 워크플로우를 확인할 수 있습니다.
준비된 주문 내보내기 파일이 있다면, Powerdrill Bloom을 사용해 보고 상위 조합들을 팀의 예상과 비교해 보세요.
자주 묻는 질문
장바구니 분석이란 무엇인가요? (쉬운 설명)
고객들이 어떤 제품을 함께 구매하는 경향이 있는지 찾아내는 방법입니다. 수많은 주문 데이터를 살펴보고, 각 조합이 우연히 발생할 확률에 비해 얼마나 자주 나타나는지 측정합니다.
장바구니 분석에서 향상도(lift)란 무엇인가요?
향상도는 두 상품이 서로 아무런 관계가 없을 때 예상되는 빈도와 비교하여, 실제 얼마나 자주 함께 나타나는지 보여주는 지표입니다. 향상도가 1이면 아무런 연관성이 없음을 의미합니다. 1보다 크면 예상보다 더 자주 함께 나타나고, 1보다 작으면 덜 나타남을 의미합니다.
지지도와 신뢰도는 어떻게 계산하나요?
지지도는 해당 항목집합을 포함하는 거래 수를 전체 거래 수로 나누어 계산합니다. 신뢰도는 두 상품 조합의 지지도를 조건 상품의 지지도로 나누어 계산합니다. 두 지표 모두 보통 소수점이나 백분율로 표시됩니다.
장바구니 분석에는 어떤 알고리즘이 사용되나요?
Apriori가 가장 클래식한 알고리즘이며, FP-Growth는 이를 보완하여 더 빠른 속도를 제공하는 대안입니다. 두 알고리즘 모두 거래 데이터에서 빈번 항목집합을 찾은 다음, 이를 바탕으로 규칙을 생성하고 점수를 계산합니다.
Excel에서도 장바구니 분석을 할 수 있나요?
네, 데이터셋 규모가 작다면 가능합니다. 피벗 테이블로 상품별 주문 수를 계산하고, COUNTIFS 수식으로 조합별 주문 수를 계산할 수 있습니다. 하지만 상품 카탈로그가 크다면 조합의 수가 급격히 늘어나므로, 스크립트나 AI 도구를 사용하는 것이 더 실용적입니다.
출처: mlxtend, Association rules · mlxtend, Apriori. 본문의 구체적인 예시는 설명을 돕기 위한 가상의 수치입니다.