지난 추천시스템 2편에서는 추천시스템을 구축하기 위해 필요한 데이터의 종류와 대표적인 추천알고리즘을 간단하게 알아보았습니다. 본 포스팅에서는 널리 쓰이는 추천시스템 중 하나인 컨텐츠 기반 필터링에 대해 알아보겠습니다.
컨텐츠 기반 필터링(Contents-based Filtering)
아이템에 대한 프로필 데이터를 이용해 과거에 사용자가 좋아했던 아이템과 비슷한 유형의 아이템을 추천하는 시스템을 컨텐츠 기반 필터링이라고 합니다. 핵심은 사용자가 이전에 높은 평점을 주었던(좋았다고 평가했던) 아이템 A와 유사한 아이템 A'를 찾는 것이죠. 물론 이 아이템 A'는 사용자가 과거에 경험하지 않았던 아이템이어야 합니다.
예를 들어, 사용자가 영화 캡틴마블을 재밌게 보았다면 캡틴 마블에 대한 설명을 바탕으로 성격이 유사한 영화 블랙 위도우를 추천하는 것이죠.
컨텐츠 기반 필터링의 분석 절차
1. 이미지, 음성, 태그, 상품 설명서, 리뷰 등과 같은 아이템의 설명으로부터 아이템의 특징을 추출합니다.
- 이때 아이템의 설명을 알고리즘(모델)이 이해할 수 있는 형태인 벡터로 변환합니다.
2. 알고리즘을 이용하여 과거에 좋게 평가했던 아이템 A와 유사한 아이템들을 선별합니다.
- 만약 군집화 알고리즘 이용한다면, 아이템들을 몇 종류의 군집으로 나눈 후 아이템 A와 동일한 군집에 있는 아이템 A', B, C, D를 추천할 아이템 후보로 선정하는 것이죠.
- 여기서 아이템 사이의 유사성을 무엇으로 파악하고(어떤 특징을 사용할 것인지), 어떻게 계산할지가 컨텐츠 기반 필터링의 핵심이라고 할 수 있습니다.
3. (사용할 수 있는 데이터에 평점이 있는 경우) 추천할 아이템 후보 중에서도 평점이 높을 것으로 예상되는 일부 아이템 A'과 B를 우선적으로 추천합니다.
컨텐츠 기반 필터링의 장단점
장점
- 다른 사용자들의 데이터가 없어도 추천이 가능
- 추천을 제공받는 사용자의 컨텐츠 이용내역만 있으면 됩니다.
- 새로 추가된 아이템, 평점이 없는 유명하지 않은 아이템도 추천이 가능
- 아이템의 설명만 있다면 다양한 아이템이 후보군이 될 수 있습니다.
- 추천을 하는 근거를 설명할 수 있음
- 아이템의 설명(feature)을 이용해 아이템간의 유사성을 계산하기 때문에 어떤 특징이 유사성의 근거가 되는지 파악할 수 있습니다.
단점
- 아이템의 설명을 구성하는 과정에서 주관성이 개입될 수 있음
- 사용자 A는 영화 X를 흥미진진하다, 박진감 넘친다고 평가할 수 있지만, 반대로 사용자 B는 동일한 영화를 두고 폭력적이라고 평가할 수 있습니다.
- 사용자가 과거에 좋아했던 아이템을 제공하지 않으면 추천이 어려움
- 때문에 몇몇 동영상서비스 플랫폼에서는 사용자가 서비스를 이용하기 전, 이전에 보았던 영상에 대한 평가를 받습니다.
- 이 과정이 어렵다면 사용자의 단순 프로필(성별, 나이, 지역 등)을 이용하여 비차별적인 매스마케팅식으로 아이템을 제공하고, 이후에 사용이력이 쌓이면 그때부터 개인화 추천을 시도할 수도 있습니다.
- 아이템 속성 정보 간의 연관성을 바탕으로 하기 때문에 사용자가 이미 알고 있거나, 알고 있는 것과 유사한 아이템만을 주로 추천하는 문제점
- 지나치게 특정된 아이템들 만을 추천하여 사용자의 다양한 취향을 반영할 수 없습니다.
- 필터 버블(Filter bubble): 개인화 추천으로 생긴 정보편식 현상으로, 사용자가 제한된 주제와 관점을 가진 정보만을 접하게 되는 것을 말합니다. 필터링된 정보만을 취득하여 다양한 생각들을 알 수 없게 되고 스스로 가치판단을 할 수 없게 된다는 문제가 있습니다.
유사 컨텐츠를 찾는 방법
앞서 컨텐츠 기반 필터링의 분석 절차에서 유사성을 무엇으로 파악하고 어떻게 계산하는지가 핵심이라고 짚었는데요, 다양한 아이템들 사이에서 유사한 아이템을 찾기 위해 벡터간 유사도 계산을 이용할 수 있습니다.
- 코사인 유사도(Cosine Similarity): 두 점 사이의 각도를 측정한 지표로, 값이 작으면 두 데이터가 가까이 있다 = 유사하다는 의미입니다.
- 유클리드 거리(Euclidean Distance): 두 점 사이의 거리를 측정한 지표로, 값이 작으면 두 데이터가 가까이 있다 = 유사하다는 의미입니다.
- 맨하탄 거리(Manhattan Distance): 두 점 사이의 거리를 측정하되, 수평-수직으로만 이동하는 거리를 구합니다.
이외 유사도의 종류와 파이썬을 활용해 아이템 벡터간 유사도를 계산하는 방법은 유사도의 종류와 파이썬 구현 포스팅을 참고해주시길 바랍니다.
이렇게 구해진 벡터간 유사도(거리)를 이용해 k-근접이웃 알고리즘, DBSCAN과 같은 군집화 알고리즘을 적용하면 유사한 아이템들을 찾을 수 있습니다. 사용자가 좋아했던 아이템이 속하는 군집을 찾고, 그 군집에 같이 포함된 다른 아이템들을 추천해 주는 방식이죠.
이상으로 컨텐츠 기반 필터링의 개념과 분석 절차 및 장단점, 유사 컨텐츠를 찾는 방법에 대해 알아보았습니다. 사람들의 다양한 취향을 만족시킬 수 있는 컨텐츠가 쏟아져 나오는 만큼, 컨텐츠를 제공하는 플랫폼과 플랫폼 사용자 모두 적절한 컨텐츠를 알아서 찾아주는 알고리즘이 절실하게 필요하겠죠. 엄청나게 복잡한 모델이 아니더라도 유사성만 판정해도 되기 때문에 컨텐츠 기반 필터링은 여러 플랫폼에서 여전히 널리 쓰이고 있다고 합니다.
다음 포스팅에서는 컨텐츠 기반 필터링과 함께 보편적으로 쓰이는 협업 필터링에 대해 알아보겠습니다. 🤗
참고
https://ko.wikipedia.org/wiki/%ED%95%84%ED%84%B0_%EB%B2%84%EB%B8%94
'繩鋸木斷水滴石穿 > AI | 머신러닝' 카테고리의 다른 글
배치 학습(오프라인 학습)과 온라인 학습 비교 (0) | 2022.03.15 |
---|---|
[추천시스템] 4) 협업필터링 - 이웃기반 협업필터링 (0) | 2021.10.16 |
[추천시스템] 2) 사용하는 데이터와 추천알고리즘의 종류 (0) | 2021.07.10 |
[추천시스템] 1) 추천시스템이란? - 사례와 개념 (0) | 2021.06.26 |
Movielens 데이터 소개 (0) | 2021.05.31 |