요즘 기업들의 추천 시스템 알고리즘은 완전히 공개되지는 않았지만, 어찌보면 나 자신보다 추천 알고리즘이 내 취향을 잘 알고있다는 생각이 든다.
그래서 미니 프로젝트의 주제로 추천 시스템을 선정했다. 추천시스템에 대한 공부 내용과 프로젝트 진행 결과를 적어봐야겠다:)
📌 추천시스템의 중요 용어: 사용자(User)와 상품(Item)
📌 특정 사용자가 좋아할 상품을 추천 or 비슷한 상품을 좋아할 사용자를 추천
📌 추천시스템은 User가 좋아하는 것을 정확히 모르지만 좋아할 것 같은 Item을 추천해줌
📌 기본적으로 생각하는 수집된 데이터를 기반으로 유사도를 계산해서 추천하는 알고리즘. 이때, 책이라면 책의 제목, 장르, 출판일등의 속성과 사용자의 과거 이력등의 프로필 정보등을 활용.
한마디로 정리하자면 " 사용자 A가 아이템 c에 관심이 있었다면 미래에도 이 아이템에 관심이 있을 테니, c와 비슷한 다른 아이템을 추천하자!" 이다.
내가 <언어의 온도>라는 책을 읽었다면, 이 책과 비슷한 책 소개, 저자, 장르를 가진 책을 추천해주는 것이다. 이 때 사용하는 방법이 유사도를 구하는 것이다. <언어의 온도>와 유사도가 높은 책을 추천해주는 것이다. 이 때 유사도를 구하는 방법은? 정말 많다.
컨텐츠 기반 필터링은 TF-IDF, Word2Vec(NLP에서만 사용 되는 방법)와 같은 Feature Extraction 방법론이 사용된다.
추출 된 Feature를 통해 아이템 간의 유사도는 코사인 유사도, 유클리어드 유사도, 자카드 유사도, 피어슨 상관관계를 통해 측정된다.
유사도 함수들을 통해 각각 순위를 매긴 후 정렬을 한다. 보통 많이 쓰는 것은 코사인유사도이다.
비슷한 성향/취향을 가진 다른 유저가 좋아한 아이템을 현재 유저에게 추천하는 것!
유저 A와 유저 B 모두 같은 아이템에 대해 비슷한/같은 평가를 했다
이때, 유저 A는 다른 아이템에도 비슷한 호감 나타냄
따라서 유저 A, B의 성향은 비슷할 것이므로 다른 아이템을 유저 B에게도 추천
컨텐츠 기반 필터링, 협업 필터링 모두 장단점을 가지고있다. 이 때 두가지 방법을 모두 이용한 하이브리드 시스템을 이용한다. 두 가지 알고리즘을 모두 적용하여 아이템마다 가중평균을 구해 랭킹을 매기는 방법, 점 데이터와 아이템 프로필을 조합해 사용자 프로필을 만들어 추천하는 방법 등 다양한 기법이 있다. 실제로 넷플릭스는 협업 필터링을 사용해 유사한 사용자간의 시청/검색 기록을 비교할 뿐만 아니라, 컨텐츠 기반 필터링을 사용해 사용자가 높게 평가한 영화의 특징을 공유하는 영화를 제공한다고 알려져 있다.