Case Study · Data Analysis
2,500가구·260만 건 거래 데이터를 분석해 RFM 세그먼트를 설계하고, 캠페인·쿠폰 효율과 장바구니 연관 규칙을 도출한 뒤 Streamlit 대시보드로 구현했습니다.
무엇을 알아내려 했는가
분석을 시작하기 전에 확인한 것
전체 2,500가구 중 인구통계 정보가 있는 가구는 801가구뿐이었습니다. 이 표본으로 전체를 설명해도 되는지 먼저 확인해야 했습니다.
정보 보유 801가구와 미보유 1,699가구를 대상으로 독립표본 t-검정을 수행했습니다. 평균 거래액과 구매 빈도 모두 p > 0.05로, 두 집단 간 유의미한 행동 차이가 없었습니다. 801가구 표본을 유효 표본으로 사용할 근거를 확보했습니다.
표본 편향을 확인하지 않고 세그먼트를 나누면, 특정 성향 고객만 반영된 결론이 나옵니다. 결과가 아니라 결과를 신뢰할 수 있는지부터 검증했습니다.
최근성 · 빈도 · 구매액 기준 6개 세그먼트 설계
| 세그먼트 | 정의 | 대응 전략 |
|---|---|---|
| VIP 고객 | F≥4, M≥4 | 매출 핵심. 이탈 징후 선제 대응 |
| 충성 고객 | F≥3, M≥3 | 안정 매출층. VIP 승격 유도 |
| 신규 유망 | R≥4, F≥3 | 구매 주기 단축 유도 |
| 일반 고객 | 기타 | 카테고리 확장 제안 |
| 이탈 우려 | R≤2, F≥3 | 즉시 리텐션 오퍼 발송 |
| 휴면 · 이탈 | R≤2, F≤2 | 비용 대비 효율 낮음. 최소 투입 |
활동 고객군은 이탈 고객군 대비 방문 빈도와 누적 지출액 모두에서 약 3.7배 높았습니다. 격차가 이 정도라면 이탈 후 회복보다 이탈 전 방어가 훨씬 효율적입니다.
VIP 고객의 Recency 점수가 하락하는 시점을 트리거로 잡아, 이탈 우려 단계로 넘어가기 전에 대형 오퍼와 선호 상품 쿠폰을 선제 발송하는 리텐션 플로우를 제안했습니다.
마케팅 투입이 실제로 매출로 이어지는가
가구별 캠페인 수신 횟수와 총 매출액 간 상관계수는 0.76으로 뚜렷한 양의 상관관계를 보였습니다. 다만 상관은 인과가 아니므로, 쿠폰 사용 여부로 집단을 나눠 추가 검증했습니다.
쿠폰 사용 가구의 평균 누적 지출은 미사용 가구 대비 약 3.5배였습니다. 다만 이 수치는 "쿠폰이 지출을 늘렸다"로 바로 읽을 수 없습니다. 원래 구매가 많은 고객이 쿠폰도 많이 쓰는 선택 편향이 섞여 있기 때문입니다.
무차별 쿠폰 배포 대신 두 지점에 집중하도록 제안했습니다. LTV 상위 고객 대상 유지 목적 배포와, 이탈 임계점에 도달한 고객 대상 복귀 목적 배포입니다. 배포 대상을 좁히면 같은 예산으로 반응률을 높일 수 있습니다.
함께 구매되는 카테고리 조합 추출
동일 바스켓 내 공동 출현 빈도를 기준으로 지지도·신뢰도·향상도를 산출했습니다. 향상도(Lift)가 1을 넘으면 우연보다 자주 함께 팔린다는 뜻입니다.
향상도 상위 조합을 인접 진열 대상으로 지정하고, 번들 구성과 교차 쿠폰(한쪽 구매 시 다른 쪽 할인) 설계에 연결했습니다.
분석 결과를 반복 조회 가능한 형태로
일회성 보고서로 끝내지 않고 Python Streamlit 기반 대시보드로 구현했습니다. 담당자가 매번 분석을 요청하지 않아도 직접 확인할 수 있어야 실무에서 쓰입니다.
| 탭 | 구성 | 용도 |
|---|---|---|
| 홈 | 매출·활성 가구·객단가 추이 | 전체 성과 모니터링 |
| 고객 | RFM 분포, 세그먼트별 지표 | 타겟 선정 |
| 상품 | 연관 규칙, 카테고리 매출 | 진열·번들 기획 |
| 전략 | 캠페인·쿠폰 효율 | 예산 배분 |
| 상세 EDA | 분포·결측·이상치 | 근거 확인 |
Python · pandas · Streamlit · 통계 검정(t-test) · 연관규칙 분석(Apriori)
실무와 연결되는 지점
이 분석은 오프라인 소매 데이터를 다뤘지만, 구조는 제가 실무에서 다루는 문제와 같습니다. 어떤 고객이 매출을 만드는가, 어떤 채널·쿠폰이 실제로 효율적인가, 무엇을 함께 팔아야 하는가. 지금 운영 중인 12개 채널 데이터에도 동일한 프레임을 적용할 수 있습니다.
특히 표본 검증과 선택 편향을 짚는 과정이 남았습니다. 숫자가 크게 나왔다고 바로 결론으로 쓰지 않고, 그 숫자가 무엇 때문에 커졌는지 한 단계 더 확인하는 습관입니다.