이번 글은 코드잇 강의를 수강하면서 배운 내용을 주로 하여 정리되어 있습니다. (코드잇 스프린트 데이터 애널리스트 트랙 1기 훈련생)
많은 기업들이 데이터의 중요성을 인식하면서, 데이터를 수집하고 저장하는 데에 상당한 노력을 기울이고 있습니다. 하지만 단순히 데이터를 모아두는 것만으로는 비즈니스 성장을 이끌어낼 수 없습니다. 데이터를 효과적으로 활용하기 위해서는 그 안에서 유용한 정보를 추출해내는 과정이 필수적입니다.
예를 들어, 마트에서 고객들의 구매 데이터를 단순히 저장해두기만 한다면, 이는 그저 숫자에 불과할 것입니다. 그러나 이 데이터를 체계적으로 분석해 "매년 8월에는 맥주 매출이 전월 대비 150% 증가한다"는 패턴을 발견했다면 어떻게 될까요? 이를 바탕으로 8월에 맥주를 집중적으로 판매하기 위한 프로모션을 기획한다면, 매출을 더욱 극대화할 수 있을 것입니다.
이처럼, 단순한 데이터가 의미 있는 정보로 탈바꿈하는 것은 특정 패턴을 찾아내는 과정 덕분입니다. 이 과정을 우리는 데이터 마이닝(Data Mining)이라고 부르며, 이는 데이터를 분석해 숨겨진 가치를 발견하는 과정입니다. 데이터 마이닝에는 여러 기법이 있지만, 이번 주제에서는 특히 이커머스 분야에서 자주 활용되는 장바구니 분석(Market Basket Analysis)에 대해 살펴보겠습니다.
장바구니 분석이란?
장바구니 분석
장바구니 분석(Market Basket Analysis)은 고객의 구매 데이터에서 특정 상품들이 함께 구매되는 패턴을 찾아내는 연관성 분석 기법입니다. 이를 통해 어떤 상품이 함께 구매될 가능성이 높은지 파악하여 매장 진열(제품 배치 최적화), 마케팅 전략, 고객 관계 관리(CRM) 등에 활용할 수 있습니다.
대표적인 사례로, 한 대형마트에서 기저귀와 맥주가 자주 함께 구매되는 패턴을 발견한 것이 있습니다. 이는 아이를 둔 아버지들이 기저귀를 사면서 자신을 위한 맥주도 함께 구매하는 경향을 나타낸 것으로, 이러한 숨겨진 연관성을 파악함으로써 새로운 비즈니스 전략을 수립할 수 있었습니다.
장바구니 분석은 커머스 분야 외에도 다양한 분야에 적용될 수 있습니다. 예를 들어:
- OTT 서비스: 사용자의 시청 패턴을 분석하여 맞춤 콘텐츠를 추천
- 금융 기관: 거래 패턴을 통해 사기 행위 탐지 및 맞춤 금융 상품 기획
- 의료 분야: 환자의 증상 및 질병 패턴을 분석하여 예방 조치 마련
- 요식업계: 인기 메뉴 조합을 찾아 세트 메뉴 개발
결제 데이터
장바구니 분석은 대부분 결제 데이터를 기반으로 이루어집니다.
결제 데이터는 고객이 상품이나 서비스를 구매할 때 남기는 기록으로, 마치 우리가 물건을 사고 받는 영수증과 같은 역할을 합니다. 이 결제 데이터는 단순한 숫자나 정보의 집합이 아니라, 기업이 고객의 구매 행태를 이해하고, 비즈니스 전략을 수립하는 데 매우 중요한 자원을 제공합니다. 결제 데이터는 다양한 정보로 구성되며, 이를 분석하면 유의미한 인사이트를 얻을 수 있습니다.
밑의 내용들은 결제 데이터의 구성 요소입니다.
1. 누가(Who): 구매한 사람은 누구인가
결제 데이터에는 고객을 식별할 수 있는 정보가 포함될 수 있습니다. 오프라인 매장에서는 고객을 식별하기 어려운 경우도 있지만, 포인트 적립 등의 방법으로 고객 정보를 수집할 수 있습니다. 이를 통해 고객별 구매 이력을 추적하고, 고객의 성별, 연령 등의 정보를 분석하여 맞춤형 마케팅을 할 수 있습니다.
2. 언제(When): 언제 구매가 일어났는가
결제 데이터에는 구매 날짜와 시간이 기록됩니다. 이 정보를 분석하면 특정 날짜나 시간대에 어떤 상품이 잘 팔리는지 파악할 수 있습니다. 이를 통해 시즌별, 시간대별 마케팅 전략을 세울 수 있습니다.
3. 어디서(Where): 어디에서 구매가 일어났는가
여러 지점을 운영하는 기업이라면, 결제 데이터를 통해 어느 매장에서 구매가 이루어졌는지 파악할 수 있습니다. 이를 바탕으로 각 매장의 특성을 분석하고, 상권 분석을 통해 매장별 맞춤 전략을 수립할 수 있습니다.
4. 어떻게(How): 어떻게 결제했는가
결제 데이터에는 결제 수단과 적용된 할인 정보 등이 포함됩니다. 이 데이터를 활용하면 고객별로 어떤 결제 방식을 선호하는지, 할인에 얼마나 민감한지 등을 파악할 수 있습니다. 이를 바탕으로 효과적인 프로모션 전략을 세울 수 있습니다.
5. 무엇을(What): 어떤 상품을 구매했는가
결제 데이터에는 고객이 구매한 상품 목록이 포함됩니다. 이를 통해 어떤 상품이 함께 구매되는지, 상품 간의 연관성을 분석할 수 있습니다. 이 정보는 장바구니 분석(Market Basket Analysis)의 기초가 되며, 연관 상품을 묶어서 판매하거나 크로스 셀링(cross-selling) 전략을 개발하는 데 유용합니다.
결제 데이터의 중요성
결제 데이터는 기업이 고객의 구매 패턴을 이해하고, 비즈니스 전략을 세우는 데 필수적인 정보를 제공합니다. 특히 장바구니 분석과 같은 기법을 통해 상품 간의 관계를 분석하고, 이를 바탕으로 마케팅 전략을 최적화할 수 있습니다.
결제 데이터의 구성 요소
결제 데이터는 일반적으로 다음과 같은 항목들로 구성됩니다:
- 결제 ID: 각 결제 건마다 고유한 ID가 부여되어, 함께 구매된 제품을 식별할 수 있습니다.
- 상품 정보: 고객이 구매한 상품의 세부 정보를 포함합니다. 이는 필요에 따라 구체적인 정보로 기록되거나 단순화될 수 있습니다.
- 고객 정보: 고객별로 구매 패턴을 분석하기 위해, 고객 식별 정보가 포함됩니다.
- 거래 시점: 구매가 이루어진 시간과 날짜 정보가 포함되며, 이를 통해 시간에 따른 구매 패턴을 분석할 수 있습니다.
결제 데이터 전처리
데이터 불러오기
우선, 데이터를 불러오고 확인합니다. 이 데이터에는 결제 ID, 상품 이름 등이 포함되어 있다고 가정하겠습니다.
import pandas as pd
# 예시 데이터 불러오기
data = {
'OrderID': [1, 1, 1, 2, 2, 3, 3, 3],
'ProdName': ['Apple', 'Banana', 'Orange', 'Milk', 'Bread', 'Butter', 'Cheese', 'Yogurt']
}
df = pd.DataFrame(data)
print("원본 데이터:")
print(df)
필요한 컬럼 선택
장바구니 분석을 위해서는 결제 ID와 상품 이름만 필요합니다. 따라서 다른 컬럼들을 제외하고, 결제 ID와 상품 이름만 남겨두겠습니다.
df2 = df[['OrderID', 'ProdName']]
df2.head()
결제 ID별 상품 목록 묶기
현재 데이터는 각 상품이 개별 행에 기록되어 있어, 같은 결제 ID에 속한 상품들이 여러 행에 나뉘어 있습니다. 이를 결제 ID별로 상품 목록을 묶어 하나의 행에 담기 위해 groupby()와 apply(list)를 사용합니다.
basket_df = df2.groupby('OrderID')['ProdName'].apply(list).reset_index()
basket_df.head()
이 과정의 결과로, 각 결제 ID에 대해 구매된 상품들이 리스트 형태로 묶여 하나의 행에 담기게 됩니다. 이 구조는 장바구니 분석에 적합한 형태로, 어떤 상품들이 함께 구매되었는지 쉽게 파악할 수 있습니다.
결과 확인
이제, 결제 ID별로 묶인 상품 목록이 잘 정리된 것을 확인할 수 있습니다. 이 데이터는 이후 장바구니 분석에 바로 활용할 수 있습니다.
연관 규칙 마이닝
연관 규칙 마이닝이란?
연관 규칙 마이닝(Association Rule Mining)은 데이터에서 아이템 간의 상호 관련성을 분석하여 유의미한 정보를 추출하는 방법입니다. 이 방법은 주로 장바구니 분석에 사용되며, 규칙은 보통 "IF (조건) THEN (결과)"의 형식으로 표현됩니다.
- IF: 이 부분은 연관 규칙의 ‘조건’을 나타냅니다. 즉, 어떤 상황에서 이 조건이 발동되는지를 정의하는 부분인 거죠. 이 부분은 일반적으로 하나 이상의 아이템이 들어가는 조건으로 구성되며, Antecedent라고 표현하기도 합니다.
- THEN: 이 부분은 연관 규칙의 ‘결과’로, 조건이 충족되면 어떤 상황이 발생하는지를 의미합니다. 이 부분은 일반적으로 하나 이상의 아이템이 들어가는 결과로 구성되며, Consequent라고 표현하기도 합니다.
예를 들어, "커피를 구매하면 빵도 함께 구매할 가능성이 높다"와 같은 규칙을 도출할 수 있습니다. 이러한 규칙을 통해 상품 진열 전략이나 프로모션을 최적화할 수 있습니다. 하지만 연관 규칙은 인과 관계를 나타내는 것이 아니라, 단지 아이템 간의 관련성을 나타내는 점에 유의해야 합니다.
또한, 많은 규칙 중에서 가장 의미 있는 규칙을 찾기 위해 규칙의 가치를 평가하는 과정이 필요합니다.
연관 규칙 마이닝에서 좋은 규칙을 찾기 위해서는 규칙의 가치를 평가하는 정량적인 지표가 필요합니다.
이 정략적인 지표로 지지도, 신뢰도, 향상도를 사용할 수 있습니다. 밑에 이 세가지 지표에 대해 설명하겠습니다.
지지도(Support)
지지도는 특정 규칙이 얼마나 자주 발생하는지를 나타내는 지표로, 규칙의 일반성을 평가합니다.
지지도가 높을수록 규칙이 데이터 내에서 빈번하게 나타나며, 범용성이 높다고 해석할 수 있습니다.
- 계산 방법: 지지도는 ‘X와 Y가 함께 포함된 거래 수’를 ‘전체 거래 수’로 나눈 값입니다.
지지도의 수식
- X ⇒ Y : "X를 구매하면 Y도 구매한다"는 규칙.
- N(X ∩ Y) : X와 Y를 모두 포함한 거래 수.
- N: 전체 거래 수.
예시
전체 거래가 100건인 데이터에서 우유와 달걀을 함께 구매한 거래가 20건인 경우에, "우유를 사면 달걀을 산다"는 규칙의 지지도는 다음과 같이 계산됩니다.
이 지지도 값이 0.2라는 것은 전체 거래 중 20%에서 우유와 달걀이 함께 구매되었음을 의미합니다.
신뢰도(Confidence)
신뢰도는 규칙의 신뢰성을 평가하는 지표로, X를 구매한 사람 중 Y도 함께 구매한 비율을 나타냅니다.
신뢰도가 높을수록 규칙이 더 믿을만하며, 추천의 방향성도 결정할 수 있습니다.
- 계산 방법: 신뢰도는 "X와 Y가 함께 포함된 거래 수"를 "X가 포함된 거래 수"로 나눈 값입니다.
신뢰도의 수식
- X ⇒ Y : "X를 구매하면 Y도 구매한다"는 규칙.
- N(X ∩ Y) : X와 Y를 모두 포함한 거래 수.
- N(X): X를 포함한 거래 수.
예시
데이터에서 우유를 구매한 거래가 50건이고, 이 중에서 우유와 달걀을 함께 구매한 거래가 20건인 경우에, "우유를 사면 달걀을 산다"는 규칙의 신뢰도는 다음과 같이 계산됩니다.
이 신뢰도 값이 0.4라는 것은 우유를 구매한 사람들 중 40%가 달걀도 함께 구매했다는 것을 의미합니다.
향상도(Lift)
두 항목(X와 Y)의 관계가 정말로 유의미한지, 또는 단순히 우연에 의한 것인지 평가하는 데 사용하는 지표입니다.
향상도는 X를 구매하는 것이 Y를 구매할 확률에 얼마나 영향을 미치는지를 측정합니다.
향상도의 수식
- N(X∩Y): X와 Y를 모두 포함한 거래 수.
- N(X): X를 포함한 거래 수.
- N(Y): Y를 포함한 거래 수.
- N: 전체 거래 수.
또는 조건부 확률의 관점에서 다음과 같이 표현할 수 있습니다.
이 식은 X를 구매한 후 Y를 구매할 확률을 Y를 그냥 구매할 확률로 나눈 값을 의미합니다.
즉, X를 먼저 구매했을 때 Y를 구매할 확률이 얼마나 증가하는지를 나타냅니다.
향상도의 해석
- 향상도 = 1: X와 Y는 서로 독립적입니다. 즉, X를 구매한다고 해서 Y를 구매할 가능성이 높아지지 않습니다. 이 규칙은 특별한 의미를 가지지 않는 우연일 가능성이 큽니다.
- 향상도 > 1: X와 Y는 양의 상관관계를 가집니다. X를 구매하면 Y를 구매할 확률이 증가합니다. 향상도가 클수록 이 상관관계가 강하다는 의미입니다.
- 향상도 < 1: X와 Y는 음의 상관관계를 가집니다. X를 구매하면 Y를 구매할 확률이 감소합니다.
예시
작은 동네 서점에서 한 달 동안 100건의 거래가 있었습니다. 이 서점에서는 두 가지 주요 규칙을 발견했다고 가정하겠습니다.
- 규칙 1: 소설책을 사면 북마크를 산다.
- 규칙 2: 요리책을 사면 레시피 노트를 산다.
각 항목에 대한 거래 수
- 소설책을 구매한 거래 수: 40건 (N(소설책) = 40)
- 북마크를 구매한 거래 수: 30건 (N(북마크) = 30)
- 소설책과 북마크를 함께 구매한 거래 수: 20건 (N(소설책 ∩ 북마크) = 20)
- 요리책을 구매한 거래 수: 25건 (N(요리책) = 25)
- 레시피 노트를 구매한 거래 수: 20건 (N(레시피 노트) = 20)
- 요리책과 레시피 노트를 함께 구매한 거래 수: 10건 (N(요리책 ∩ 레시피 노트) = 10)
향상도 계산
규칙 1: 소설책을 사면 북마크를 산다.
-> 향상도 = 1.67
규칙 2: 요리책을 사면 레시피 노트를 산다.
-> 향상도 = 2.0
향상도 결과 해석
- 규칙 1: 소설책을 사면 북마크를 산다는 향상도가 1.67로, 소설책을 구매한 고객이 북마크를 함께 구매할 가능성이 67% 증가합니다. 여전히 긍정적인 상관관계를 보여줍니다.
- 규칙 2: 요리책을 사면 레시피 노트를 산다는 향상도가 2.0으로, 요리책을 구매한 고객이 레시피 노트를 함께 구매할 가능성이 두 배로 증가한다는 의미입니다. 매우 강한 양의 상관관계를 나타냅니다.
종합적 결론
이 간단한 예시에서, 두 규칙 모두 유의미한 상관관계를 보여주지만, 규칙 2가 더 강한 상관관계를 나타냅니다. 서점에서는 요리책과 레시피 노트를 묶어서 판매하거나 함께 진열해 고객의 구매를 유도할 수 있습니다.
요약
- 지지도는 전체 거래에서 해당 규칙이 얼마나 자주 나타나는지를 의미합니다. 지지도가 높은 규칙은 데이터 내에서 더 일반적이며, 규칙의 범용성을 나타내고 규칙이 얼마나 일반적인지를 평가합니다.
- 신뢰도는 규칙의 조건(X)이 주어졌을 때 결과(Y)가 발생할 확률을 의미하며, 규칙의 신뢰성을 평가합니다. 신뢰도가 높은 규칙은 X가 발생할 때 Y도 발생할 가능성이 높다는 것을 의미합니다.
- 향상도는 두 항목(X와 Y)의 관계가 정말로 유의미한지를 의미하며, 규칙의 상관관계의 강도를 평가합니다. 향상도가 높은 규칙은 X를 구매하면 Y를 구매할 확률이 증가한다는 것을 의미합니다.
이 세 가지 지표는 서로 보완적인 역할을 하며, 함께 사용하여 데이터에서 가장 유의미하고 유용한 규칙을 식별할 수 있습니다. 예를 들어, 지지도와 신뢰도를 기준으로 기본적인 필터링을 한 후, 향상도를 통해 가장 유의미한 규칙을 선택하는 방식으로 사용할 수 있습니다.
실제로 비즈니스 상황에서 이러한 지표들을 활용해 연관 규칙을 적용할 때는, 규칙의 적용 가능성과 비즈니스 맥락을 고려하여 최종 결정을 내리는 것이 중요합니다.
데이터를 분석하고 유의미한 패턴을 도출하는 과정은 비즈니스 성장의 중요한 열쇠입니다. 특히 장바구니 분석과 연관 규칙 마이닝은 고객의 구매 행태를 이해하고 전략적 결정을 내리는 데 매우 유용한 도구입니다. 다음 글에서는 이러한 연관 규칙 마이닝을 더욱 깊이 있게 탐구하기 위해, 이를 구현하는 다양한 알고리즘에 대해 알아보겠습니다.
감사합니다!
출처 및 참고자료 : 코드잇 사이트 강의 '장바구니 분석' https://www.codeit.kr/topics/market-basket-analysis
'프로그래밍 > 데이터 분석' 카테고리의 다른 글
[데이터 분석 심화 개념] 장바구니 분석 개념 정리 3️⃣ (순차 패턴 마이닝, PrefixSpan 알고리즘) (0) | 2024.08.16 |
---|---|
[데이터 분석 심화 개념] 장바구니 분석 개념 정리 2️⃣ (연관 규칙 알고리즘) (1) | 2024.08.15 |
[데이터 분석 심화 개념] 차원 축소 개념 정리 (0) | 2024.08.04 |
[데이터 분석 심화 개념] 클러스터링 개념 정리 3️⃣ (다양한 클러스터링 모델) (0) | 2024.08.04 |
[데이터 분석 심화 개념] 클러스터링 개념 정리 2️⃣ (K-Means) (0) | 2024.08.04 |
데이터 분석을 공부하고 카페를 열심히 돌아다니는 이야기
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!