Intro: 추천 시스템에 관심을 가지게 된 이유??
- 내가 원하는 제품을 추천하는 추천시스템을 만들고 싶다!! -
저는 개인적으로 옷?에 관심이 많습니다. 핀터레스트 속 스타일 등 다양한 코디들을 참고하고 제가 머릿속으로 그리고 있는 디자인을 다양한 온라인 쇼핑 앱에서 찾아 구매하고 있습니다.
제가 옷을 구매할때는, 1)원하는 느낌의 제품을 발견하면, 2)쇼핑 앱의 추천 시스템을 통해 비슷한 제품을 찾는 방식으로 구매하고 있습니다. 옷을 찾는 과정에서 저의 니즈에 맞는 제품들이 추천되지 않는 경우가 많았습니다.
이러한 경험을 통해 자연스럽게 "이 앱들은 어떤 알고리즘을 사용해서 제품을 추천할까?" 라는 궁금증이 생겼고, '내가 추천 알고리즘을 공부하여 직접 만들어 보며 내가 원하는 제품들을 찾을 수 있지 않을까?'라는 생각으로 공부를 시작하였습니다.
지금껏 공부했던 추천 시스템의 개념과 진행했던 간단한 프로젝트 등을 정리해보고, 이후 추가적으로 프로젝트를 하며, 관련 내용을 정리할려고 합니다.
1. 추천 시스템이란
"유저와 아이템의 주변 정보와 유저가 남긴 다양한 데이터들을 바탕으로, 유저가 선호할 아이템을 예측하여 유저의 의사결정을 돕는 서비스"
- 유저: 서비스를 이용하는 주체. (즉 추천을 받는 사람, ex: 쇼핑 앱 사용자)
- 아이템: 서비스에서 판매하거나 제공하는 대상 물품. (ex: 옷, 영화, 책 등)
- 유저가 남긴 다양한 데이터: 유저가 남기는 일련의 행동 기록. (ex: 클릭, 구매, 찜, 평가 등)
2. 비즈니스 속 다양한 사례들
1) E-commerce
- 유저의 행동 데이터를 기반으로 상품을 추천하여 매출을 향상시키는 효과를 가져온다.
- 사용자가 서비스를 지속적으로 이용하도록 유도하는 lock-in 효과를 만들어낸다.
- ex)
- 아마존: "이 상품을 구매한 고객이 구매한 다른 상품"과 같은 방식으로 관련 상품 추천
- 이베이: 유저의 관심사에 맞춘 개인화된 광고 및 타겟팅 제공
- 쿠팡: 사용자의 과거 구매 및 클릭 데이터를 기반으로 맞춤 상품 추천
2) 미디어 및 엔터테인먼트
- 사용자의 시청/청취 기록을 분석하여 개인화된 콘텐츠를 추천, 사용자 체류 시간을 늘리고 이탈률을 줄인다.
- ex)
- 넷플릭스: 시청 기록 기반으로 영화 및 TV 프로그램 추천
- 스포티파이: 사용자의 청취 데이터를 활용해 맞춤형 음악 플레이리스트 추천
- 유튜브: 클릭 및 시청 이력을 기반으로 개인화된 동영상 추천
3) 교육 (EdTech)
- 학습 데이터와 사용자의 학습 수준을 기반으로 개인 맞춤 학습 경로를 제공하여 학습 효율을 높인다.
4) 소셜 네트워킹
- 사용자의 행동 및 관계 데이터를 분석하여, 새로운 연결을 제안하고 플랫폼 참여를 높인다.
3. 추천 시스템에서 고려해야할 점.
1) 확장 가능성 (Scalability)
- 추천 시스템은 보통 서비스의 일부로 동작하며, 서비스의 자원(서버, 네트워크 등)과 특성에 영향을 받습니다.
- 사용자가 많아지거나 추천해야 할 아이템이 많아질수록 시스템 성능이 크게 저하될 수 있습니다.
- 복잡한 알고리즘이 정확도를 높여주더라도, 서비스 속도를 유지하기 위해 너무 무겁거나 느린 모델은 사용할 수 없습니다.
→ 적정한 정확도와 속도 간의 균형이 중요합니다.
2) 도메인 종속성 (Domain Dependency)
- 추천 시스템은 서비스 도메인에 따라 구조와 방식이 달라야 합니다.
ex:- 이커머스: 텍스트와 이미지 데이터를 활용한 상품 추천
- OTT 플랫폼: 비디오 콘텐츠 기반 추천
- 소셜 네트워크: 친구 추천이나 관계 기반 추천
- 각 도메인에 맞는 데이터 형태(이미지, 텍스트, 비디오 등)와 관계(유저-아이템 간 상호작용)를 고려해, 적합한 알고리즘과 시스템 구조를 설계해야 합니다.
3) 비즈니스 목표의 다양성
- 추천 시스템은 비즈니스 목표에 따라 설계 방향이 달라질 수 있습니다.
- CTR(Click-Through Rate): 클릭을 유도하는 데 초점
- CVR(Conversion Rate): 구매로 이어지는 추천 강조
- Diversity(다양성): 같은 유형이 아니라 다양한 추천 제공
- 여러 목표가 충돌할 수 있습니다.
- (ex: 클릭을 유도하려다 보면 다양성이나 구매 전환율이 낮아질 수 있음.)
4) 콜드 스타트 문제 (Cold-Start Problem)
- 신규 사용자나 아이템에 대해 상호작용한 데이터가 없으면 추천 시스템이 잘 작동하지 않는 문제입니다.
- ex: 신규 가입한 사용자는, 관심사나 행동 데이터가 없어서 적절한 추천을 제공하지 못함.
- 이 문제를 해결하기 위해 다양한 방법론이 고안되고 있습니다.
- 초기 기본 추천(Default Recommendations): 인기 상품을 추천
- 메타데이터 기반 추천: 아이템의 카테고리나 속성 사용
- 외부 데이터 활용: 사용자 프로필이나 소셜 미디어 데이터를 활용
5) No Clear Ground Truth (명확한 정답 부재 문제)
추천 시스템은 "명확한 정답(Ground Truth)"이 없는 경우가 많아, 모델 학습과 평가가 어렵습니다.
- 유저의 선호도는 주관적이고 동적임
- 유저의 선호는 시간에 따라 변하거나 맥락에 따라 달라질 수 있습니다.
- ex: 한 사용자가 평소에는 스포츠 용품을 선호하지만, 특정 시점에서는 선물용 아이템을 찾을 수도 있음.
- 유저 스스로 선호를 불분명하게 인지함
- 유저가 자신의 취향을 명확히 알지 못하는 경우가 많습니다.
- ex: "이런 걸 좋아할 줄 몰랐다!"는 감상을 주는 추천도 흔합니다.
- 다른 머신러닝 태스크와의 차이점.
- 이미지 분류처럼 고양이/개와 같은 명확한 라벨이 있는 태스크와 달리, 추천 시스템의 정답은 항상 명확하지 않습니다.
- 유저의 행동 데이터(클릭, 구매 등)가 유저 선호도의 대리 변수로 사용되지만, 이는 반드시 선호도를 정확히 반영하지 않을 수 있음.
- 모델 바이어스 문제
- "주니까 본다"는 현상이 발생할 수 있음.
- 추천 시스템이 특정 아이템을 추천하면, 사용자는 그것만 소비하게 되고 다른 선택지를 고려하지 않음.
- 결과적으로, 모델의 추천 결과가 유저의 행동 데이터를 왜곡할 수 있음.
- 이로 인해 시스템이 편향된 데이터를 기반으로 학습하게 되는 악순환이 발생할 수 있음.
4. 추천 시스템 파이프라인
추천 시스템은 단계별로 사용자에게 가장 적합한 아이템을 찾아주는 과정을 거칩니다.
이를 후보 생성(Candidate Generation), 순위 매기기(Ranking), 재정렬(Reranking)의 3단계로 나눌 수 있습니다.
1) 후보 생성 (Candidate Generation)
- 전체 아이템 중 관련성이 있을 것으로 예상되는 일부 후보군을 추려내는 단계입니다.
- 수백만 개의 상품 중에서 사용자의 관심사와 연관된 몇 백 개 정도로 좁히는 것이 목표입니다.
2) 순위 매기기 (Ranking)
- 후보 생성에서 추려낸 수백 개의 후보군을 유저와의 관련성 점수로 평가하여 정렬합니다.
- 점수 계산 시 고려 요소 ex:
- 유저의 선호도 (클릭/구매 이력)
- 아이템의 속성 (가격, 카테고리 등)
- 현재 맥락 (시간, 장소 등)
3) 재정렬 (Reranking)
- 순위를 매긴 결과를 다시 한 번 정리하여, 사용자에게 맞지 않거나 비즈니스 목적에 부합하지 않는 항목을 제거합니다.
- 목적에 따라 추가적인 조건을 적용:
- 사용자에게 너무 비슷한 항목 반복 추천 방지 (다양성 확보)
- 특정 카테고리나 프로모션 아이템을 우선순위에 두기 (비즈니스 목표 반영)
- 사용자에게 적합하지 않은 아이템 필터링 (연령 제한, 지역 제한 등)
'추천 시스템 > 이론' 카테고리의 다른 글
| 머신러닝 기반 추천 알고리즘 (1) | 2024.11.28 |
|---|---|
| 유사도 계산 (0) | 2024.11.27 |
| 컨텐츠 기반 필터링과 협업 필터링 (0) | 2024.11.27 |
| 고전적인 추천 알고리즘: 연관 규칙 기반 추천 (Association Rule Mining) (0) | 2024.11.26 |
| 고전적 추천 알고리즘 (0) | 2024.11.26 |