본문 바로가기
Data Science/R

[R] 소비 패턴 분석 및 프로파일링

by AI_Wooah 2022. 3. 1.

https://polar-comet-18d.notion.site/R-bf7c21caad34479abe8e8073e2e57596

 

소비자의 구매 패턴을 분석하면 매출 전략을 세우는 데 도움이 된다.

고객 세분화를 통해 집단 내 동질성, 집단 간의 이질성, 집단의 크기(고객 수)로 평가한다.

고객 세분화란? 고객들을 동질적인 특성을 가진 세부집단으로 분류하는 방법이다.

평가항목을 잘 세우는 것이 고객 세분화를 성공적으로 하는 데 큰 도움이 된다

고객을 세분화 하는 방법이 다양하고 고객의 주관이나 비즈니스적 요소를 담아서 반영한다.

자주 쓰이는 방식은 RFM 분석 방식이며,

RFM 분석이란? 일정 기간동안 발생한 고객의 구매이력을 활용한 고객 세분화 방법이다.

RFM의 정의는,

  • Recency(거래의 최근성) : 고객의 최종구매 이후 몇일이 경과되었는가?
  • Frequency(거래빈도) : 고객이 얼마나 빈번하게 우리 상품을 구입했는가?
  • Monetary(거래규모) : 고객이 구입했던 총 금액은 어느 정도인가?

구매이력을 활용한 RFM을 통해 고객을 세분화 하고 집단을 분류한다.

데이터에서 변수를 추출하는 방법

costomer_rfm의 구조

str(customer_rfm)

'data.frame': 492 obs. of 7 variables: $ trans_id : int 695247 579373 232960 192096 57433 439035 695720 857973 119435 529772 ... $ monetary : int 3200 3400 4400 11270 14630 48680 800 88730 11290 1800 ... $ frequency : int 4 5 6 9 6 9 1 11 3 3 ... $ recency : int 198 6 38 105 93 175 97 90 75 81 ... $ monetary_level : Factor w/ 3 levels "H","L","M": 2 2 2 3 3 1 2 1 3 2 ... $ frequency_level: Factor w/ 3 levels "H","L","M": 3 3 3 3 3 3 2 3 3 3 ... $ recency_level : Factor w/ 3 levels "H","L","M": 2 1 3 3 3 2 3 3 3 3 ...

상단값

head(customer_rfm)

trans_id monetary frequency recency monetary_level frequency_level recency_level 1 695247 3200 4 198 L M L 2 579373 3400 5 6 L M H 3 232960 4400 6 38 L M M 4 192096 11270 9 105 M M M 5 57433 14630 6 93 M M M 6 439035 48680 9 175 H M L

평균 구매금액

aggregate(monetary ~ monetary_level, data=customer_rfm, mean)

monetary_level monetary 1 H 57740.000 2 L 842.825 3 M 15411.940

aggregate(frequency ~ frequency_level, data=customer_rfm, mean)

frequency_level frequency 1 H 20.833333 2 L 1.000000 3 M 7.291667

aggregate(recency ~ recency_level, data=customer_rfm, mean)

recency_level recency 1 H 16.71429 2 L 181.56291 3 M 89.81164

RFM 레벨변수가 잘 생성된 것을 검증 완료

rfm 레벨 기준으로 고객의 집단을 분류하는 세분화

rfm_level<-aggregate(. ~ monetary_level+frequency_level+recency_level, data=customer_rfm, mean)
rfm_level

monetary_level frequency_level recency_level trans_id monetary frequency recency 1 L H H 3655716.0 2350.0000 14.00000 24.00000 2 M H H 1151983.0 9810.0000 15.00000 25.00000 3 L L H 1179220.3 637.7500 1.00000 15.70000 4 M L H 598366.0 20130.0000 1.00000 21.40000 5 L M H 680621.5 1745.0000 5.50000 17.50000 6 H H L 452238.0 122660.0000 14.00000 179.00000 7 L H L 2940440.2 3822.5000 25.25000 182.00000 8 H L L 970444.8 36334.0000 1.00000 180.60000 9 L L L 1823918.1 499.3277 1.00000 181.02521 10 M L L 746421.2 14024.4444 1.00000 186.72222 11 H M L 251373.5 46005.0000 10.50000 170.50000 12 L M L 2080648.0 3185.0000 5.50000 181.00000 13 H H M 2129615.0 124653.3333 25.00000 101.00000 14 L H M 2281560.6 2321.4286 19.28571 81.57143 15 M H M 967961.0 10810.0000 21.00000 142.00000 16 H L M 1203582.2 37463.7500 1.00000 97.00000 17 L L M 1536151.0 887.3516 1.00000 88.00457 18 M L M 724149.7 16089.1667 1.00000 100.36111 19 H M M 883481.7 62248.3333 9.50000 93.00000 20 L M M 1406381.5 2353.3333 6.00000 85.66667 21 M M M 508409.2 13280.0000 6.50000 79.16667

rgl 패키지 불러오기

#에러남
remove.packages("rgl")
install.packages("rgl")
ls("package:rgl")
packageVersion("rgl")
library(rgl)

3d plot을 통한 RFM 지수 시각화

plot3d(customer_rfm$monetary, customer_rfm$frequency, customer_rfm$recency,
xlab = 'Monetray', ylab = 'Frequency', zlab = 'Recency', col="blue", size=6)
반응형

댓글