[RecSys] Content-based Filtering과 Collaborative Filtering 개념
추천시스템 알고리즘은 가장 크게 Content-based filtering과 Collaborative filtering 2가지로 나누어진다. Content-based filtering은 user와 item의 정보를 이용해 추천에 활용하는 알고리즘을 말하며 Collaborative filtering은 user가 item에 부여한 평점과 같은 interaction 정보를 활용한 추천시스템 알고리즘이다. Collaborative filtering은 다시 memory-based method과 model-based method으로 나누어진다. 각 알고리즘의 분류는 아래 그림과 같다.

이제 각각 하나씩 자세히 알아보면,
1. Content-based Filtering(내용 기반 필터링)
Content-based filtering은 사용자가 어떤 내용의 아이템을 선호하는지를 나타내는 사용자 프로필과 아이템의 다양한 성질을 나타내는 특징을 추출한 아이템 특징과의 유사도를 통해 사용자가 좋아할 아이템을 추천하는 알고리즘이다.
만약 사용자 프로필과 아이템 특징이 아래와 같이 존재한다고 하자.
- 사용자1(장르: SF, 감독: A, 배우: AA) / 사용자2(장르: 코미디, 감독: B, 배우: AB)
- 아이템1(장르: SF, 감독: A, 배우: CC) / 아이템2(장르: 액션, 감독: C, 배우: AB)
Content-based filtering을 통해 사용자1이 선호할만한 아이템을 추천한다고 하면, 아이템 1과는 장르, 감독 총 2개의 요소가 일치하고 아이템2와는 아무런 요소도 일치하지 않기 때문에 아이템1을 추천한다. 이렇게 더 많은 요소가 일치하는 아이템을 추천한다.
여기서 아이템 특징은 영화의 경우에는 장르, 감독, 배우 등이 포함될 수 있고 책의 경우에는 작가, 장르, 출판사 등 다양한 정보를 포함한다.
사용자 프로필의 경우에는 사용자가 주로 봤던 상품, 구매했던 상품과 같이 사용자의 과거 행동 이력에 기반한 간접 지정형과 직접 사용자가 선호하는 아이템의 특징을 지정하는 직접 지정형이 있다. 예시로 넷플릭스의 경우 가입 후 선호하는 영화를 선택한다.
2. Collaborative Filtering(협업 필터링)
Collaborative filtering는 데이터를 축적하다가 예측을 수행할 때 데이터를 전부 사용하는 방법인 memory-based method(메모리 기반 방법)과 미리 시스템 내 축적되 데이터의 규칙성을 학습한 모델을 만들어두고 예측 시 만들어진 모델과 추천을 제공하고자 하는 사용자의 데이터만을 사용하는 방법인 model-based method(모델 기반 방법)으로 나누어진다.
1) Memory-based method(메모리 기반 방법)
Memory-based method는 추천받을 사용자와 선호도가 비슷한 사용자에 착안해 추천을 진행하는 사용자-사용자 메모리 기반 방법(user-user memory-based method)와 추천받을 사용자가 선호하는 아이템과 비슷한 아이템에 착안해 추천하는 아이템-아이템 메모리 기반 방법(item-item memory-based method)으로 나누어진다.
아래는 사용자-사용자 메모리 기반 방법에 대한 예시이다.
만약 추천받을 사용자 외에 서비스를 이용하는 사용자가 6명이라고 가정하자. 그리고 아이템은 2가지라고 한다면, 추천받을 사용자에게 아이템 1과 2 중에 추천할 아이템을 고르기 위해서는 우선 사용자 6명 중에 사용자와 유사한 아이템 선호도를 지닌 사용자를 찾아야한다. 만약 사용자 2, 3, 5번이 사용자와 비슷한 아이템의 선호도를 지닌다면 이 3명의 사용자가 아이템 1과 2 중에 어떤 아이템을 선호하는지를 확인한다. 여기서 아이템1을 선호한다고 하면 알고리즘은 사용자에게 아이템 1을 추천한다.
2) Model-based method(모델 기반 방법)
Model-based method는 클러스터링을 사용한 모델이나 회귀 문제 및 분류 문제로 rating을 직접 예측하는 모델, 토픽 모델을 사용한 모델, 행렬 분해를 사용한 모델 등 다양한 모델을 활용해 rating을 예측한다.
3) Memory-based method vs Model-based method
2가지 방법은 '추천에 걸리는 시간' 그리고 '운용성' 관점에서 각각 장단점이 존재한다.
우선 '추천에 걸리는 시간' 관점에서 보면 memory-based method는 예측 시 모든 데이터를 활용해 추천을 진행하기 때문에 시간이 오래걸리지만, model-based method는 미리 만들어진 모델을 활용해 추천을 진행하기 때문에 시간이 적게 걸린다는 장점이 있다.
다음 '운용성' 측면에서는 memory-based method는 데이터가 변경되어도 추천할 때마다 모든 데이터를 사용하므로 항상 최신 데이터를 반영해 추천을 진행할 수 있다는 장점을 지니고 있으나 model-based method는 변경된 데이터를 반영해 추천을 진행하려고 하면 새롭게 모델을 학습해야하기 때문에 시간과 비용 측면에서는 운용이 비교적 어렵다.