본문 바로가기

추천 시스템

[추천 시스템] Content based Filtering & Collaborative Filtering - Jungyu Ko

Recommend System이란?

특정 사용자가 관심을 가질만한 정보 (영화, 음악, 책, 뉴스, 이미지, 웹 페이지 등)을 추천하는 것입니다. 즉, 사용자의 선호도 및 과거 행동을 바탕으로 사용자가 흥미를 가질만한 콘텐츠를 제공하는 것입니다.

실생활에서 예시를 찾아보겠습니다. 대표적으로 유튜브 알고리즘을 예로 들 수 있습니다. 특정 영상을 시청하게 되면, 유튜브 알고리즘에 의해 해당 영상과 유사한 영상들이 추천에 등장하는 것을 알 수 있습니다. 예를 들어, 코미디 빅리그와 같은 영상을 시청하면, 한동안 유튜브의 영상은 코미디 빅리그의 영상으로 도배되는 것과 같은 경험을 알 수 있습니다. 유튜브 알고리즘뿐만 아니라 넷플릭스 알고리즘 또한 추천 시스템의 예로 들 수 있습니다. 

본 포스팅에서는 추천 시스템의 유형에 대해 알아보도록 하겠습니다.


Recommend System의 유형

추천 시스템은 크게 Content-based Filtering, Collaborative Filtering으로 나눌 수 있습니다.

결론부터 말씀드리자면 현재는 Content-Based Filtering보다 Collaborative Filtering이 주로 사용되고 있으며 두 방법을 섞는 방법, 딥러닝등을 활용한 추천 시스템이 사용되기도 하고 있는 형태입니다.

본 포스팅에서는 Content-Based Filtering과 Collaborative Filtering이 어떤 것인지에 대한 개념과 예시로 알아보도록 하겠습니다.

 

Content-Based Filtering

사용자가 특정 아이템을 선호하는 경우 그 아이템과 비슷한 content를 가지는 다른 아이템을 추천해주는 방식입니다. 이 때, 다른 사용자들에 대한 정보는 필요가 없으며 아이템의 특징으로만 추천을 하는 것입니다.

Content-Based Filtering 예시

사용자 A가 시청한 영화 A는 멜로, 로맨스와 같은 장르의 영화 입니다.

영화 B는 호러, 스릴러 영화이며, 영화 C는 멜로, 로맨스 영화입니다. 그렇다면 사용자 A에게 추천할 영화는 영화 B와 영화 C 중 무엇일까요?

영화 C를 추천해주는 것이 일반적일 것입니다. 

저의 주변을 보면, 마블영화를 좋아하고 공포영화를 보지 못하는 지인에게 컨저링 시리즈를 보자고 하면 안 본다고 하지만 22년 4월 개봉 예정인 닥터 스트레인지 2를 보러 가자 했더니 좋다고 하더라고요. 

이처럼 우리 주변에서 추천 시스템은 주변에서 흔히 예시로 볼 수 있습니다.

 

앞에서 요즘은 Content-Based Filtering이 잘 사용되지 않는다고 하였는데, 그 이유는 무엇일까요?

그 이유는 대표적으로 아이템을 설명할 수 있는 데이터 구축이 필요하기 때문입니다.

예를 들어, 닥터 스트레인지 2라는 영화 아이템을 설명할 수 있는 데이터를 구축해야하는데, 한 두 개가 아닌 엄청난 양의 데이터에 대한 metadata를 구축해야 합니다. 이러한 방법은 비용적으로 너무 많이 들기 때문에 점차 도태되었다고 볼 수 있습니다.

 

장점

  • 유저의 선호도에 대한 정보가 필요없으며 아이템 정보만으로 추천이 가능
  • 구현이 쉽다

단점

  • 모든 컨텐츠의 metadata 구축이 필요함

Collaborative Filtering

Collaborative Filtering이란 사용자의 행동, 선호도와 같은 많은 정보를 분석하고 다른 사용자와의 비슷함에 기초를 두고 사용자들이 무엇을 좋아할지를 예측하는 것입니다. 

Collaborative Filtering은 Memory-Based Filtering, Model-Based Filtering 방식으로 나뉠 수 있습니다.

본 포스팅에서는 Memory-Based Filtering 방법에 대한 개념을 설명하도록 하겠으며, Model-Based Filtering은 다음 포스팅에서 개념을 정리해보도록 하겠습니다.

 

1. Memory-Based Filtering

Memory-Based Filtering 예

1. Item-Based Filtering (A)

사용자 A, B, C, Recommended customer가 선호하는 아이템들의 목록이 있습니다.

이 때, 사용자별로 선호 아이템들을 살펴보니 사용자 B와 Recommended customer가 아이언맨, 토르, 헐크 (Item 1, 3, 5)가 겹치는 것을 볼 수 있으며, 사용자 B는 추가로 캡틴 아메리카 (item 7)을 선호하였습니다.

그렇다면 Recommended customer는 캡틴아메리카를 선호할 확률이 높기 때문에 캡틴 아메리카를 추천해 주는 방식입니다.

 

2. User-Based Filtering (B)

아이템들에 대해서 사용자들의 선호도를 기반으로 유사한 아이템을 찾아서 추천해주는 방법입니다.

사용자 A, C, D, E는 컨저링(Item 2)을 보았습니다. 다른 기록들을 살펴보니 사용자 A, C, D는 애나벨(Recommended Item)을 보았습니다. 사용자 A, C, D, E의 선호도를 바탕으로 사용자 E에게 애나벨 영화를 추천해주는 방식입니다.

 

그렇다면 Collaborative Filtering의 단점은 무엇일까요?

대표적인 Collaborative Filtering의 문제는 Cold Start Problem입니다.

 

Cold Start는 무엇일까요?

새로운 사용자가 넷플릭스에 가입했다고 가정해보겠습니다.

새로운 사용자는 어떠한 컨텐츠에 대한 선호도 정보가 없습니다. 그렇기 때문에 넷플릭스의 추천 알고리즘은 아무 정보가 없는 사용자에게 콘텐츠를 추천해 줄 수 없습니다. 마찬가지로 새로운 영화가 넷플릭스에 추가되었을 때도 마찬가지입니다. 

단순한 Collaborative Filtering의 방법은 Cold Start Problem이 발생합니다.

그 뿐만 아니라 새로운 사용자나 아이템이 추가될 때마다 데이터의 크기가 그만큼 기하급수적으로 증가하는 문제가 발생합니다. (Scalability)

 

장점

  • 아이템들에 대한 콘텐츠의 정보가 없어도 추천이 가능

단점

  • Cold Start
  • Scalability

마무리

유튜브, 넷플릭스의 추천 알고리즘으로 인해 추천 시스템은 현재 우리에게 친근하게 다가옵니다.

추천 시스템은 크게 2가지로 나눌 수 있습니다.

  1. Content-Based Filtering
  2. Collaborative Filtering
    1. Memory-Based Filtering
      • Item-Based Filtering
      • User-Based Filtering
    2. Model-Based Filtering
      • Matrix Factorization

본 포스팅에서는 Content-Based Filtering, Collaborative Filtering의 Memory-Based Filtering 기법에 대해 알아보았습니다. 다음 포스팅으로는 Model-Based Filtering 방법인 Matrix Factorization에 대해 알아보도록 하겠습니다.

 

긴 글 읽어주셔서 감사드리며, 추천 시스템에 대한 학습에 도움이 되었으면 좋겠습니다.

감사합니다.