추천 시스템에 대한 전반적인 설명
- 이 부분은 싸피 멘토링을 공통적으로 하면서 반복적으로 나오는 질문이라 정리해서 공유드려요. 전반적인 추천 시스템을 접하기 전에 한번 보시면 좋을 것 같아요
추천 시스템
- 알고리즘 관점
- item base
- user base
- collaborative filtering
- 그 이후엔 AI를 활용한 방법이 많이 나오고 있음. 이미지, 자연어 모두 활용하는 것
- item, user의 핵심은 추천할 물건들의 유사도 또는 유저의 유사도를 구하고, 그 구한 방법을 통해 제시해주는 것. 데이터가 얼마나 있는지에 따라 정하곤 함
- 예시
- 학습하는 주기 관점
- 배치 : 1시간, 하루 단위로 학습
- 배치 처리를 할 수 있는 것
- 데이터 웨어하우스(BigQuery, Redshift)
- Apache Spark에서 서버 띄워서 진행
- 파이썬 스크립트도 괜찮음. 어떤 방식이여도 상관은 없음
- 실시간 : 실시간으로 학습하는 것은 매우 어려운 일. 대부분 학습은 배치로 진행하고, 인퍼런스를 실시간으로 진행
- Python 프레임워크
- 회사의 데이터 조직과 개발 조직이 분리가 되어 있어서, 보통 FastAPI를 많이 선택
- Django는 어드민이나 프러덕트를 만들 때 주로 활용
- 재학습을 어떻게 해야할까
- 주기적으로 하는 방법(최근 1주, 최근 1달) : 이걸 많이 채택
- 성능이 낮아진 경우에 실행하는 방법
- 데이터가 없는 경우 어떻게 해야할지?
- 회사에선 데이터가 없으면 프로젝트를 진행하지 않음.
- 아마 프로젝트를 할 때 생각하는 내용일텐데, 이럴 땐 데이터를 직접 만드는 것도 방법. 실제로 투표 레이블링을 한다거나, 요즘은 ChatGPT를 통해 만들기도 함
- 데이터를 수집하기 위한 웹페이지를 만들고 사람들에게 이런 정보를 알려주시면 곧 추천을 해드릴게요!라고 할 수 있음
- 데이터가 없으면 간단하게 시작하는 것도 방법
- 추천 시스템을 위한 개인 정보 수집
- 콜드 스타트의 이슈
- 처음에 데이터가 없으면, 바로 추천하지 않고 큐레이션부터 진행함
- 그리고 나서 점진적으로 추천 모델을 만드는 방식
- 대부분의 사람들이 많이 좋아하는 것을 제시하는 것도 방법
- 모델 평가 방법
- 알고리즘 관점 : Precision, Recall 등의 지표가 상승되었나 확인
- 실제 배포 후 : 사용자가 얼마나 사용하는가를 알고리즘 관점으로 파악
- 머신러닝 시스템 디자인 패턴 중 평가를 참고
- 추천 시스템에 대한 자료
프로젝트 소개
- 6캔두잇
- 서비스명 : 팝콘
- 서비스 기능
- 영화 추천
- 나만의 포토 카드 앨범 : 추억을 저장
- 서비스 목표
- 고도화된 맞춤형 영화
- 개인 시청 기록, 영화 소장
- 고도화
- 추천 알고리즘
- 별점 기반
- PCA, 유사도 선택, 비지도 분류, word2vec
- 같은 감정선을 가지는 사람에게 추천하려고 함
- 행동 기반
- 환경 기반 : 큐레이션