soo15 2023. 6. 8. 18:59

1. RFM 분석이란

CRM(Customer Relationship Management)을 할 때 사용하는 기법 중 하나

 

  • Recency     - 거래의 최근성 : 고객이 얼마나 최근에 구입했는가?
  • Frequency  - 거래빈도 : 고객이 얼마나 빈번하게 우리 상품을 구입했나?
  • Monetary    - 거래규모 : 고객이 구입했던 총 금액은 어느 정도인가?

 

RFM은 가치있는 고객을 추출해내어 이를 기준으로 고객을 분류한다.

마케팅에서 가장 많이 사용되고 있는 분석방법 중 하나이다.

사용자들의 평소 구매 패턴을 기준으로 분류를 진행하기 때문에 각 사용자 그룹의 특성에 따라 차별화된 마케팅을 할 수 있다.

 

 

2. 간단한 실습

1) 데이터 셋

> (Kaggle) US E commerce Records 2020

 

records table

컬럼명 설명 컬럼명 설명
order_date 주문 날짜 region 지역
order_id 주문 ID product_id 상품 ID
ship_mode 배송 타입 category 카테고리
customer_id 고객 ID sub_category 서브 카테고리
segment 고객 타입 product_name 상품명
country 국가 sales 매출   (number)
city 도시 quantity 수량   (integer)
state discount 할인   (number)
postal_code 우편번호  (integer) profit 이익   (number)

 

 

2) RFM 분석

2-1) RFM 분석 기준 정하기

rank recency freqency monetary
3 100일 이내 10회 이상 1000달러 이상
2 200일 이내 5회 이상 500달러 이상
1 200일 이후 5회 미만 500달러 미만

> RFM별 기준점을 설정 (고객을 분류)

 

 

 

2-2) RFM 분석 전 고객 그룹화

> 고객별로 마지막 구매일, 주문수, 매출액, RFM 구하기

SELECT *,
      CASE 
        WHEN diff_date <= 100 THEN 3
        WHEN diff_date <= 200 THEN 2
        ELSE 1
      END AS recency
       
      ,CASE 
        WHEN cnt_orders >= 10 THEN 3
        WHEN cnt_orders >= 5 THEN 2
        ELSE 1
      END AS freqency
      
      ,CASE 
        WHEN sum_sales >= 1000 THEN 3
        WHEN sum_sales >= 500 THEN 2
        ELSE 1
      END AS monetary

FROM 
  (SELECT customer_id
        ,MIN(order_date) AS first_order_date
        ,MAX(order_date) AS last_order_date
        ,DATEDIFF( '2020-12-31', MAX(order_date)) as diff_date
        ,COUNT(order_id) AS cnt_orders
        ,SUM(sales) AS sum_sales
  FROM records
  GROUP BY customer_id
  ORDER BY customer_id) AS cutmer_state

 

출력결과

customer_id first_order_date last_order_date diff_date cnt_orders sum_sales recency freqency monetary
AA-10315 2020-06-29 2020-06-29 185 2 374.48 2 1 1
AA-10375 2020-09-07 2020-12-11 20 5 206.732 3 3 2 1
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
ZD-21925 2020-06-11 2020-06-11 203 1 61.44 1 1 1

> diff_date는 현재 날짜를 2020-12-31이라 두었을 때

   가장 최근 구매한 날짜로부터의 차이를 의미한다.

 

2-3)  RFM별 고객수 구하기

SELECT 
      CASE 
        WHEN diff_date <= 100 THEN 3
        WHEN diff_date <= 200 THEN 2
        ELSE 1
      END AS recency
       
      ,CASE 
        WHEN cnt_orders >= 10 THEN 3
        WHEN cnt_orders >= 5 THEN 2
        ELSE 1
      END AS freqency
      
      ,CASE 
        WHEN sum_sales >= 1000 THEN 3
        WHEN sum_sales >= 500 THEN 2
        ELSE 1
      END AS monetary
      
      , COUNT(*) AS customer_count
    
FROM 
  (SELECT customer_id
        ,MIN(order_date) AS first_order_date
        ,MAX(order_date) AS last_order_date
        ,DATEDIFF( '2020-12-31', MAX(order_date)) as diff_date
        ,COUNT(order_id) AS cnt_orders
        ,SUM(sales) AS sum_sales
  FROM records
  GROUP BY customer_id) AS cutmer_state
GROUP BY recency, freqency, monetary
ORDER BY recency DESC, freqency DESC, monetary DESC

 

출력결과

> SQL을 통해 recency, freqency, monetary, cutomer_count를 구한 후

   엑셀를 이용하여 r+f+m (recency+freqency+monetary)을 구하였다.

> 우량 고객 (R+F+M이 9, 8인 고객) : 159명

   비우량 고객 (R+F+M이 3, 4인 고객) : 136명

> 우량 고객이 비우량 고객보다 많다.

 

 

2-4) F과 M의 피벗 테이블 (엑셀 이용)

> 고 수익성 고객군 : 237명 (monetary가 3이면서 frequency가 3, 2, 1인 고객)

> 저 수익성 고객군 : 305명(monetary가 1이면서 frequency가 3, 2, 1인 고객)

 

 

3) 대책

  • vvip, vip (우량 고객)  : r+f+m이 8, 9인 고객
    ,고 수익성 고객 (monetary가 3이면서 recency, freqency가 2,3인 고객)
    > 많은 보상과 구매 후 맞춤형 메시지를 보내 고객과 유대를 지속
  • 잠재적 vip : recency, freqency가 높고 monetary가 낮은 고객
    > vip가 되도록 멤버쉽 제공하기
  • 이탈한 vip : freqency, monetary가 높고 recency가 낮은 고객
    > 이탈한 원인 찾아서 차별화된 혜택 제공
  • 신규 고객 : recency가 높고 freqency, monetary가 낮은 고객
    > 재구매시 활용할 수 있는 할인 쿠폰 제공
  • 비우량 고객 : r+f+m이 3, 4인 고객
    > 방문을 유도하는 이벤트 제공, 추천 프로그램 개발, 검색 엔진 최적화

 

 

4) RFM 분석을 하면서 느낀점

  • RFM은 직관적이고 간단해서 왜 같은 그룹으로 묶였는지 설명하기가 좋다.
  • 하지만 너무 간단한 방법이라 고객을 분류할 때 놓치는 부분이 많을거 같다.
    1) 상품 특성에 따라 기준점을 다르게 잡아야 하지 않을까?

    위의 2-1) RFM 분석 기준 정하기에서 상품의 특성에 따라 기준이 달라질 것 같다.
    2) 연령과 성별도 영향을 미치지 않을까?
    연령층과 성별도 파악하면 보다 구체적으로 맞춤 혜택을 제공할 수 있을거 같다.
  • R, F, M 중 더 중요한 요소에는 가중치를 주어 하는 방법도 있다.
    RFM 점수 = a * Recency + b * Frequency  + c * Monetary 
    (실무에서는 도메인 지식에 맞게 가중치를 준다고 한다.)