[TIL]25.03.28| 팀 프로젝트

성소희·2025년 3월 28일

우리조의 팀 프로젝트로 선택한 도메인은 이커머스 데이터인 H&M 고객 & 매출 데이터였다.

📌 분석 흐름 요약

  • AGE 기준으로 Z-SCORE가 ±3을 넘는 1289개의 이상치를 제거했다.
    연령대별 마스킹 후 거래 데이터 + 상품 정보와 조인했다.

  • 모든 연령대 중 어느 연령대가 가장 매출 볼륨이 큰지부터 파악했다. => 예상대로 20대, 30대의 매출 볼륨이 컸다. => 내가 맡은 건 30대 세그먼트
    연령대별 채널별(온/오프라인) 매출 분석을 통해 어느 연령대가 어떤 채널에서 구매활동이 활발한지도 비교했고, 그중 가장 오프라인 매출이 높은 연령대의 경우 오프라인 DP 전략도 같이 진행하고자 했다. => 오프라인 매출이 가장 높은 연령대는 20대!

  • H&M은 너무 많은 상품들이 있다보니, 우선 연령대별 총매출별 인기 제품을 대분류 → 상품명으로 1,2위까지 구해봤다. = > garment_group_name 기준 -> prod_name까지 구함

  • →색상/그래픽 기준으로 필터를 3차로 만들어 인기 순위를 정렬했고, 1순위, 2순위 상품군에 해당하는 상품들이 뭔지 파악하고

  • 구매 볼륨이 큰 연령대의 경우 자주 구매하는 조합이 있을거라고 생각했고, 연령대별 추천 시스템에 적합한 연령대는 20~30대일거라고 생각하고 복수 상품 구매 필터링과 함께 Apriori 알고리즘을 적용하여 연령대별 추천 규칙을 도출해보고자 했다.
    => section_no기준 -> colour_group기준=> graphic appearance 기준으로 점점 세분화해서 필터링을 진행했다.
    => 내가 맡았던 파트인 30대 세그먼트에서 동일 상품을 2개 이상 구매한 사람을 먼저 필터링하고 pivot을 통해(One-hot encoding) 즉 고객x날짜x섹션 기준으로 구매 여부를 0/1로 처리한 basket을 만든 뒤, mixtend의 apriori()함수를 사용하고 min_support=0.02로 설정하여 30대 연령대에서 빈번하게 구매되는 조합을 추출하고자 했고, association_rules()함수를 통해 confidence, lift를 계산하여 유의미한 규칙 필터링을 했다.

30대 결과는...예상과 다르게 20~30대에서의 유의미한 규칙수는 0이었다.
(사진은 30대 기준)

아래는 Apriori를 돌렸을 때의 30대 데이터의 결과이다.

아래는 20대 결과도 가져왔는데 마찬가지로 유의미한 규칙은 0이었다.

반면에 기대하지 않았던 50대 이상에서 유의미한 규칙이 7개가 발견됐다..!

과정은 연령그룹만 다르고 다른 연령대와 동일하게 진행했는데
아래와 같은 결과가 나왔다!

⚙️ Apriori 적용 설정

  • min_support=0.02, metric='lift', min_threshold=0.3
  • 유의미한 규칙 필터 기준: lift ≥ 1.1, confidence ≥ 0.4

모두의 예상을 깨고 20~30대는 유의미한 연관 규칙이 전혀 도출되지 않았다.
온라인/오프라인 매출이 높은 연령대임에도 불구하고 구매 조합이 너무 다양하고 반복되지 않아서 Apriori가 작동되기 어려웠던 구조였던 거 같다. 아무래도 Apriori는 '빈번하게 함께 구매된 상품 조합'이 존재해야 의미 있는 규칙을 만들 수 있는데, 구매 조합이 다양하고 반복성이 낮은 20~30대 고객층에서는 빈번한 아이템 집합 자체가 거의 생성되지 않아 추천이 사실상 어려웠던거 같다!
즉, Apriori는 '같이 자주 사는 패턴'이 있어야만 작동하는 구조이기 때문에, 복수 구매가 적거나 다양성이 높은 고객군에서는 실효성이 떨어지는 것!

프로젝트 기간이 더 길었다면 이런 Apriori의 한계를 보완하기 위해 다음엔 콘텐츠 기반 필터링(Content-Based Filtering) 방식의 추천 시스템도 도입해보면 좋겠다고 생각했따. 이 방식은 고객이 과거에 선호하거나 구매했던 상품의 속성(예: 색상, 제품군, 섹션, 그래픽 등)을 기준으로 유사한 속성을 가진 상품을 추천해주는 방식이라, 복수 구매나 반복적인 패턴이 없어도 작동할 수 있다는 장점이 있다.

예를 들어, 30대 고객 A가 '베이지 컬러의 캐주얼 상의'를 자주 구매했다면, A가 아직 구매하지 않았지만 유사한 속성을 가진 '베이지 컬러의 캐주얼 셔츠' 등을 추천해줄 수 있다. 이는 개별 고객의 취향을 보다 잘 반영할 수 있고, 특히 젊은 연령대처럼 다양하고 단발성 구매가 많은 층에 적합한 방식이 될 수 있다.

50대 이상은 구매볼륨이 작아서 유의미한 규칙을 찾기 어려울 거라 생각했는데,
오히려 20~30대보다 취향과 소비 패턴이 고정되어 있어 연관 규칙 기반 추천이 가능했던 거 같다! 아마 lift나 confidence를 조절하면 유의미한 규칙이 더 나왔을지도!?
이번 알고리즘 사용을 통해 연령대에 따라 추천 시스템의 전략도 달라져야 한다는 걸 알게 됐다!

결과적으로, 이번 프로젝트를 통해 Apriori가 잘 작동하는 데이터 조건과 그렇지 않은 조건을 명확하게 구분해볼 수 있었고, 그에 따라 다양한 추천 방식의 필요성도 절실하게 느꼈다. 다음 분석에서 또 이커머스를 다루게 된다면 콘텐츠 기반 방식을 적용해보면 좋겠다고 생각했다.

프로젝트 기간이 짧았음에도 이 기간동안 새로운 알고리즘도 알게 됐고, eda를 간단히 경험해볼 수 있어서 의미있었다! 팀원들이 어떤식으로 코드를 짜는지도 알 수 있어 힘들었지만 얻는 게 많았던 기간이었다!

profile
매일 한 걸음, 데이터 분석 실무자로 성장하는 기록

0개의 댓글