RFM 분석은 고객의 구매 행동을 Recency(최근성), Frequency(빈도), Monetary(금액) 세 가지 요소로 평가하여 고객을 세분화하는 기법입니다. 이는 마케팅 전략을 최적화하는 데 활용됩니다.
이 세 가지 지표를 조합하여 고객을 그룹화하고, 맞춤형 마케팅을 실행할 수 있습니다.
각 고객의 RFM 값을 평가하고, 이를 1~5 등급으로 나누어 점수를 부여합니다.
각 요소에 대해 5점(최상위)부터 1점(최하위)까지 점수를 부여합니다.
고객의 RFM 점수를 합산하여 RFM Score를 구합니다.
RFM Score = R 점수 + F 점수 + M 점수
점수가 높을수록 가치 있는 고객으로 분류됩니다.
flo_rfm = flo_data.copy(deep=True)
# 마지막 구매 날짜를 기준으로 Recency 계산
target_date = flo_data['last_order_date'].max()
flo_rfm['Recency'] = target_date - flo_rfm['last_order_date']
flo_rfm['Recency'] = flo_rfm['Recency'].dt.days
# Frequency 및 Monetary 계산
flo_rfm['Frequency'] = flo_rfm['order_num_total']
flo_rfm['Monetary'] = flo_rfm['customer_value_total']
# 필요한 컬럼 선택
flo_rfm = flo_rfm[['master_id', 'Recency', 'Frequency', 'Monetary']]
flo_rfm.head()
이 코드를 실행하면, 각 고객의 RFM 값이 포함된 데이터셋이 생성됩니다.
import pandas as pd
# RFM 점수 1~5로 등급화
flo_rfm['R_Score'] = pd.qcut(flo_rfm['Recency'], 5, labels=[5,4,3,2,1])
flo_rfm['F_Score'] = pd.qcut(flo_rfm['Frequency'].rank(method='first'), 5, labels=[1,2,3,4,5])
flo_rfm['M_Score'] = pd.qcut(flo_rfm['Monetary'], 5, labels=[1,2,3,4,5])
# RFM Score 계산
flo_rfm['RFM_Score'] = flo_rfm[['R_Score', 'F_Score', 'M_Score']].sum(axis=1)
이렇게 하면 RFM 점수가 계산되어 고객의 가치 평가 및 세분화가 가능해집니다.
RFM 점수를 기반으로 고객을 다음과 같이 분류할 수 있습니다.
| 고객 그룹 | 설명 |
|---|---|
| VIP 고객 | RFM 점수가 높으며, 최근/빈번한 구매 및 높은 소비 |
| 충성 고객 | 높은 Frequency와 Monetary, 하지만 Recency는 다소 낮음 |
| 신규 고객 | 높은 Recency, 하지만 Frequency와 Monetary는 낮음 |
| 이탈 위험 고객 | 낮은 Recency, Frequency, Monetary |
RFM 분석은 고객 행동을 수치화하여 효과적인 마케팅 전략을 수립하는 데 중요한 역할을 합니다. 데이터를 활용하여 고객을 적절히 세분화하고 맞춤형 접근 방식을 적용하면, 고객 충성도를 높이고 비즈니스 성과를 개선할 수 있습니다.