고객을 나누는 기본적이지만 효과적인 방법, RFM
- 지금까지 퍼널 분석으로 물이 새고 있는 곳도 찾아서 막았고, 코호트 분석과 리텐션을 통해 고객들을 잘 유지시키고 있는지 분석했다.
- 고객을 잘 데리고 있으려면 케어를 해줘야하는데, 고객 개개인에 맞춰서 원하는 것을 모두 해주기는 힘드므로, 비슷한 그룹끼리 고객을 묶어서 세그먼트를 나누는 작업을 진행한다
고객을 쪼개는 방법, RFM 분석
고객을 묶을 때 세 가지 기준으로 나누어 분석한다
- Recency : 얼마나 최근에 구매했는지
- Frequency : 얼마나 자주 구매했는지
- Monetary : 얼마나 많은 금액을 구매했는지
ex) 50만원씩 2번 산 고객과 10만원씩 10번 산 고객을 다르게 보겠다는 것
RFM 분석과정
STEP 1. 고객 별로 R / F / M 수치 산출
고객 ID | Recency | Frequency | Monetary |
32054 | 4 days | 1 | 500,000 |
10545 | 370 days | 30 | 1,500,000 |
87952 | 61 days | 4 | 200,000 |
SETP 2. R / F / M 각각에 대해 등급 만들어주기
고객 ID | Recency | Frequency | Monetary | Recency 점수 |
Frequency 점수 |
Monetary 점수 |
32054 | 4 days | 1 | 500,000 | 4 | 1 | 3 |
10545 | 370 days | 30 | 1,500,000 | 1 | 4 | 4 |
87952 | 61 days | 4 | 200,000 | 3 | 2 | 2 |
수능 등급처럼 각 점수를 세우고 네 그룹으로 나눈다
- 25%씩 나누어 1등급, 2등급, 3등급, 4등급으로 한다
- Frequency랑 Monetary는 클수록 높은 점수다
- Recency는 작을수록 높은 점수다
STEP 3. RFM 그룹과 RFM 점수 산출
고객 ID | Recency | Frequency | Monetary | Recency 점수 |
Frequency 점수 |
Monetary 점수 |
RFM 그룹 | RFM 점수 |
32054 | 4 days | 1 | 500,000 | 4 | 1 | 3 | 413 | 8 |
10545 | 370 days | 30 | 1,500,000 | 1 | 4 | 4 | 144 | 9 |
87952 | 61 days | 4 | 200,000 | 3 | 2 | 2 | 322 | 7 |
RFM 점수를 구해 각 고객별로 최종 점수를 구해준다
- RFM 그룹 : 각 R/F/M 등급을 차례로 적어줬음
- 413 그룹 = 최근에(4), 아주 가끔(1), 꽤 많은 금액(3)을 쓴 고객
- 144 그룹 = 온지 오래되었지만(1), 자주(4), 많이 산(4) 고객
- 322 그룹 = 꽤 최근에(3), 약간 자주(2), 금액은 그리 크지 않게(2) 구매하는 고객
- RFM 점수 : 각 R/F/M 등급의 합을 적어줬음
- RFM 점수가 클수록 우수한 고객이다
고객 ID | Recency | Frequency | Monetary | Recency 점수 |
Frequency 점수 |
Monetary 점수 |
RFM 그룹 | RFM 점수 | 커스텀 등급 |
32054 | 4 days | 1 | 500,000 | 4 | 1 | 3 | 413 | 8 | 실버 |
10545 | 370 days | 30 | 1,500,000 | 1 | 4 | 4 | 144 | 9 | 골드 |
87952 | 61 days | 4 | 200,000 | 3 | 2 | 2 | 322 | 7 | 실버 |
구해진 RFM 점수를 이용해 커스텀 등급을 매긴다
- RFM 점수 >= 9 : 골드
- 5 <= RFM 점수 < 9 : 실버
- RFM 점수 < 5 : 브론즈
- 점수를 통해 등급을 매겨주면, 고객의 세그먼트가 담고 있는 정보는 희석이 될 수 있다
- 같은 9점이어도 R/F/M의 차이가 존재할텐데 이를 알 수 없다
STEP 4. 커뮤니케이션 그룹과 그룹에 맞는 메시지 정하기
각 그룹별로 고객의 현황 파악을 할 수 있다
하지만, 현황 파악보다는 타게팅에 효과적이기 때문에 그룹화한 것이다.
Recency | Frequency | Monetary |
4 | 4 | 4 |
3 | 3 | 3 |
2 | 2 | 2 |
1 | 1 | 1 |
VVIP (444)
- 최근에, 가장 자주, 가장 많이 금액을 쓰는 그룹
- 잘 지켜야 하는 고객
- 가치 있고 중요한 고객이라는 점을 지속적으로 전달
- 파레토 법칙 (20%고객이 80%의 매출을 담당한다)
Recency | Frequency | Monetary |
4 | 4 | 4 |
3 | 3 | 3 |
2 | 2 | 2 |
1 | 1 | 1 |
중요 신규 고객 (414, 413)
- 구매 횟수는 적지만(한번), 최근에 큰 금액을 쓴 그룹
- 신규 중에서도 VIP가 될 가능성이 높은 고객
- 본 고객들이 후에 어떤 그룹으로 이동했는지 분석도 유의미하다
Recency | Frequency | Monetary |
4 | 4 | 4 |
3 | 3 | 3 |
2 | 2 | 2 |
1 | 1 | 1 |
Low-Spending 충성고객 (442, 441)
- 최근에, 자주 구매하지만 적은 금액을 소비하는 그룹
- 브랜드 로열티는 있는 상태
- 크로스셀과 업셀로 Spend-Level을 높일 필요
Recency | Frequency | Monetary |
4 | 4 | 4 |
3 | 3 | 3 |
2 | 2 | 2 |
1 | 1 | 1 |
이탈한 충성고객 (144, 143, 134, 133)
- 자주, 많은 금액을 소비했는데 이용한지 오래된 그룹
- 이탈했지만 다시 데려오는 시도를 해볼만한 고객
- 이탈한 고객을 다시 데려오는 것이 매우 어려움
RFM 분석 내 업무에 적용하기
RFM 등급 나누는 방법
- 4개 그룹
- 25%씩 4개 그룹
- 2개 그룹
- 파레토 법칙에 의거
- 20%와 80%
- 도메인에 맞게 자체 기준
- 연간 300만원 이상
- 연간 100만원 이상 300만원 이하
- 연간 100만원 이하
- 5개 이상의 그룹은 지양하는 것이 좋다
- 경우의 수가 너무 많아지기 때문
- 5*5*5 = 125...
- 구매가 없을 때는
- M에 매출 대신 인게이지먼트(engagement) 지표를 활용한다
- 어플 - 방문 페이지수
- 영상, 컨텐츠 - 총 시청시간
- 앱, 웹 서비스 - 사이트 체류시간
- R과 F만 사용해도 유의미하다
- M에 매출 대신 인게이지먼트(engagement) 지표를 활용한다
- R, F, M 중 더 중요한 요소에는 가중치를 준다
- RFM 점수 = Recency 점수 + Frequency 점수 + Monetary 점수
- RFM 점수 = a * Recency 점수 + b * Frequency 점수 + c * Monetary 점수
- 화장품 회사 - 자주, 최근에 사는게 중요하다 ( a=1, b=1, c=0.7 )
- 가전제품 - 최근에, 비싸게 사는것이 중요하다 ( a=1, b=0.8, c=1.2 )
- 실무에서 가중치를 구할 때 도메인 지식에 맞게 더 중요한 부분에 중점을 둔다
RFM은 직관적이고 심플하다, 왜 같은 그룹으로 묶였는지 설명하기가 좋다
머신러닝, 딥러닝을 사용하면 왜 같은 그룹으로 묶였는지 설명하기가 어려운 경우가 많다
RFM 실습
SELECT customer_id, MAX(invoice_date) AS recent_purchase, COUNT(invoice_no) AS frequency, SUM(quantity * unit_price) AS monetary,
DATE_DIFF(DATE('2011-12-10'), DATE(MAX(invoice_date)), DAY) AS recency
FROM data.sales
GROUP BY customer_id
고객을 그룹화하고 스코어를 구하는 작업은 엑셀에서 진행한다
정리
각 고객의 여정을 단계별로 나눠서 각 단계별 전환율을 구하는 퍼널분석을 진행했다
어디에 집중에서 서비스를 개선해야하는지 포인트를 찾는 분석을 진행했다
코호트 분석과 리텐션의 종류를 배우면서
우리가 데려온 고객을 얼마나 잘 지키고 있는지 측정할 수 있는 분석에 대해 알아봤다
RFM 분석에서 고객을 잘 지키기 위해서
고객별로 적정한 메시지를 보내줘야 하는데
그 고객들을 어떻게 그룹화할지 세그먼트하는 방법에 대해서 배웠다
'Skills > SQL' 카테고리의 다른 글
[SQL] 서브쿼리 임시컬럼을 통해 원하는 테이블 조회하기 (0) | 2021.11.23 |
---|---|
[SQL] 20. 많이 쓰이는 분석 프레임(3) - 리텐션 다지기 (0) | 2021.08.10 |
[SQL] 19. 많이 쓰이는 분석 프레임(2) - 코호트 분석 (0) | 2021.08.10 |
[SQL] 18. 많이 쓰이는 분석 프레임(1) - 퍼널 분석 (1) | 2021.08.06 |
[SQL] 17. SQL 에러 대처하기 (0) | 2021.08.06 |