어쩌다데싸

추천시스템(Recommender System) 간단 정리 본문

Recommedation System

추천시스템(Recommender System) 간단 정리

엔팁 2021. 7. 16. 14:55

업무상 추천시스템을 공부해야 할 일이 생겼다.

영어로 된 추천시스템 관련 논문을 정리하라는 미션이 내려왔기에

하는 김에 여기에도 정리하려고 한다.

 

IT에서는 논문을 읽기 위해서라도 영어 공부 꾸준히 해야 하는 듯...

 

1. 추천시스템

추천 시스템은 정보 필터링 기술의 일종으로, 사용자가 좋아할 아이템을 '예측'하기 위한 시스템이다. 

유튜브에서 '알고리즘'이 나를 이끌었다던가, 넷플릭스에서 회원님이 좋아하실 영상을 본다던가 등

우리는 일상 속 많은 곳에서 추천시스템을 접하고 있다.

 

2. 추천시스템 방식

크게 Colloborative Filtering(CF)와 Content-based Filtering 방식이 있다.

출처 : Web Recommender System for Job Seeking and Recruiting

1) Content-based Filtering

콘텐츠의 속성에 기초해서 유사한 콘텐츠를 추천해주는 방식이다. 예를 들어 노래라고 하면 노래의 장르, 가수, 작곡가 등의 속성을 기반으로 유사도를 측정해서 유사한 다른 노래를 추천해주는 방법이다. 콘텐츠의 메타데이터에 중심을 두고, 콘텐츠의 특성만을 비교하기 때문에 사용자가 적은 초반에 적용하기 쉽다. 또한, 새로운 아이템이 들어와도 추천이 가능하며 설명도 쉽다는 장점이 있지만 아이템이 가진 속성만으로는 한계가 있기 때문에 과거에 주로 사용했던 방식이다.

 

2) Collaborative Filtering(CF, 협업필터링)

다른 유저의 정보를 사용해서 유저들의 관심사들을 자동으로 예측해주는 방법이다. 콘텐츠 기반 필터링은 아이템 정보에 주목했다면 협업 필터링은 많은 사용자들로 부터 얻은 정보에 포인트가 있다. 

CF는 최근접 이웃 기반(nearest neighbor based collaborative filtering)과 잠재요인(latent factor based collaborative filtering) 협업 필터링이 있다.

 

(1) 최근접 이웃 기반 협업 필터링(nearest neighbor based collaborative filtering)

최근접 이웃 방식은 다시 '사용자' 기반 협업 필터링과 '아이템' 기반 협업 필터링으로 나눌 수 있다.

 

- 사용자 기반 협업 필터링 (User-based Recommendation)

: 비슷한 성향을 가진 다른 유저가 구매한 상품을 추천하는 방식이다. 예를 들어, 내가 맥주와 땅콩을 사고 다른 유저가 맥주와 감자튀김을 샀다면 나에게 감자튀김을 추천해주는 식이다. 사용자와 사용자 간의 유사도를 기준으로 추천한다.

 

- 아이템 기반 협업 필터링 (Item-based Recommendation)

해당 아이템에 대한 사람들의 평가가 비슷한 아이템을 추천해준다.

콘텐츠 기반 필터링과 헷갈릴 수 있는데 콘텐츠 기반 필터링은 아이템의 속성에 포인트가 있다면

아이템 기반 협업 필터링은 아이템의 속성이 아닌, 사용자가 해당 아이템에 대해 어떻게 평가했냐에 포인트가 있다. 

예를 들어, 사용자 A, B, C, D 가 '블랙 위도우' 영화에 4, 5, 5, 4 점의 평점을 주고 '어벤져스' 영화에 5, 5, 4, 4를 줬을 때 평점 간 유사도를 바탕으로 '블랙 위도우' 영화를 본 사용자에게 '어벤져스' 영화를 추천하는 방식이다. 

 

일반적으로 사용자 기반에 비해 아이템 기반 CF가 더 성능이 좋다고 한다. 아래 사진을 보면 아이템 기반과 사용자 기반의 차이를 쉽게 이해할 수 있다.

 

출처 : https://takuti.github.io/Recommendation.jl/latest/collaborative_filtering/

 

(2) 잠재요인 기반 협업 필터링(latent factor based collaborative filtering)

행렬 분해를 기반으로 한 CF 방식이라고 하는데.... 문제는 행렬 분해가 뭔지를 모르겠어서 이건 따로 게시글을 만들어야겠다. 고등학생 때 수학 성적이 좋았던 것 치고 수학 울렁증이 심하다. 라떼는 문과생이어도 행렬을 배웠지만... 기억은 1도 안나서 다시 공부하고 있다. 이쪽 공부하면 선형대수학은 정말 필수인듯. 

 

 

요약해서 표현하면 아래 이미지와 같다.

 

추천시스템 정리

이제 잠재 요인 기반 협업 필터링 공부해야지.