이커머스 추천에 사용되는 feature 예시
기본적인 사용자 정보:
# 사용자 프로필 정보
user_profile = {
'user_id': 'user_12345',
'age_range': '30-34',
'gender': 'F',
'location': 'Seoul',
'membership_level': 'wow', # 와우 멤버십 여부
'signup_days': 730 # 가입 후 경과일
}
사용자의 쇼핑 행동 관련 피처:
# 쇼핑 행동 피처
shopping_behavior = {
'avg_monthly_spend': 250000, # 월평균 구매금액
'frequent_categories': [ # 자주 구매하는 카테고리
('baby', 0.4),
('grocery', 0.3),
('fashion', 0.2)
],
'price_sensitivity': 0.8, # 가격 민감도 (높을수록 할인에 민감)
'browse_time_pattern': { # 주요 쇼핑 시간대
'morning': 0.2,
'afternoon': 0.3,
'evening': 0.5
}
}
상품의 기본 정보:
# 상품 메타데이터
product_metadata = {
'product_id': 'prod_789',
'category_hierarchy': [
'fashion',
'women',
'dress',
'summer_dress'
],
'brand': 'ZARA',
'price': 39900,
'is_rocket': True, # 로켓배송 여부
'seller_rating': 4.8, # 판매자 평점
'available_sizes': ['S', 'M', 'L']
}
상품의 성과 지표:
# 상품 성과 지표
product_performance = {
'sales_rank': { # 카테고리 내 판매 순위
'overall': 123,
'summer_dress': 5
},
'conversion_rate': 0.15, # 구매전환율
'review_metrics': { # 리뷰 지표
'avg_rating': 4.5,
'review_count': 1280,
'positive_ratio': 0.92
}
}
사용자-사용자 협업 필터링 점수:
# 사용자 기반 협업 필터링 점수
user_cf_scores = {
'similar_users': [ # 유사한 사용자들
('user_789', 0.92), # 92% 유사
('user_456', 0.87), # 87% 유사
],
'category_preferences': { # 유사 사용자들의 카테고리 선호도
'summer_dress': 0.85,
'sandals': 0.72,
'sunglasses': 0.65
}
}
상품-상품 협업 필터링 점수:
# 상품 기반 협업 필터링 점수
item_cf_scores = {
'bought_together': [ # 함께 구매된 상품
('prod_123', 0.85), # 85% 연관성
('prod_456', 0.76) # 76% 연관성
],
'view_to_view': [ # 함께 조회된 상품
('prod_234', 0.92),
('prod_567', 0.88)
],
'cart_to_cart': [ # 함께 장바구니에 담긴 상품
('prod_345', 0.95),
('prod_678', 0.89)
]
}
사용자와 상품 간의 상호작용을 나타내는 피처:
# 상호작용 피처
interaction_features = {
'explicit_feedback': { # 명시적 피드백
'rating': 5, # 별점
'review_text': '좋아요', # 리뷰 내용
'size_feedback': '정사이즈' # 사이즈 피드백
},
'implicit_feedback': { # 암묵적 피드백
'view_count': 3, # 조회수
'cart_add_count': 1, # 장바구니 추가 횟수
'wish_list': True, # 찜하기 여부
'view_duration': 180, # 상품 페이지 체류시간(초)
'click_sequence': [ # 클릭 시퀀스
'image_zoom',
'size_chart',
'review_section'
]
}
}
시간에 따른 변화를 포착하는 피처:
# 시간적 문맥 피처
temporal_features = {
'recent_behavior': { # 최근 행동 (7일)
'viewed_categories': [
('dress', 10), # 드레스 10회 조회
('shoes', 5) # 신발 5회 조회
],
'search_keywords': [ # 최근 검색어
'여름원피스',
'샌들'
]
},
'seasonal_patterns': { # 계절성 패턴
'last_summer_purchases': [
'dress',
'sandals',
'sunscreen'
],
'category_seasonality': {
'summer_dress': 0.9, # 여름 시즌 연관성
'winter_coat': 0.1
}
}
}
이러한 피처들은 각각의 특성에 맞게 다르게 관리됩니다:
이러한 피처들을 효과적으로 활용하기 위한 핵심 전략들이 있습니다:
이러한 피처들을 체계적으로 관리하면서, 지속적인 A/B 테스트를 통해 각 피처의 효과를 검증하고 개선해나가는 것이 중요합니다. 특히 협업 필터링 점수는 주기적으로 재계산되면서도 실시간 피드백을 반영할 수 있는 구조로 설계되어야 합니다.