상세 컨텐츠

본문 제목

[캐글 필사] H&M Personalized Fashion Recommendations

캐글 필사

by pjhhs-data 2025. 9. 14. 22:02

본문

1. 문제 & Metric 파악

1) 대회 배경, 설명에 대한 이해

H&M이 제안하는 대회로

거래 데이터 + 고객 데이터 + 제품 데이터(텍스트·이미지 포함)를 활용해 추천 시스템을 만드는 과제이며, 단순한 판매 증대뿐 아니라 지속가능성(반품·탄소 배출 감소)까지 고려하는 것이 핵심이다.

 

2) 데이터에 대한 기본적인 이해

 

  • images/
    • 각 article_id에 해당하는 이미지 폴더
    • article_id의 앞 3자리 숫자를 기준으로 하위 폴더에 배치됨
    • 모든 상품(article_id)에 이미지가 있는 것은 아님
  • articles.csv
    • 각 article_id별 상세 메타데이터 (예: 상품 속성, 카테고리 등)
  • customers.csv
    • 각 customer_id별 메타데이터 (예: 고객 속성, 나이, 지역 등)
  • sample_submission.csv
    • 정답 제출 시 따라야 할 예시 제출 파일 (형식 확인용)
  • transactions_train.csv
    • 훈련 데이터
    • 고객별 구매 이력(날짜, 상품, 기타 부가 정보 포함)
    • 동일한 상품을 여러 번 구매한 경우 중복 행으로 나타남

 

 

3) 평가 Metric에 대한 이해

Mean Average Precision @ 12 (MAP@12)

추천 시스템이나 검색 시스템에서 자주 쓰이는 정밀도 기반 평가 지표이다. H&M 대회에서 이 지표를 쓰는 이유는, "고객별로 최대 12개의 추천"을 했을 때 얼마나 실제 구매와 잘 맞는지를 평가하기 위함이다.


1. 기본 개념

  • Precision(정밀도): 내가 추천한 것 중 실제로 맞은 비율.
  • Average Precision (AP): 고객별로 추천한 리스트 안에서, 정답이 나온 순간까지의 precision을 누적 평균한 값.
  • Mean Average Precision (MAP): 모든 고객에 대해 AP를 계산한 뒤, 그걸 평균낸 값.
  • MAP@12: 고객당 최대 12개의 추천만 본다. 즉, 고객별 예측 TOP-12까지만 평가에 반영된다.

2. 수식 설명

여기서

  • : 고객 수
  • : 고객 U에 대한 평균 정밀도 (최대 12개 추천 기준) 

 

  • : 고객 u의 실제 구매 수 (ground truth 개수)
  • P@k(u): 순위 kk까지의 precision
  • : 순위 kk의 추천 아이템이 실제 구매에 포함되면 1, 아니면 0

3. 예시로 이해하기

👉 어떤 고객의 실제 구매: {A, B, C}
👉 모델 추천(12개 중 앞 5개만 예로): [A, D, B, E, C]

  • 순위 1 (A) → 맞음 → Precision@1 = 1/1 = 1.0
  • 순위 2 (D) → 틀림 → Precision@2 = 1/2 = 0.5 (맞은 건 여전히 1개뿐)
  • 순위 3 (B) → 맞음 → Precision@3 = 2/3 = 0.667
  • 순위 4 (E) → 틀림 → Precision@4 = 2/4 = 0.5
  • 순위 5 (C) → 맞음 → Precision@5 = 3/5 = 0.6

Average Precision(AP@12) = (1.0 + 0.667 + 0.6) / 3 = 0.756
(정답 3개(A,B,C)에 해당하는 precision만 평균)

다른 고객도 같은 방식으로 계산 → 전체 고객에 대해 평균 → MAP@12 완성.


4. 핵심 요약

  • 고객당 최대 12개 추천만 평가.
  • 추천한 순서가 중요하다(정답을 앞에 두면 더 높은 점수).
  • 모든 고객의 평균 성능을 본다.

 

2. EDA

'index_name'별 상품의 개수

 

 

 

고객의 나이 분포 시각화

 

 

평균가격이 높은 제품 5가지의 평균 가격 변화

 

👥 고객 특성

  • 연령대: 20~30대가 주요 고객층으로 확인되었습니다. 젊은 층이 핵심 소비층을 형성하고 있으며, 이는 브랜드가 트렌디하면서도 실용적인 제품을 제공해야 한다는 점을 시사한다.
  • 멤버십: ACTIVE 멤버의 비중이 높아 충성도 있는 고객이 많음을 알 수 있습니다. 이는 브랜드 차원에서 멤버십 혜택을 적극 활용하면 장기 고객 유지에 효과적일 수 있다는 의미.
  • 뉴스레터 구독: 뉴스레터 미구독자가 다수를 차지하고 있으나, 정기 구독자 역시 무시할 수 없는 규모이다. 즉, 아직 구독하지 않은 고객을 유입시키는 동시에, 이미 구독 중인 고객에게는 개인화된 콘텐츠를 제공하여 브랜드 경험을 강화할 필요가 있다.

👗 상품 특성

  • 제품군: Trousers, Dress와 같은 베이직 아이템의 인기가 높습니다. 고객들은 유행에 민감하기보다 일상적으로 착용할 수 있는 실용적인 제품을 선호한다고 볼 수 있다.
  • 색상: Black, Dark Blue 등 무난한 색상이 주로 선택되고 있습니다. 이는 고객들이 튀는 색상보다는 활용도 높고 쉽게 매치 가능한 톤을 찾고 있음을 보여준다.

📊 거래 패턴

  • 기간별 집중도: 거래량은 6월과 10월, 특히 월초와 월말에 집중되는 경향을 보였습니다. 이는 시즌별 수요 변화나 프로모션, 세일 이벤트가 고객 구매에 큰 영향을 미치고 있음을 시사한다.
  • 따라서 특정 시즌이나 이벤트 시점에 맞춘 마케팅 캠페인 및 재고 운영 전략이 중요하다.

💰 가격대

  • 저가 제품 위주로 소비가 몰려 있습니다. 대다수 고객은 합리적인 가격대에서 쇼핑을 즐기며, 고가 제품은 일부 소비자층에서만 선택되고 있다.
  • 이는 브랜드가 대중성을 유지하면서도 프리미엄 라인업을 보완하는 전략을 병행할 수 있음을 보여준다.

🏬 구매 채널

  • 오프라인 매장에서의 거래가 압도적으로 많습니다. 이는 해당 브랜드가 여전히 매장 경험 중심의 성향을 강하게 가지고 있음을 의미한다.
  • 온라인 쇼핑의 성장세에도 불구하고, 오프라인 채널은 고객 신뢰와 브랜드 경험 제공 측면에서 핵심적인 역할을 하고 있다.

 

 

3. Notebook 필사

가장 많은 수의 vote를 받은 Notebook을 선정했다.

선정한 Notebook의 링크

https://www.kaggle.com/code/vanguarde/h-m-eda-first-look

 

H&M EDA FIRST LOOK

Explore and run machine learning code with Kaggle Notebooks | Using data from H&M Personalized Fashion Recommendations

www.kaggle.com

 

1️⃣ 모델 접근 방식

두 가지 전략을 조합했다:

  1. 고객별 최근 구매 상품 기반 추천
    • 각 고객이 최근에 구매한 상품을 바탕으로 다시 추천한다.
    • 패션 산업에서는 재구매나 유사 상품 구매가 빈번히 발생하기 때문에, 고객의 최신 구매 패턴은 강력한 힌트가 된다.
  2. 전체 고객 공통 인기 상품 기반 보완 추천
    • 모든 고객의 구매 이력을 합산해 가장 인기 있는 상품을 산출한다.
    • 고객 개인의 구매 이력이 충분하지 않거나, 최근 구매 기록이 부족할 때 이를 보완해준다.

👉 즉, 개인화 추천 + 글로벌 인기 상품 추천을 혼합해 안정적인 결과를 도출하도록 설계했다.


2️⃣ 데이터 분할 전략

머신러닝 모델 학습이 없기 때문에 명시적인 train/test 분할은 적용하지 않았다. 대신, 시간 기반 분할(Time-aware split) 구조를 채택했다.

  • week_number = 104: 테스트 기준 주차로 설정
  • 104주차 이전 데이터: 피처 생성 및 통계 계산에 활용

즉, 미래 데이터를 참조하지 않도록 시간 축을 고려한 평가 방식을 도입하여 실제 상황과 유사하게 시뮬레이션했다.


3️⃣ 하이퍼파라미터와 암묵적 설정값

규칙 기반 모델에는 일반적인 의미의 하이퍼파라미터 튜닝 과정이 존재하지 않습니다. 그러나 몇 가지 암묵적인 파라미터 설정이 있었다:

  • recent_customer_articles: 고객별 최근 구매 이력을 추천에 반영할지 여부
  • Top-N 인기 상품 개수: 보완 추천으로 활용할 인기 상품 개수 (실험에서는 Top-12)
  • 추천 리스트 길이: 최종적으로 고객별 12개의 상품을 추천 (대회 평가 지표 MAP@12에 맞춰 12개 고정)

이러한 요소들은 명시적 튜닝은 아니지만, 결과적으로 추천 품질에 직접적인 영향을 미쳤다.


 

4. Lesson Learned

 

1️⃣ 데이터와 시간 축의 중요성

  • 데이터를 단순히 섞어서 평가하면 실제 상황과 맞지 않을 수 있다.
  • 이번 프로젝트에서는 시간 기반 분할(Time-aware split)을 적용하여, 과거 데이터를 기반으로 미래를 예측하는 구조를 만들었다.
  • 이를 통해 현실적인 시뮬레이션이 가능했고, 추천 시스템 평가에서 시간 축을 고려하는 것이 얼마나 중요한지 다시 확인할 수 있었다.

2️⃣ 최근 구매 이력의 강력함

  • 고객별 최근 구매 상품은 추천 성능에 있어 매우 강력한 신호로 작용했다.
  • 패션 리테일에서는 재구매나 유사한 스타일 구매가 자주 발생하기 때문에, 최근 구매 이력을 활용하는 전략이 효과적이었다.
  • 이는 추천 시스템 설계 시 개인화 요소(personalization)가 핵심임을 보여줍니다.

3️⃣ 인기 상품의 보완적 역할

  • 모든 고객이 충분한 구매 이력을 가지고 있는 것은 아니다.
  • 따라서 전체 고객 공통 인기 상품을 활용해 보완하는 전략이 필요했다.
  • 인기 상품은 개인화가 부족한 경우에 안정적인 추천 품질을 제공해주는 fallback 역할을 해주었다.

4️⃣ 다음 단계로의 확장 가능성

  • 룰 기반 시스템은 출발점일 뿐이며, 더 나은 성능을 위해 다양한 확장이 가능합니다.
    • 머신러닝 기반 모델: LightGBM, XGBoost 등을 활용한 예측
    • 텍스트 데이터 활용: 상품 설명 기반 임베딩을 통한 NLP 적용
    • 이미지 데이터 활용: CNN 등을 활용한 상품 이미지 특징 추출
    • 하이브리드 추천 시스템: 여러 소스를 결합한 종합적인 모델

관련글 더보기