데이터사이언스/추천시스템

추천 시스템 - 컨텐츠 기반 필터링이란? (CBF)

ghtis1798 2021. 1. 6. 15:19

컨텐츠 기반 필터링

코로나로 인해 오프라인보다는 온라인 구매가 더 많아지고 있습니다.

온라인 마켓의 장점은 '시간과 공간'에 제한되지 않는다는 것 같습니다.

문을 열고 닫는 시간도, 물건을 진열한 매장도 필요 없으니까요.

또한 사용자에게 구매할 가능성이 높은 제품을 '추천'해 줄 수도 있습니다.

이번 포스팅에서는 추천 시스템을 구현하는 방법 중 하나인 컨텐츠 기반 필터링에 대해 정리해보려고 합니다.

 

1. 컨텐츠 기반 필터링

 

추천시스템은 Utility Matrix에 기반하고 있습니다.

Utility Matrix는 어떤 유저가 어떤 아이템들을 구매했는지를 나타낸 행렬입니다.

컨텐츠 기반 필터링은 '내용(Content)'에 알맞는 아이템을 추천해주는 것입니다.

유저 X가 아이템 Y를 구매했다면, Y와 비슷한 아이템을 추천해주는 것이죠.

영화를 예를 들면 어떤 유저가 '인셉션'과 '인터스텔라'에 좋은 평점을 주었습니다.

그럼 두 영화의 공통적인 특징을 뽑아낸 뒤 그에 맞는 영화를 추천해주는 방식입니다.

예를 들어 두 영화 모두 SF영화이고 감독은 크리스토퍼 놀란이므로

놀란 감독의 SF장르 신작인 '테넷'을 추천할 수 있습니다.

유저가 좋아한 아이템들을 뽑아낸 목록을 Item Profile이라고하고,

Item Profile로부터 공통된 특징을 뽑아낸 결과가 User Profile입니다.

결국 User Profile의 특징에 기반한 아이템을 추천해 주는 것이죠.

Item이 영화라면, 감독, 제목, 배우 등이 있고

Item이 텍스트라면, 문서 내에 있는 중요한 키워드들로 구성될 수 있습니다.

 

2. 컨텐츠 기반 필터링의 장점

 

컨텐츠 기반 필터링의 장점은 크게 4가지입니다.

1. 다른 유저의 데이터가 필요하지 않다.

2. 개인의 독특한 취향을 고려한 추천이 가능하다.

3. 새로운 아이템이나 대중적이지 않은 아이템도 추천할 수 있다.

4. 사용자에게 추천하는 이유에 대한 설명이 가능하다.

 

1번,2번,3번은 개인의 취향을 기반으로 '내용' 중심 추천을 하기 때문에 가능합니다.

특히 1번의 경우 Cold-Start problem과 Sparsity problem으로부터 자유롭기 때문입니다.

Cold-Start Problem는 협업 필터링에서 새로운 아이템이 추가되었을 때, 평가한 사람이 없어 추천이 어려운 문제고

Sparsity Problem는 모든 유저들이 모든 아이템에 대해 평가하지 않기 때문에 발생하는 문제입니다.

하지만 컨텐츠 기반 필터링은 개인의 평가에 기반하기 때문에 해당되지 않는 장점이 있습니다.

3번을 협업 필터링으로 구현 시 문제점으로 언급되는 No first-rater problem 문제가 있습니다.

협업 필터링은 타인의 평가 데이터가 필요한 데,

아무도 평가하지 않은 Item은 추천할 수 없는 문제입니다.

반면, 컨텐츠 기반 필터링은 아무도 평가하지 않은 새로운 아이템과 인기 없는 아이템이라도

해당 Feature들만 뽑아낼 수 있다면 추천이 가능한 것이죠.

그리고 왜 추천하는지 설명할 수 있는 것도 장점입니다.

Item Profile을 뽑아낼 때 구성한 Feature들로 설명해주면 되기 때문입니다.

 

3. 컨텐츠 기반 필터링의 단점

 

1. Feature를 뽑아내기 어려운 데이터들이 존재한다.

2. 처음 유입된 유저에 대해서는 추천할 수 없다.

 

반면 단점은 Feature들을 뽑아내기 어려운 Item들이 있습니다.

음악 같은 경우 종류가 너무 다양하기 때문에 공통된 Feature를 찾기가 어렵습니다.

이미지도 공통된 특징을 뽑아내기가 어려운 편에 속합니다.

또한 새로운 유저에 대해서는 추천이 어렵습니다.

주변 유저 평가는 영향을 받지 않지만,

아예 처음 유입된 유저는 무엇을 좋아하는지 모르기 때문에 추천할 수 없는 문제가 있습니다.

 

이상으로 추천시스템을 구현하는 방식 중 하나인 컨텐츠 기반 필터링에 대해 정리해보았습니다.

다음 포스팅에서는 협업 필터링에 대해 정리해보겠습니다. 🙂