본문 바로가기

Data

[Tableau] 와인회사의 RFM 타겟 마케팅

사용데이터

kaggle - Customer Personality Analysis

2012~2014 2년동안 고객들의 여러 특성들이 담겨있는 데이터

https://www.kaggle.com/imakash3011/customer-personality-analysis

 

Customer Personality Analysis

Analysis of company's ideal customers

www.kaggle.com

나는 여기서 "와인구매"에만 초점을 맞추기로 했다.

 

사용변수

[인구통계학적 특성]

ID: 고객의 고유 식별자

Year_Birth: 고객 생년월일

Education: 고객 교육 수준

Marital_Status: 고객의 결혼 여부

Income: 고객의 연간 가계 소득

Kidhome: 고객 가정의 자녀 수

Teenhome: 고객의 가정에서 청소년의 수

Dt_Customer: 고객이 회사에 등록한 날짜

Recency: 고객의 마지막 구매 후 일수

 

[와인구매와 관련된 특성]

MntWines: 지난 2년간 와인에 소비된 양

NumDealsPurchase: 할인된 구매 횟수

NumWebPurchases: 회사의 웹 사이트를 통해 구입한 수

NumCatalogPurchase: 카탈로그를 사용하여 구입한 수

NumStorePurchase: 스토어에서 직접 구매한 수

NumWebVisitsMonth: 지난 달의 회사 웹 사이트 방문 횟수


비즈니스 스토리

나는 이 대시보드를 사용하는 사람을 이 제품회사의 마케팅 부서 직원이라고 가정했다.

이 마케팅 부서에게 주어진 과제는 다음과 같다.

지속적인 과제
- 고객들을 세분화하여 세분화된 고객군 맞춤 마케팅을 통해 판매율 높이기
- 충성고객 유지 및 이탈 고객 방지

단기적인 과제
상황)
- 이번 분기에 와인 신제품 출시됨, 코로나19라는 상황에 알맞게 언택트 마케팅 진행하고자 함
- 신제품 홍보를 위해 온라인 프로모션 진행하기로 계획

과제)

- 온라인 프로모션에 적극적으로 반응하여 최종 구매까지 이어질 고객들을 타겟팅 해야함

지속적인 과제와 단기적인 과제 모두 해결할 수 있는 대시보드를 구현하고자 한다.

 

그렇다면 마케팅 부서는 왜 고객을 데이터를 통해 세분화 해야할까?

DB에 있는 고객들을 랜덤 추출, 혹은 전체 고객을 대상으로 프로모션을 적극 홍보하는 것이 비용이 훨씬 더 저렴하지 않을까?

 

>> 체리피커의 위험성!

체리피커란 말 그대로 체리를 줍는 사람이라는 뜻으로, 체리가 장식된 케잌에서 하나뿐인 체리만 쏙 빼먹는 사람과 같이 여러 기능 중 자신에게 필요한 기능만 쓰고 더이상 이용하지 않는 사람을 의미한다.

예를 들어 오늘 쇼핑몰을 방문하면 포인트를 주는 이벤트를 할 경우 포인트만 받은 후 아무런 물건도 구입하지 않는 사람도 체리피커라고 할 수 있다. 이러한 체리피커는 같은 소비자 입장에서는 현명한 소비자라고 말할 수 있겠지만 기업의 입장에서는 특히, 마케팅 부서에서는 더더욱 경계해야할 대상이다.

따라서 이렇게 체리피커를 걸러내고 데이터를 통해 실제 구매로 이어질 고객들을 타겟팅하는 것이 구매율을 높이는데 훨씬 효과적이고 경제적인 방법이 될 수 있다.


대시보드 구현

1. 고객 세분화 관리 대시보드

1-1. 고객 세분화

고객들을 세분화하기 위해, RFM 개념을 적용했다.

RFM이란?
구매 최근성(Recency), 구매빈도(Frequency), 구매금액(Monetary) 3가지 지표를 통해 고객이 기업에 가져다주는 수익에 얼마나 기여하는지 판단할 수 있게 한다.

활용방안
1. R,F,M 각각의 점수에 따라 고객을 세분화하는 용도로 사용 가능
2. RFM Score을 계산하여 고객을 평가하는 지수로 사용 가능
( 여기서는 1번에 좀 더 집중하였음)

 

1. 고객별 Recency, Frequency, Monetary 구하기

{ FIXED [고객 ID] :  sum([Recency])}

{ FIXED [고객 ID] : SUM([Num Catalog Purchases]+[Num Store Purchases]+[Num Web Purchases])}

{ FIXED [고객 ID] : SUM([Mnt Wines])}

고객'별'로 구해야하기 때문에 고객ID 고정시킴!

 

2. 위에서 구한 RFM을 각각 구간별로 나누어 점수 부여

 

여기서 문제! 구간을 몇개로 나누어야 하는가?

>> R,F,M의 분포를 보고 정성적으로 판단함

>> R,F,M의 단위 다르므로 표준화하여 히스토그램 그림 (사실 분포 모양만 확인하려면 표준화 과정은 생략해도 될듯)

표준화

([c.Recency] - {AVG([c.Recency])}) / {STDEV([c.Recency])}

 

표준화한 값을 열선반에 올린 후 표현방식에서 히스토그램을 클릭하면 자동으로 구간차원이 만들어지면서 단일 분포 히스토그램이 생성됨!

구간차원의 크기에 따라 히스토그램 모양도 차이가 조금씩 난다, 위의 경우 구간차원 크기를 0.15로 통일해주었다

 

구매 최근성은 대체로 고르게 분포하는 것처럼 보이지만, 구매빈도와 구매금액은 오른쪽으로 꼬리가 길게 늘어진 형태!!

이는 구매빈도, 구매 금액이 압도적으로 큰 고객이 존재한다는 것을 의미한다.

 

따라서 구간을 촘촘하게 나눠야 구매빈도, 구매금액이 압도적으로 큰 고객들을 변별가능하다. 

따라서 10%씩 총 10개의 구간으로 나누어 1점부터 10점까지 부여하기로 결정했다.

 

Recency Score:

IF [c.Recency] <= {PERCENTILE([c.Recency],0.1)} THEN 10
ELSEIF [c.Recency] <= {PERCENTILE([c.Recency],0.2)} THEN 9
ELSEIF [c.Recency] <= {PERCENTILE([c.Recency],0.3)} THEN 8
ELSEIF [c.Recency] <= {PERCENTILE([c.Recency],0.4)} THEN 7
ELSEIF [c.Recency] <= {PERCENTILE([c.Recency],0.5)} THEN 6
ELSEIF [c.Recency] <= {PERCENTILE([c.Recency],0.6)} THEN 5
ELSEIF [c.Recency] <= {PERCENTILE([c.Recency],0.7)} THEN 4
ELSEIF [c.Recency] <= {PERCENTILE([c.Recency],0.8)} THEN 3
ELSEIF [c.Recency] <= {PERCENTILE([c.Recency],0.9)} THEN 2
ELSE 1
END

Frequency Score:

IF [c.Frequency] <= {PERCENTILE([c.Frequency],0.1)} THEN 1
ELSEIF [c.Frequency] <= {PERCENTILE([c.Frequency],0.2)} THEN 2
ELSEIF [c.Frequency] <= {PERCENTILE([c.Frequency],0.3)} THEN 3
ELSEIF [c.Frequency] <= {PERCENTILE([c.Frequency],0.4)} THEN 4
ELSEIF [c.Frequency] <= {PERCENTILE([c.Frequency],0.5)} THEN 5
ELSEIF [c.Frequency] <= {PERCENTILE([c.Frequency],0.6)} THEN 6
ELSEIF [c.Frequency] <= {PERCENTILE([c.Frequency],0.7)} THEN 7
ELSEIF [c.Frequency] <= {PERCENTILE([c.Frequency],0.8)} THEN 8
ELSEIF [c.Frequency] <= {PERCENTILE([c.Frequency],0.9)} THEN 9
ELSE 10
END

구매일은 최근일수록 좋으므로 작을수록 높은 점수를 부여, 반면 구매금액과 빈도는 클수록 높은점수를 부여했다.

 

3. R,F,M 값에 따라 고객 세분화 --> 차별화된 마케팅을 위한 고객 세분화 ex) target 마케팅

 

 

4. RFM Score 구하기 --> 고객을 평가하는 지수로 활용 ex) 고객등급 부여

RFM Score = a * 최근성(R) + b * 구매빈도(F) + c * 구매액(M)  (a,b,c는 가중치)

어떤 산업인지, 사업인지에 따라 R,F,M의 중요도가 달라진다. 따라서 마케터는 상황에 따라 각각 다른 가중치를 부여하게 된다.

마케터가 입력한 가중치에 따라 RFM Score가 바로 달라질 수 있도록 매개변수를 활용했다.

 

이 대시보드에서는 주로 타겟마케팅에 초점을 맞추었기 때문에 "세분화된 고객군을 평가"하는데 RFM Score을 활용할 수 있도록 했다.

 

RFM Score:

[p. Frequency Weight]*[c.Frequency Score] +
[p. Recency Weight]*[c.Recency Score]+
[p.Monetary  Weight]*[c.Monetary Score]

 

여기까지 마케터가 고객을 세분화하는데 도움이 되도록 대시보드를 구성했다. 

이제는 세분화된 고객의 구매량과 인구통계학적 특성을 파악하는 시트들을 만들어보자.

 

1-2. 고객의 특성 파악

1. 해당 고객군의 수와 전체에서 차지하는 비율

여기서 중요한것은 구성비율!! 필터를 통해 고객군을 누르면 그 고객의 수가 전체 고객 수에서 얼마나 차지하는지 알고싶다.

이때 필터로 인해 전체 고객 수도 같이 변하면서 구성비율이 100%로 나타난다.

이를 해결하기 위해서는 FIXED!!

 

c. 전체 고객수:

sum({ FIXED : COUNT([고객 ID])})

c. 전체 고객 구성비율:

COUNT([고객 세분화]) / [c.전체 고객수]

 

**태블로의 동작 순서
컨텍스트 필터 > Fixed > 일반 필터 > Include,Exclude

FIXED는 일반 필터보다 상위개념이므로 필터의 영향을 받지 않는다. 
따라서, 필터에 상관없이 전체 고객수는 항상 같게 유지 되도록 Fixed를 통해 전체고객수를 고정시킨후 구성비율을 계산하면 된다!

 

2. 해당 고객군의 와인 판매량과, 전체 판매량에서 차지하는 비율

 

c. 전체 매출:

sum({ FIXED : SUM([Mnt Wines])})

c. 전체 매출 구성비율:

SUM([Mnt Wines]) / [c.전체 매출]

 

마찬가지로 전체 매출을 고정시킨 후 구성비율을 구한다.

 

3. 목표달성률 막대 

 

 

목표 판매량을 입력하면 얼마나 목표를 달성했는지 알려주는 막대를 만들었다.

세분화된 고객군별로 목표매출을 얼마나 달성했는지 알 수 있다.

 

1) 매개변수 p. 목표매출 생성

 

2) 목표매출 매개변수와 실제 매출을 이중축 --> 막대 크기 조절하기

 

 

3) 계산된 필드 c. 달성률 생성 --> 달성률 레이블에 올리기

sum([Mnt Wines]) / [p. 목표매출]

 

4) 목표매출 라인 추가

축 우클릭 --> 참조선 추가 클릭

 

인구통계학적 변수 시트는 간단하므로 생략하도록 하겠다.

그럼 여기까지 고객을 세분화하고, 세분화한 고객군별로 매출 KPI와 인구통계학적 특성을 확인할 수 있는 대시보드를 완성했다.

이 대시보드는 타겟 고객별로 차별화된 마케팅 전략을 수립하는데 도움을 줄 수 있다.

 

고객 세분화 관리 대시보드 활용방안

ex1) VVIP 고객들의 소득수준 압도적으로 가장 높음, 교육 수준 또한 매우 높음 (특히, 석박사 소지자 비율이 매우 높음, 이는 곧 전문직에 종사하는 비율이 많다는 것을 시사)
--> 더 뱅커와 같은 전문직 겨냥 와인 쿠폰 제공
--> VVIP고객들에게만 고급와인 한정판매 행사

ex2) 우량 가망 신규 고객들의 평균 자녀수가 가장 높음
--> 아이들용 플라스틱 미니 와인잔 사은품으로 증정

장기과제 해결!!


이제는 온라인 프로모션에 적극적으로 참여할 고객을 찾는다!라는 단기과제를 해결에 도움이 되는 대시보드를 만들 차례이다. 

 

신제품 온라인 프로모션은 구매력이 높은 상위고객들에게만 해야할까?

위에서 세분화한 고객군의 인구통계학적 특성을 살펴보면, 상위 고객들은 대부분 소득이 높은 50대 이상으로 구성되어있다.

이들은 온라인 프로모션에 상대적으로 덜 익숙한 세대이다.

 

또한, 평소 구매력이 높지 않더라도 할인행사에 매우 잘 반응하는 고객들은 타겟팅할 가치가 있지 않을까?

 

이러한 질문들을 바탕으로 웹사이트 구매율과 할인반응률이 모두 높은 고객이라면 상위 고객군에 속하지 않더라도 타겟팅할 가치가 있다고 판단했다.

 

1. 웹사이트 구매율, 할인반응률 계산

 

c. 웹사이트 구매율:

웹사이트에서 구매한 횟수 /  전체 구매 횟수

{ FIXED [고객 ID] : sum([Num Store Purchases])} / [c.Frequency]

 

c. 할인반응률:

할인했을때 구매한 횟수 / 전체 구매 횟수

{ FIXED [고객 ID] : sum([Num Deals Purchases])} / [c.Frequency]

 

2. 두 계산된 필드를 바탕으로 산점도 그리기

 

완성된 대시보드

 고객 리스트 대시보드 활용방안

상위고객들이 아닌 고객군들중 할인반응률과 웹사이트구매율이 모두 높은 고객 리스트를 뽑아내자
필터에서 상위 고객군들 체크 해제 -> 1사분면 드래그하기 -> 하이라이트 되면서 해당 고객 리스트가 옆에 나타나게 됨!!

 

제대로 된 완성본 파일은 아래의 태블로 퍼블릭 주소에서 확인 가능

https://public.tableau.com/app/profile/arehoow/viz/_16316896996290/sheet0

 

RFM을 이용한 고객 세분화

고객 세분화

public.tableau.com

 

참고 자료

https://m.blog.naver.com/bestinall/221274298234

 

CRM 마케팅) RFM 고객가치분석 개념

CRM을 위한 고객가치분석 RFM의 개념 (RecencyㆍFrequencyㆍMonetary)안녕하세요! 오늘은 CRM...

blog.naver.com

http://tableauwiki.com/rfm/

 

태블로로 하는 고객 세그멘테이션 (마케팅 RFM 분석) - TABLEAU WIKI

오늘은 태블로에서 RFM 분석 기법을 활용하여 위 대시보드처럼 고객을 세그멘테이션 하는 방법을 알아보겠습니다. Customer Segmentation in Marketing Business Story 마케팅을 할 때 고객을 세분화해서 가치

tableauwiki.com