1. 대회 설명
- 목표: H&M 고객의 구매 이력을 기반으로, 향후 구매할 가능성이 높은 상품을 예측하여 개인화 추천 시스템 구축
- 문제 유형: 추천 시스템(Recommendation System)
- 데이터 배경
-> 고객 정보, 상품 정보, 거래 정보 등 대규모 이종 데이터
-> 시계열 성격을 포함하여 고객의 행동 패턴을 예측해야 함
2. 성능 평가 방식 이해
- 평가지표: MAP@12(Mean Average Precision at 12)
-> 고객별로 추천한 상품 중 실제 구매한 아이템이 상위 12개 안에 얼마나 포함되어 있는지를 평가
-> 순서가 중요한 랭킹 기반 지표
3. 데이터 전처리
3-1) EDA
-
거래 데이터 탐색
-> 전체 구조 확인
-> 일별 거래 수 시각화
-> 상위 인기 상품 확인
-
고객 데이터 탐색
-> 고객 수 및 정보 확인
-> 고객 연령 분포 확인
-
상품 데이터 탐색
-> 주요 특성 확인
-> 상품 계층 구조 이해
-
고객별 거래수 및 상품별 판매 수 분석
3-2) Data Cleansing
-
customer_id: 정수 매핑(메모리 최적화 및 처리 속도 향상)
-> 문자열로 된 customer_id를 정수로 변환하여 메모리 사용량 절감
-> 추후 submission 시 다시 문자열 ID로 변환할 수 있도록 매핑 정보 저장
-
날짜 전처리: t_dat 처리
-> 날짜를 숫자로 변환: 날짜를 정수로 표현하면 모델에서 처리하기 쉬움, 시계열적 관계 분석을 위한 기반
-> 날짜를 주차로 변환: 일간 데이터보다 안정적, 래킹 피처, 최근 주간 인기상품 계산 등에 사용
-
데이터 타입 변환: 메모리 최적화
-> 주요 수치형 컬럼의 dtype을 낮은 비트수로 변환
-> 메모리 사용량 및 학습 속도 개선 효과
3-3) Feature Engineering
- 고객 기반:연령, 구매 채널, 취향 등 인구통계적 성격 반영
- 상품 기반: 가격, 판매 수량, 반복 구매 여부
- 상호작용 기반: 고객, 상품간 취향 매칭. 계칭 선호 비율
- 시간 기반: 최근 트렌드, 주간 변화 포착
4. 모델링
4-1) 모델
- 룰 기반 추천 시스템(Rule-based Recommendation)
- 2가지 전략 조합: 고객별 최근 구매 상품 기반 추천 + 전체 고객 공통 인기 상품 기반 보완 추천
4-2) 데이터 분할
- 모델 학습이 없어서 명시적인 train/test 분할 없음
- week_number == 104를 테스트 기준 주간으로 간주하고, 이 주차 전까지의 데이터를 피처 생성 및 통계 계산에 활용
- 시간 기반 분할(Time-aware split) 구조
4-3) 하이퍼파라미터 튜닝
- ML 모델이 아니라 규칙 기반이므로, 명시적 하이퍼파라미터 없음
- 다만 implicit하게 일부 파라미터들이 결정되어 있음
-> 고객별 최근 구매 사용 여부 (recent_customer_articles)
-> 보완용 인기 상품 Top-N 개수 (top 12)
-> 추천 리스트 길이 (12개 고정)
4-4) 최종 성능
5. 정리(Lesson & Learned)
- 복잡한 머신러닝 모델 없이도, 고객의 최근 구매 이력과 전체 인기 상품만을 활용한 룰 기반 추천 시스템으로 준수한 성능을 보일 수 있다는 것을 확인함
- 추천 시스템에서는 복잡한 모델보다도, 고객 행동 패턴을 잘 반영한 피처와 추천 전략이 성능을 좌우할 수 있다는 점을 실감함
- 다양한 계층 구조 피처, 시간 기반 래깅 피처, 가격 민감도 등 풍부한 도메인 기반 피처 엔지니어링이 핵심 경쟁력임을 확인함
- customer_id를 정수로 인코딩하고, 날짜를 주차 단위로 변환하는 등의 데이터 정제 전략은 대용량 데이터 처리 시 효율성 확보에 매우 유효하다는 점을 확인함
- 전체적으로 추천 시스템을 처음 접하는 입장에서 룰 기반 베이스라인 구성, 시계열 전처리, 도메인 기반 피처 설계의 중요성을 체감할 수 있는 좋은 학습 사례
- 다만, 이번 과정에서는 데이터셋 용량이 커서 Google Colab 환경에서는 RAM 초과, 다운로드 실패 등으로 인해 결과 확인에 어려움이 있었음, 실습을 완전히 재현하기 위해서는 고사양 환경이 필요함
-> 동일한 환경 내에서 데이터를 더 효율적으로 처리하는 것이 중요하므로, 데이터 타입을 바꾸는 것부터, 불필요 데이터를 삭제하거나, 저장 형식을 바꾸는 등의 대처법에 대해 연구할 필요성이 있다고 판단됨
H&M Personalized Fashion Recommendations