본문 바로가기

데이터 분석/프로젝트

유통 데이터를 활용한 리텐션과 RFM 분석(4)

반응형

 

드디어 유통 데이터 분석의 마지막 내용입니다. 

 

분석 목적 3번인 RFM 분석을 진행해 보겠습니다. 

- 시간의 흐름에 따라 매출, 주문 고객수, 주문 단가의 추이는 어떻게 달라지는가?

- 리텐션 분석: 시간의 흐름에 따라 고객이 얼마나 남고 이탈했는가?

- RFM 분석 : 고객 행동에 따라 고객을 유형화하기

 


 

6. RFM 분석

 

RFM 분석은 고객의 가치를 평가하고 세분화하기 위해 사용하는 방법입니다. RFM은 Recency(최근성), Frequency(빈도), Monetary(금액)의 약자로, 각각 고객의 구매 활동을 기반으로 한 세 가지 중요한 지표를 나타냅니다.

 

- Recency(최근성): 고객이 마지막으로 구매한 시점으로부터 얼마나 시간이 지났는지를 측정. 최근에 구매한 고객일수록 다시 구매할 가능성이 높다고 판단.

- Frequency(빈도): 고객이 일정 기간 동안 얼마나 자주 구매했는지를 나타냄. 빈번하게 구매하는 고객은 브랜드에 대한 충성도가 높은 가능성이 크다고 판단.

- Monetary(금액): 고객이 일정 기간 동안 얼마나 많은 금액을 소비했는지를 측정. 높은 금액을 지출한 고객은 기업에게 중요한 고객으로 간주됨. 

 

본 분석에서 사용된 데이터의 경우, 약 1년에 해당하는 데이터이므로 recency, monetary 두 요소만을 가지고 분석을 진행하였습니다. 

 

 

 

rfm 점수를 계산하기 위해, 데이터의 마지막날을 '오늘'이라 가정하겠습니다.

today_date = max(data['date_ymd'])

 

 

그럼 '오늘'은 2011년 12월 9일이네요.


 

이제 rm 점수를 계산해 보겠습니다. 

우선, r을 구하기 위해서는 고객별로 마지막 결제일이 '오늘'에 얼마큼 떨어져 있는지 계산해야 됩니다.

 m을 구하기 위해서는 고객별 결제 금액의 합이 필요합니다. 이를 groupby 함수를 사용해서 계산하겠습니다.  

rfm = data.groupby('CustomerID').agg({'InvoiceDate': lambda x: (today_date - x.max()).days,
                                'amount': ['sum']})
rfm.columns = ['recency', 'monetary']
rfm

 

 

 

 

구해진 r, m 값을 등급화하겠습니다. 이번 분석에서는 각 팩터를 3등급으로 나누었습니다. 

정리하면, r의 경우 가장 최신성이 좋은 유저가 3, 낮은 유저가 1. m의 경우 구매 금액이 높은 유저가 3, 낮은 유저가 1이 되겠네요.

# 3등급으로 score 구하기
rfm['recency_score'] = pd.qcut(rfm['recency'], 3, labels= [3,2,1])
rfm['monetary_score'] = pd.qcut(rfm['monetary'], 3, labels= [1,2,3])

rfm.head(3)

 

 

 

 

 

qcut 함수를 사용하여 간단하게 recency_score와 monetary_score를 구했습니다. 

이제 이 두 score를 합쳐서 표시하겠습니다. 

rfm['rm_score'] = rfm['recency_score'].astype(str) + rfm['monetary_score'].astype(str) #문자열을 합해서 출력 
rfm.reset_index(inplace=True)
rfm.head(3)

 

 

 

 

 

groupby 함수를 사용해 rm_score별로 고객이 몇 명 속해있는지 확인해 보겠습니다.

#rm_score 별로 고객이 몇명이 속해있는지 확인
rm_score = rfm.groupby('rm_score')['CustomerID'].nunique().reset_index().rename({'CustomerID':'customer_count'},axis = 1)
rm_score

 

가장 높은 등급(33)에 많은 유저들이 속해있고

반면, 예전에 방문했는데 돈을 많이 쓴 그룹(13)의 인원이 170명으로 가장 적은 것을 확인할 수 있습니다.

 

 

 

9개로 나눠진 rm score에 대해 5개의 구간으로 나눠 임의로 네이밍 하겠습니다. 

 

- 최우수: 최신성, 구매 모두 상당히 높음

- 우수 : 최신성, 구매 모두 높음

- 구매 유도: 최신성은 높으나 구매는 낮음 → 구매를 유도해야 함

- 이탈 방지 : 구매는 높으나 최신성은 낮음 →   다시 불러 들어야 함

- 휴면: 최신성, 구매 모두 낮음  

 

#사용자 정의 함수 생성

def categorize_customer(score):
    if score == '33':
        return '최우수' 
    elif score in ['32', '23', '22']:
        return '우수' 
    elif score in ['31', '21']:
        return '구매 유도' 
    elif score in ['12', '13']:
        return '이탈 방지' 
    elif score == '11':
        return '휴면'

 

rm_score['category'] = rm_score['rm_score'].apply(categorize_customer)
rm_score

 

 

 

fig = px.treemap(data_frame= rm_score, path=['category'], values='customer_count', color_discrete_sequence=px.colors.qualitative.Pastel)
fig.show()

 

시각화 결과 우수 > 최우수 > 휴면 > 구매 유도 > 이탈 방지 유형으로 많은 것을 알 수 있습니다.

 


 

 

실제 현업에서는 고객을 세분화하는데 그치지 않고, 각 유형에 맞는 마케팅 전략을 제안하고 실현할 것입니다.

그렇기 때문에 저 또한 각 유형별 진행할 수 있는 마케팅 전략을 한번 생각해 봤습니다.

 

①  최우수 고객 : 최근에 높은 금액을 지출한 핵심 고객

최우수 고객을 늘리기 위해서는,

 

- 독점 혜택 제공 : 신제품 출시 시 먼저 알리거나, 한정판 상품을 먼저 구매할 수 있는 기회를 제공

- 퍼스널라이즈드(Personalized) 서비스 : 고객의 선로도를 반영한 맞춤형 서비스나 제품 추천을 통해 관계 강화

 

 

② 우수 고객: 최근에 구매했으며, 지출이 높거나 중간인 고객

우수 고객을 늘리기 위해서는,

 

- 업셀링과 크로스셀링: 고객이 자주 구매하는 상품과 관련된 제품을 제안하여 구매 금액을 높임

- 적립금 / 포인트 프로그램 : 구매 시 적립금을 제공하여 다음 구매를 유도

- 특별 할인 쿠폰 제공: 특정 기간 동안 사용할 수 있는 할인 쿠폰을 제공하여 재구매를 유도

 

 

③  구매 유도 고객: 최근에 구매했지만 지출 금액이 상대적으로 낮은 고객

구매 유도 고객을 늘리기 위해서는,

 

- 번들 상품 제안: 관련 상품을 묶어서 제공하여 고객의 평균 구매 금액을 높임

- 다양한 가격대의 제품 제안: 고객이 쉽게 접근할 수 있는 다양한 가격대의 상품을 추천

- 재구매 인센티브: 일정 금액 이상 구매 시, 추가 할인 or 사은품 증정

 

 

④ 이탈 방지 고객 : 오래전에 구매했지만, 과거에는 높은 금액을 지출했던 고객

 

이탈 방지 고객을 늘리기 위해서는,

 

- 재참여 캠페인: 오랜 기간 구매하지 않은 고객을 대상으로 특별 할인, 무료 배송 등의 혜택을 제공하여 재참여를 유도

- 개인화된 메시지: 고객의 관심사를 반영한 개인화된 이메일이나 메시지를 통해 다시 구매를 하도록 유도

- 휴면 방지 알림: 고객이 마지막으로 방문한 날짜를 기준으로 주기적인 리마인더 알림을 보내 구매를 촉진

 

 

⑤ 휴면 고객: 오래전에 구매했으며, 지출 금액이 낮은 고객

 

휴면 고객을 늘리기 위해서는,

 

- 재활성화 캠페인: 매우 큰 할인을 제공하거나 특별한 제안을 통해 고객을 재활성화

- 설문 조사: 해당 고객들을 대상으로 이탈한 이유를 알기 위해 간단한 설문 조사를 실시하고, 해당 원인을 해결할 수 있는 방안 제시

 

 

 

 

 

 

 

이것으로 유통 데이터를 이용한 RFM 분석이 끝났습니다.

지금까지 읽어주셔서 감사합니다:)

 

반응형