Project

Project_4

장수우 2024. 4. 16. 21:32
주제
  • 고객 이커머스 데이터를 가지고 RFM 모델을 사용해서 고객 세분화
  • 대표님께 작년도 매출 현황 및 올해 방향 설정에 관하여 보고한다고 가정 후 진행하였습니다.
    • 질문 1 : 작년도 매출 현황이 어떻습니까?
    • 질문 2 : 올해 어떤 방향으로 나아가야 합니까?
  • https://dacon.io/competitions/official/236222/overview/description
진행과정
  1. 반정규화 실행하여 LRFMV 모델을 적용할 수 있는 DF 를 1개로 만든다.
  2. 핵심지표 지표 계산 및 데이터 결합 (파생변수 생성)
  3. 사용자별 군집화
    • 쿠폰민감도
      - 월별 쿠폰 사용률 = 워별 쿠폰사용 거래 빈도수 총합 / 월별 거래 빈도수 총합
    • 요일별 이용패턴
      - 구매요일 / 전체요일 횟수 로 비율 계산 후 클러스터링 하여 요일을 0~6으로 나눴다.
    • 마케팅 비용
      - ROI가 전부 음수에 편차가 크지않아 ROI로 군집화 하기는 어렵다고 판단
      - 고객별 마케팅 비용 대비 구매 값을 Min-Max 스케일링으로 변환하여 시각화에 용이하게 변환
  4. 군집화를 위한 변동계수 점수계산
    • 각 LRFMV 지표와 온라인/오프라인 ROI 사이의 로지스틱 회귀 분석을 수행하여 군집화 점수 계산 공식을 생성
    • 변동점수 SCORE 계


    • from
      sklearn.linear_model import LinearRegression # 각 LRFMV 지표와 온라인/오프라인 ROI 사이의 로지스틱 회귀 분석을 수행 def calculate_regression_weights(lrfmv_data, roi_data): weights = {} for column in lrfmv_data.columns: X = lrfmv_data[column].values.reshape(-1, 1) # LRFMV 데이터 y = roi_data.values.reshape(-1, 1) # 온라인 또는 오프라인 ROI 데이터 model = LinearRegression() model.fit(X, y) weights[column] = model.coef_[0][0] # 회귀 계수를 가중치로 사용 return weights online_roi = custom_df_final_2['온라인ROI'] offline_roi = custom_df_final_2['오프라인ROI'] # 각 LRFMV 지표에 대해 회귀 분석을 수행하여 가중치 계산 online_weights = calculate_regression_weights(custom_df_final_2[['Length', 'Recency', 'Frequency', 'Monetary', 'Variability']], online_roi) offline_weights = calculate_regression_weights(custom_df_final_2[['Length', 'Recency', 'Frequency', 'Monetary', 'Variability']], offline_roi) # 고객별 점수 계산 customer_data = pd.DataFrame(index=custom_df_final_2.index) customer_data['Online_Score'] = custom_df_final_2[['Length', 'Recency', 'Frequency', 'Monetary', 'Variability']].dot(pd.Series(online_weights)) customer_data['Offline_Score'] = custom_df_final_2[['Length', 'Recency', 'Frequency', 'Monetary', 'Variability']].dot(pd.Series(offline_weights)) print("Online ROI 기반 지표 가중치:") print(online_weights) print("\nOffline ROI 기반 지표 가중치:") print(offline_weights)
    • 이후 슐로테와 엘보우 기법으로 군집화 개수를 4개로 정했다.
    • PCA 후 군집별 산점도를 구한 후 분석을 시작했습니다.
  5. 군집 분석
    • 군집 0: 저 성과 고객
      • L:3, R:4, F:1, M:1, V:2, 충성도:1, 고객수: 4, 쿠폰민감도: 1, 마케팅반응도: 2
      • 이 군집은 긴 구매 간격과 최근 구매가 오래전이며, 낮은 구매 빈도와 구매 금액을 보여주고 있습니다. 변동성은 중간 수준이지만, 충성도는 낮고, 쿠폰에 대한 민감도와 마케팅 반응도 역시 낮습니다. 이 그룹은 잠재적 이탈 고객군으로 볼 수 있으며, 이들을 재활성화하기 위한 전략이 필요합니다.
    • 군집 1: 성장 잠재력 고객
      • L:1, R:3, F:2, M:2, V:4, 충성도:2, 고객수: 4, 쿠폰민감도: 2, 마케팅반응도: 4
      • 이 군집은 상대적으로 짧은 구매 간격을 가지고 있으며, 최근 구매가 중간 정도입니다. 구매 빈도와 구매 금액은 평균적이지만, 변동성은 높으며, 충성도는 조금 더 나은 편입니다. 쿠폰 민감도와 마케팅 반응도는 군집 중 상대적으로 높은 편입니다. 이 그룹은 적절한 유인책을 통해 더욱 성장할 잠재력을 지닌 고객군입니다.
    • 군집 2: 안정적 충성 고객
      • L:2, R:2, F:3, M:3, V:3, 충성도:3, 고객수: 4, 쿠폰민감도: 3, 마케팅반응도: 3
      • 이 군집은 중간 정도의 구매 간격과 최근 구매를 보이며, 구매 빈도와 금액 모두 높습니다. 변동성과 충성도도 높은 편으로, 마케팅 반응도와 쿠폰 민감도 모두 높습니다. 이들은 기업에 중요한 충성 고객으로, 이들의 충성도를 유지하고 더욱 강화하기 위한 전략을 세울 필요가 있습니다.
    • 군집 3: 프리미엄 고객
      • L:4, R:1, F:4, M:4, V:1, 충성도:4, 고객수: 4, 쿠폰민감도: 4, 마케팅반응도: 1
      • 이 군집은 매우 짧은 구매 간격과 높은 빈도, 매우 높은 구매 금액을 보이고 있습니다. 또한 변동성이 낮아 안정적인 구매 패턴을 보여줍니다. 이들은 매우 높은 충성도를 지닌 고객이며, 쿠폰과 마케팅에 대한 반응도 매우 좋습니다. 이 그룹은 기업에 있어 매우 가치 있는 고객군이며, 맞춤형 프리미엄 서비스와 인센티브를 제공하여 이들의 만족도를 극대화하는 전략이 필요합니다.
  6. 군집별 시각화
  7. 군집별 추천 전략
    • apriori 알고리즘을 바탕으로 군집별 상품 분석을 하여 추천 상품을 제안
    • 신뢰도가 최소 50%이상 인 것만 사용
    • 군집 0
      • Product_0894 구매하면 Product_0880
      • Product_0915, 0916, 0917 은 세개묶어서 판매하면 좋겠다.
    • 군집 1
      • Product_0894 구매하면 Product_0880
      • Product_0915, 0916, 0917 은 세개묶어서 판매하면 좋겠다.
      • Product_0918,구매하면 Product_0917
    • 군집 2
      • Product_0976 구매하면 Product_0983
    • 군집 3
      • Product_0985 구매하면 Product_0981
      • Product_0983 구매하면 Product_0976
      • Product_0976,구매하면 Product_0983
  8. 결론 
    • 질문 1
      • 저 성과 고객군 (매출의 6.8%): 이 군집은 다른 군집에 비해 상대적으로 낮은 구매 빈도와 구매 금액을 보이고 있습니다. 마케팅 활동에 대한 반응도 미미해 마케팅 자원을 많이 투입하기 어려운 그룹입니다.
      • 잠재성장 고객군 (매출의 21.4%): 이 군집의 고객들은 구매 빈도와 금액이 중간 수준이며, 쿠폰에 대한 민감도와 마케팅 반응성이 높습니다. 이들은 적절한 마케팅 전략을 통해 높은 잠재 성장 가능성을 보여주는 그룹입니다.
      • 안정적 충성 고객군 (매출의 31.0%): 이들은 꾸준한 구매 빈도와 금액, 그리고 변동성을 보여줍니다. 또한, 마케팅에 대한 반응성이 좋아, 지속적인 마케팅 노력으로 장기적인 충성도를 유지하고 강화할 수 있습니다.
      • 고가치 VIP 고객군 (매출의 40.8%): 이 군집은 가장 높은 구매 금액을 보이며, 높은 충성도와 구매 빈도를 지니고 있습니다. 매우 가치 있는 고객으로, 개별화된 프리미엄 서비스와 보상을 통해 지속적인 관계를 유지할 필요가 있습니다.
      • 5월부터 매출이 상승하여 8월에 피크를 찍고 내려옵니다.
      • 또한 마케팅ROI 가 전 고객군에서 음수를 띄고 있어 마케팅의 개선이 필요합니다.
      • 가장많이 팔린 제품군은 'Apparel', 'Nest', 'Office' 입니다.
      • 수-금-토-일 에 가장 많은 손님들이 방문했습니다
    • 질문 2
      • 저 성과 고객군에 대한 전략 개선: 이들에 대한 마케팅 효율을 분석하고 ROI를 개선할 수 있는 전략을 재구성해야 합니다. 쿠폰 반응도는 높기 때문에 이메일로 개인 할인 쿠폰을 많이 제공하여 회원수를 확보하는게 우선입니다.
      • 잠재성장 고객군 육성: 개인화된 쿠폰 및 묶음 상품이나 추가구매 할인 프로모션을 통해 구매를 유도하여 잠재성장 가능성을 실현해야 합니다. 추천하는 조합입니다. - Product_0894 구매하면 Product_0880 - Product_0915, 0916, 0917 은 세개묶어서 판매하면 좋겠다. - Product_0918,구매하면 Product_0917
      • 안정적 충성 고객군 유지 및 강화: 묶음 할인 이나 1+1 쿠폰을 주어 충성도 프로그램을 강화하여 꾸준한 구매를 장려하여 이들의 충성도를 더욱 공고히 하거나 맴버쉽 적립 방법을 사용할 수 있겠습니다. 추천하는 조합입니다. - Product_0976 구매하면 Product_0983
      • 고가치 VIP 고객군에 대한 관리: 맴버쉽 적립 비율을 높히는 방법이나 특별 쿠폰 등 차별화된 서비스를 제공해야 합니다. 이 고객군은 쿠폰을 제외한 마케팅의 반응률이 좋지 않습니다. 상품예측도 신뢰도가 떨어져 개인화 서비스를 제공해야합니다.
      • 5월 부터 8월에 잘 팔린 제품들의 재고관리에 용이해야하며 2월, 10월에 판매량이 저조하여 판매 물품 교채를 고려해야할 것 같습니다.
      • 매달 뿌리는 쿠폰의 수를 줄이던지 지급 쿠폰율을 조정하는 것이 좋아보입니다.

 

Last_project.Rev3.ipynb
1.09MB

프로젝트 후기
  • 군집화 해서 고개분석을 하는게 생각보다 재미있었고 Python에 다양한 라이브러리를 통해 공식을 쉽게 사용할 수 있다는 점을 알았다 시각화 자료와 통계 정보를 바탕으로 도메인 지식을 잘 활용하면 의미있는 결과를 낼 수 있다고 생각한다.
반응형