본문 바로가기

DEVELOP_NOTE/ML

컨텐츠 기반 추천 vs 협업 필터링

최근, 머신러닝이 활용되는 분야 중,  어떻게 보면 가장 많은 빈도로 활용되고있는 추천 시스템에 대해서 정리해보려 한다.

 

추천 시스템이란?

간단하게 말하자면, 사용자의 취향이나 필요성을 파악해서 그에 맞는 아이템을 추천해주는 시스템이다. 넷플릭스에서 볼 영화 추천받거나, 쇼핑몰에서 살 물건 추천받는 거라고 생각하면 이해하기 쉬울듯하다.

검색과는 약간의 차이가 있는데, 검색이 사용자가 직접 구하고자 하는 내용을 찾는 행위라면, 추천시스템은 사용자가 찾기전에 가장 유용할 것으로 예상되는 정보를 먼저 제시하는 개념이다.

 

 

 

이런 추천 시스템은 수 많은 방법론을 가지고 있는데, 그 중 가장 대표적으로 두 가지 방법론으로 나눌 수 있다.

바로 '컨텐츠 기반 추천'과 '협업 필터링'이라는 방법이다.

추천시스템 방법론의 종류

 

 

가장 대표적인 고전 방법론인 "컨텐츠 기반"추천과 "협업 필터링"을 비교해보자.

구분 컨텐츠 기반(content-based) 협업 필터링(Collaborative Filtering)
Concept "스파이더맨에 4.5점을 부여한 유저는 타이타닉보다 캡틴 마블을 더 좋아할 것이다."
→ 사용자가 과거에 좋아했던 아이템을 파악하고 그 아이템과 비슷한 아이템을 추천

"유저 A와 B가 아이템 'I'에 대해 비슷한 평가를 내렸다면,

유저 A가 선호하는 다른 아이템인 'J'에 대해서도 유저 B가 비슷한 선호도를 가지고 있지 않을까?"

세분화   neighborhood method (예.KNN)
아이템 사이 또는 유저사이의 관계를 계산하는것에 초점을 맞추는 방법론으로 동일한 아이템에 유사한 평가를 내린 유저들은 이웃이 됨
  Latent factor model (예.Matrix Factorization)
user의 item평가에서 추출된 20~100개의 latent factor을 활용하여 유저와 아이템을 함께 특성화(feature extraction)하는 방법

장점 1) 다른 유저의 데이터가 필요하지 않다.
2) 추천할 수 있는 아이템의 범위가 넓다
--> Unique, New, Unpopular 아이템 모두 추천 가능
3) 추천하는 이유를 제시할 수 있다.
--> 아이템의 Feature로 컨텐츠 분석 가능
--> 특정 feature가 추천의 이유가 됐다고 설명가능
---> 해당 유저가 좋아했던 아이템을 관찰하면, 추천결과를 이해할 수 있음
 
단점 1) 적절한 features를 찾기가 어렵다
--> 영화, 사진, 음악, 뉴스(텍스트) 등 수많은 Feature들에서 적절한 조합을 찾는것이 어렵다.

2) 새로운 유저를 위한 추천이 어렵다.
--> User Profile이 존재하지 않거나 데이터가 매우 부족하다.

3) 선호하는 특성을 가진 항목을 반복 추천한다.
--> Overspecialization
--> 유저의 다양한 취향 반영이 어렵다.
--> 유저 프로필외 추천 불가
 
Architecture
 
활용예시 Pandora(음악사이트)
  • 신곡 출시 → 음악을 분석하여 장르, 비트, 음색 등 400여 항목 체크 → Features Extraction
  • 유저로부터 'Like'를 받은 음악의 특생과 해당 유저의 profile 준비 → Profile learner
  • 음악의 특징과 사용자 프로필을 바탕으로 선호하는 음악 추천 → Filtering componen
 
중요한 점
  • 컨텐츠의 내용을 분석하는 아이템 분석 알고리즘
    • Clustering, Machine Learning, TF-IDF 등 활용
  • 추천 시스템의 성능을 높일 수 있는 적절한 컨텐츠(feature)사용
    • 영화추천을 위해 효과적인 영화정보 활용
 


첫 번째 '컨텐츠 기반 추천'

이 방법은 사용자가 과거에 좋아했던 아이템의 내용을 분석해서, 그와 비슷한 아이템을 추천해주는 방식이다.

예를 들어, '인셉션'이라는 영화를 좋아했다면, 이 영화의 특징(감독, 배우, 장르 등)을 분석해서 비슷한 특징을 가진 다른 영화를 추천해주는 방법이다.

이 방법의 장점은 새로운 사용자가 왔을 때도, 그 사용자의 특정 아이템에 대한 선호도만 알면 추천을 해줄 수 있다는 점이다.

하지만 단점도 있는데, 사용자가 과거에 좋아했던 아이템과 비슷한 아이템만 추천해주기 때문에, 새로운 취향을 발견하기 어렵다.

두번째, '협업 필터링'

이 방법은 사용자와 아이템 간의 상호작용을 기반으로 추천을 해주는 방식이다.

'사용자 기반 협업 필터링''아이템 기반 협업 필터링' 두 가지 방법이 있는데, 사용자 기반 방법은 사용자 간의 유사도를 계산해서, 비슷한 취향을 가진 다른 사용자가 좋아하는 아이템을 추천해주는 방식이고, 아이템 기반 방법은 아이템 간의 유사도를 계산해서, 사용자가 좋아하는 아이템과 비슷한 다른 아이템을 추천해주는 방식이다.

예를 들어, 당신과 비슷한 영화 취향을 가진 사람이 '인터스텔라'를 좋아했다면, '인터스텔라'를 당신에게 추천해주는 방식이다.

이 방법의 장점은 사용자의 새로운 취향을 발견할 수 있다는 점이다. 과거에 좋아하지 않았던 아이템이라도, 비슷한 취향을 가진 다른 사용자가 좋아했다면 그 아이템을 추천해줄 수 있기때문이다.

하지만 이 방법도 단점이 있는데, 새로운 사용자나 새로운 아이템에 대한 추천이 어렵다는 점이다. 이를 '콜드 스타트 문제'라고 부르는데, 사용자나 아이템에 대한 정보가 충분하지 않을 때 추천의 정확도가 떨어지는 문제를 말한다.