현재 추천 시스템에서 매우 흔히 사용되는 알고리즘으로 비슷한 사용자가 선택한 선택을 추천하는 사용자 기반 협업 필터링과 비슷한 아이템을 계산해 사용자가 선택했던 아이템과 비슷한 아이템을 추천하는 아이템 기반 협업 필터링이 대표적이다.
비슷한 사용자, 아이템 두 요소 모두 고려해 추천을 하고 싶기 때문에 모델을 설계하는 작업을 수행한다.
위에서 기술했듯이 비슷한 사용자를 찾고, 그 사용자들이 좋다고 평가한 레시피를 모두 합산하여 모든 레시피에 대한 점수로 0~1 사이의 값으로 리턴한다.
사용자 나이 : 0~1 (표준화 진행한후 사용)
사용자 성별 : 0, 1 (boolean)
사용자가 선호하는 레시피 번호 : [1, 2, 3, 4, 5]
위 3가지 데이터를 가지고 SVD 차원축소 후 벡터화 시킨다.
벡터화 된 사용자데이터 벡터를 코사인유사도를 사용해 유사한 사용자를 구하게 된다.
유사한 사용자 5명의 선호도를 가지고 레시피에 대한 점수로 리턴한다.
사용하고자 하는 재료를 넣으면 해당 재료와 가장 비슷하게 사용하는 레시피를 계산해 모든 레시피 점수를 0~1 사이로 리턴한다.
Word2Vec은 원래 주변 단어를 학습하고 다음 어떤 단어가 나와야하는지 예측하는 모델인데, 주변 단어를 학습하는 과정에서 벡터로 변환한다. 이 모델에서 변환하는 벡터를 가져와 사용한다.
레시피에서 사용하는 식재료를 학습시키면 함께 사용되는 식재료와의 관계도 고려해 벡터화 할 수 있다는 이점도 있다. (어떤 식재료와 자주 쓰이는 지와 같은 관계)