๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Tableau ๐Ÿ“Š

[RFM Customer Segmentation] #3-1. ๊ณ ๊ฐ Segment๋ณ„ ์ฃผ๋ฌธ ๊ฑด์ˆ˜ Tree Map

by ISLA! 2024. 1. 24.

๐ŸŽฏ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—ฐ๋„๋ณ„ RFM Segment ์— ๋”ฐ๋ฅธ ์ฃผ๋ฌธ ๊ฑด ์ˆ˜ ๋น„์œจ ์ฐจ์ด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํŠธ๋ฆฌ๋งต์„ ๋งŒ๋“ ๋‹ค.

 

์—ฐ๋„ ํ•„ํ„ฐ ๋งŒ๋“ค๊ธฐ

  • ์—ฐ๋„๋ฅผ ์„ ํƒํ•˜๋ฉด ์—ฐ๋„์— ๋งž๊ฒŒ RFM ์ง€ํ‘œ๊ฐ€ ๊ณ„์‚ฐ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ € ์ƒ์„ฑ
  • Max Order Date of the Year ํ•„๋“œ ์ƒ์„ฑ : ํŠน์ • ์—ฐ๋„ ๋ณ„๋กœ order date์˜ ์ตœ๋Œ“๊ฐ’ ๊ณ„์‚ฐ

 

Recency ํ•„๋“œ ๋งŒ๋“ค๊ธฐ

  • ์ผ ์ˆ˜ ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐํ•˜๋˜, ๊ณ ๊ฐ/์—ฐ๋„๋ณ„๋กœ ๊ฐ€์žฅ ์ตœ๊ทผ(max)์˜ ๊ตฌ๋งค์ผ์ž์™€, ์œ„์—์„œ ๋งŒ๋“  ์ „์ฒด ํ•„๋“œ์—์„œ ๋™์ผ ์—ฐ๋„ ๋‚ด ๊ฐ€์žฅ ์ตœ๊ทผ ๊ตฌ๋งค์ผ์ž ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐ
DATEDIFF('day', {FIXED [Customer Name], YEAR([Order Date]): MAX([Order Date])},
[Max Order Date of the Year])

 

 

Frequency ํ•„๋“œ ๋งŒ๋“ค๊ธฐ

  • Number of Orders ํ•„๋“œ ์ƒ์„ฑ : COUNTD([Order ID])
  • Frequency ํ•„๋“œ ์ƒ์„ฑ
{ FIXED [Customer Name], YEAR([Order Date]):[Number of Orders]}

 

Monetary ํ•„๋“œ ๋งŒ๋“ค๊ธฐ

{ FIXED [Customer Name], YEAR([Order Date]) : SUM([Sales])}

 

RFM Scoring 

 

1. Recency Score

IF [Recency] >= {FIXED YEAR([Order Date]) : PERCENTILE([Recency], 0.75)} then 1
ELSEIF [Recency] >= {FIXED YEAR([Order Date]) : PERCENTILE([Recency], 0.5)} then 2
ELSEIF [Recency] >= {FIXED YEAR([Order Date]) : PERCENTILE([Recency], 0.25)} then 3
ELSE 4
END

 

2. Frequency Score

IF [Frequency] >= {FIXED YEAR([Order Date]) : PERCENTILE([Frequency], 0.75)} then 4
ELSEIF [Frequency] >= {FIXED YEAR([Order Date]) : PERCENTILE([Frequency], 0.5)} then 3
ELSEIF [Frequency] >= {FIXED YEAR([Order Date]) : PERCENTILE([Frequency], 0.25)} then 2
ELSE 1
END

 

3. Monetary Score

IF [Monetary] >= {FIXED YEAR([Order Date]) : PERCENTILE([Monetary], 0.75)} then 4
ELSEIF [Monetary] >= {FIXED YEAR([Order Date]) : PERCENTILE([Monetary], 0.5)} then 3
ELSEIF [Monetary] >= {FIXED YEAR([Order Date]) : PERCENTILE([Monetary], 0.25)} then 2
ELSE 1
END

 

RFM Segmentation

 

โ–ถ๏ธŽ Customer Segment ํ•„๋“œ

if [Frequency Score]>= 4 and [Monetary Score]>= 4 and [Recency Score]>= 4 then 'Champions'
ELSEIF [Recency Score]>=2 and [Recency Score]<=4    and [Frequency Score]>=3 and [Frequency Score]<=4 and [Monetary Score]>=5 then 'Loyal Customers'
ELSEIF [Recency Score]>=3  and [Frequency Score]>=1 and [Frequency Score]<=3 and [Monetary Score]>=1 and [Monetary Score]<=3 then 'Potential Loyalist'
ELSEIF [Recency Score]>=4   and [Frequency Score]<2   and [Monetary Score]<2 then 'New Customers'
ELSEIF [Recency Score]>=3 and [Recency Score]<=4    and [Frequency Score]<2 and [Monetary Score]<2 then 'Promising'
ELSEIF [Recency Score]>=3 and [Recency Score]<=4    and [Frequency Score]>=3 and [Frequency Score]<=4 and [Monetary Score]>=3 and [Monetary Score]<=4 then 'Need Attention'
ELSEIF [Recency Score]>=2 and [Recency Score]<=3    and [Frequency Score]<3 and [Monetary Score]<3 then 'About to Sleep'
ELSEIF [Recency Score]<3  and [Frequency Score]>=2 and [Frequency Score]<=5 and [Monetary Score]>=2 and [Monetary Score]<=5 then 'At Risk'
ELSEIF [Recency Score]<2  and [Frequency Score]>=4 and [Monetary Score]>=4  then 'Cant Lose Them'
ELSEIF [Recency Score]>=2 and [Recency Score]<=3 and [Frequency Score]>=2 and [Frequency Score]<=3 and [Monetary Score]>=2 and [Monetary Score]<=3 then 'Hibernating'
ELSEIF [Recency Score]<2  and [Frequency Score]<2  and [Monetary Score]<2  then 'Lost'
end

 

 

RFM ๊ทธ๋ž˜ํ”„ ๋งŒ๋“ค๊ธฐ

segment ๋ณ„๋กœ ์ฃผ๋ฌธ ๊ฑด์ˆ˜ ๋น„์ค‘

  • Customer Segment : ์ƒ‰์ƒ์—
  • Number of Orders : ํฌ๊ธฐ์—
  • segment ๋ณ„๋กœ ์ƒ‰์ƒ ๋ณ€๊ฒฝ

 

  • Customer Segment ๋ ˆ์ด๋ธ”์— ๋ณต์‚ฌ
  • Number of Orders๋„ ๋ ˆ์ด๋ธ”์— ๋ณต์‚ฌํ•˜์—ฌ ํ‘œ์‹œ >> ํ€ตํ…Œ์ด๋ธ” ๊ณ„์‚ฐ(๊ตฌ์„ฑ๋น„์œจ) 
    ๐Ÿ‘‰ ์ฃผ๋ฌธ ๊ฑด ์ˆ˜์˜ ๊ตฌ์„ฑ๋น„์œจ์„ ๋ณผ ์ˆ˜ ์žˆ์Œ
  • ๋ ˆ์ด๋ธ” ์„œ์‹ ์ˆ˜์ •, ๋งˆํฌ ์ƒ‰์ƒ ์ผ์น˜, ๊ฐ€์šด๋ฐ ์ •๋ ฌ

728x90