[파이썬] 추천 시스템
추천 시스템
추천 시스템이란?
- Selection, Search 로 부터의 한단계 진화라고 봄
- item 개수가 한명의 사용자가 한번에 열람 가능한 경우, 보통 사용자는 본인 기준에 의해 selection 함
- item 개수가 많아지면, 사용자는 원하는 query(질의어)로 search를 시도
- item 개도 많고, 원하는 질의(query)가 무엇인지조차 모를 때, recommendation이 매우 유용
- Amazon, Netflix 등이 recommendation으로 엄청난 성장을 이룸
userbased - CF (user-based Collaborative Filtering)
- 사용자가 유사도를 계산하여 다른 사용자의 리스트를 추천해주는 방식
- 아이템에 대한 사용자의 평가 데이터가 존재할 때 행렬을 구성하여 사용자간 유사도 계산
- 연산이 복잡함
- 신규 유저데이터는 사용 불가능
item- CF (item Collaborative Filtering)
- 아이템간의 유사도 계산, 사용자가 아이템을 조회할 때 사용(아이템간의 연관성)
- 연산이 복잡, 유저간 유사도는 구할 수 없다
Content-based Filtering
- item-based cf 와 마찬가지로 아이템간의 연관성을 분석하여 연관 아이템을 찾아 보여준다.
- CF 방식과 달리 아이템의 정보를 바탕으로 아이템의 정보를 바탕으로 아이템의 유사도를 분석하여 추천해준다.
- 주로 텍스트 정보를 바탕으로 형태소분석, 키워드 추출, 연관단어 검색의 과정을 거쳐 아이템을 추천하고, word2vec등을 사용하여 콘텐츠를 분석할 수 있다.
유사도(similarity)
- Euclidean distance, cosine, pearson 등 여러 수학적 유사도 계산 방법이 존재
- 유사도가 높은 사용자 집단에서 각 사용자들이 남긴 평점을 weighted sum 으로 계산하여 평점 예측
- 또는 해당 사용자의 평균 평점을 유사도가 높은 사용자 집단의 weighted 조정 평균과 더하여 평점 예측
개인화(personalization)
- 모두에게 동일한 item이 아닌, 각 개인의 성향에 맞는 item을 추천
- user-item rating 으로 Collaborative Filtering Algorithm, SVD 등이 사용됨