본문 바로가기

SQL

[MySQL] RFM이란?

 

본 내용은 [멀티캠퍼스] 데이터 분석&데이터 엔지니어링 취업캠프 28회차에서 실시한 수업 내용 중 일부입니다.

 

교재 홍보 (본 과정의 SQL 교재)

교재 구매: https://www.yes24.com/Product/Goods/86544423

 

SQL로 맛보는 데이터 전처리 분석 - 예스24

SQL을 이용하여 현업에서 자주 사용되는 KPI 지표를 직접 추출해본다데이터 분석을 하기 위해서는 데이터베이스에 존재하는 데이터를 직접 추출할 수 있어야 한다. SQL은 우리가 데이터베이스에

www.yes24.com

 

교재로 수업을 하는 중에 RFM이라는 중요한 개념이 나와 따로 정리한다.

 

RFM이란?

RFM은 Recency (최근성), Frequency (빈도), Monetary (금액)의 약어로, 고객 세분화와 마케팅에서 사용되는 중요한 개념이다. 각각의 구성 요소는 고객의 행동 패턴을 평가하고, 고객을 그들의 구매 및 상호 작용에 따라 다양한 그룹으로 분류하는 데 도움이 된다.

1. Recency (최근성): 이 요소는 고객이 마지막 상호 작용 또는 거래를 언제 했는지를 나타낸다. 고객이 최근에 상호 작용하면 Recency 점수가 높아진다. 이는 최근 상호 작용이 더 중요하다는 것을 나타낸다.
2. Frequency (빈도): Frequency는 특정 기간 동안 고객이 상호 작용하는 빈도를 나타낸다. 더 자주 상호 작용하는 고객은 Frequency 점수가 높아진다. 높은 Frequency는 고객이 브랜드나 비즈니스와 자주 상호 작용한다는 것을 나타낸다.
3. Monetary (금액): 이 요소는 고객이 지출한 금액 또는 구매한 금액을 나타낸다. Monetary는 고객이 비즈니스에 얼마나 많은 가치를 제공하는지를 반영다. 높은 Monetary 점수는 고객이 높은 가치를 가진 고객임을 나타낸다.

 

계산 방식: 

비즈니스, 도메인별로 적절한 기준을 만들어 R, F, M를 계산한다.

 

RFM = a×R + b×F + c×M (a, b, c는 각각의 가중치이다.)

 

각각의 값에 가중치를 부여하여 더한다.

 

RFM의 장단점:

장점:

1. 간편한 구현: RFM은 비교적 간단한 지표를 사용하므로 구현이 쉽다. 기존 데이터를 활용하여 빠르게 고객 세분화를 수행할 수 있다.
2. 고객 세분화: RFM을 사용하면 고객을 여러 그룹으로 나눌 수 있으며, 각 그룹에 대한 타겟팅된 마케팅 전략을 개발할 수 있다. 이로써 마케팅 효율성을 향상시킬 수 있다.
3. 개인화된 마케팅: RFM을 활용하면 각 고객에게 맞춤형 마케팅 메시지를 제공할 수 있으며, 이는 고객과의 관계를 강화시킬 수 있다.
4. 고객 이탈 감소: RFM을 통해 고객의 이탈을 사전에 예측하고 예방할 수 있다. 특히 Recency 점수가 낮은 고객은 이탈 가능성이 높기 때문에 이를 사전에 대응할 수 있다.

 

단점:

1. 과도한 단순화: RFM은 고객의 활동을 단 세 가지 요소로 축약하므로 다양한 측면을 고려하지 못할 수 있다. 다른 중요한 고객 특성을 놓칠 수 있다.
2. 점수 부여 방법: RFM 점수를 부여하는 방법은 주관적일 수 있으며, 어떤 요인을 어떤 가중치로 고려할지에 대한 판단이 필요하다.
3. 정확한 예측 한계: RFM은 이탈 예측이나 구매 행동의 세부 예측에는 한계가 있을 수 있다. 고객 행동은 많은 요인에 영향을 받기 때문이다.
4. 시간 미반영: RFM은 현재와 과거 데이터에 기반하므로 미래의 고객 행동을 정확하게 예측하지 못할 수 있다.
5. 고객 다양성 무시: 고객은 다양한 특성을 가질 수 있으며, RFM은 이러한 다양성을 완전히 반영하지 못할 수 있다.

 

 

요약하자면:

RFM 분석을 통해서 고객을 여러 그룹으로 분류하고 각 그룹별로 맞춤화된 마케팅 전략을 선보일 수 있다.

예를 들어, 가장 높은 RFM 점수를 가진 고객은 프리미엄 서비스 또는 특별 혜택을 받을 수 있고,

그렇지 않은 고객들에게는 재참여 캠페인이나 프로모션을 활용해 비즈니스에 참여 및 기여를 촉진할 수 있다.

또한, RFM은 고객 세분화와 마케팅에 사용할 수 있는 비교적 간단하면서 유용한 도구이다. 하지만 단순화된 관점에서 고객세분화와 마케팅에 접근하다는 한계가 있다. 따라서 다른 고객 분석 방법과 결합하여 사용하는 것이 효과적일 수 있다.

 

교재 내의 실습 예제:

데이터셋 다운로드 방법은 링크 참고: https://hsyhrae.tistory.com/30

 

[MySQL] 실습하기 전 데이터 다운로드 및 불러오기

본 내용은 [멀티캠퍼스] 데이터 분석&데이터 엔지니어링 취업캠프 28회차에서 실시한 수업 내용 중 일부입니다. 교재 홍보 (본 과정의 SQL 교재) 교재 구매: https://www.yes24.com/Product/Goods/86544423 SQL로

hsyhrae.tistory.com

 

USE mydata;

SELECT * FROM dataset3;

 

컬럼 설명:

  • InvoiceNo: 주문 번호
  • StockCode: 상품 번호
  • Description: 상품명
  • Quantity: 구매 상품 수
  • UnitPrice: 개당 판매 가격
  • CustomerID: 고객 번호
  • Country: 판매 국가
  • InvoiceDate: 판매 일자

 

Recency 계산

판매 일자의 최대값 확인

SELECT
	customerid
    , MAX(invoiceDate) MXDT
FROM dataset3
GROUP BY 1
;

 

순서를 정렬하여 최대값 확인

SELECT
	customerid
    , MAX(invoiceDate) MXDT
FROM dataset3
GROUP BY 1
ORDER BY 2 DESC
;

 

Recency 거래의 최근성 조회: 2011-12-02부터 각 고객별 최근 주문일간의 시간 간격 조회

SELECT
	customerid
    , DATEDIFF('2011-12-02', mxdt) RECENCY
FROM (
	SELECT
		customerid
		, MAX(invoiceDate) MXDT
	FROM dataset3
	GROUP BY 1
) A
;

 

Frequency, Monetary 계산

frequency: 주문 번호의 유일값의 수로 계산,

monetary: 구매 상품 수 * 개당 판매 가격으로 계산

SELECT
	customerid
    , COUNT(DISTINCT invoiceno) AS frequency
    , SUM(quantity * unitprice) AS monetary
FROM dataset3
GROUP BY 1
;

 

 

RFM 전체 쿼리

서브쿼리 활용

SELECT
	customerid
    , DATEDIFF('2011-12-02', mxdt) RECENCY
    , frequency
    , monetary
FROM (
	SELECT
		customerid
		, MAX(invoiceDate) MXDT
        , COUNT(DISTINCT invoiceno) AS frequency
		, SUM(quantity * unitprice) AS monetary
	FROM dataset3
	GROUP BY 1
) A
;

 

위와 같이 SQL를 활용하여 RFM를 계산할 수 있다.