이번 글에서는 추천 시스템에서 자주 사용되는 협업 필터링(Collaborative Filtering)에 대해 이야기해보려고 합니다.
넷플릭스에서 영화를 추천받거나 쿠팡에서 쇼핑할 때 "이거 너 좋아할 것 같은데?"라는 느낌으로 제안이 오곤 합니다. 그 배경에는 바로 협업 필터링이라는 기술이 숨어 있습니다. 이 글에서는 협업 필터링이 무엇인지, 어떻게 작동하는지, 그리고 어떤 장단점이 있는지 알아보겠습니다.
협업 필터링이라는 이름은 "협업(Collaboration)"과 "필터링(Filtering)"이라는 두 단어에서 왔습니다."협업"은 사용자들이 서로의 정보를 공유하며 협력한다는 뜻이고, "필터링"은 그 정보를 바탕으로 사용자가 좋아할 만한 것을 걸러낸다는 의미입니다.
즉, 협업 필터링은 사용자들의 과거 행동 데이터를 모아서 비슷한 취향을 가진 사람들이 좋아한 것을 추천하는 방식입니다. 예를 들어, 친구가 "나 이 영화 진짜 재밌게 봤는데, 너도 좋아할 거야!"라고 추천해주는 상황을 떠올리면 됩니다. 실제로 협업 필터링은 이런 아이디어를 시스템적으로 구현한 것이기 때문입니다.
쉽게 말해, "너와 나의 취향이 비슷하니까, 네가 좋아한 걸 나도 좋아할 가능성이 높다"는 개념을 기반으로 작동합니다. 영화, 음악, 쇼핑 등 우리가 매일 접하는 추천 시스템의 핵심 기술 중 하나입니다.
협업 필터링은 크게 사용자 기반 협업 필터링, 아이템 기반 협업 필터링 두 가지 방법으로 나뉩니다. 이 두 방식은 비슷한 점도 있지만, 접근법이 조금 다릅니다.
사용자 기반 협업 필터링은 나와 취향이 비슷한 사람(이웃)을 찾아서, 그들이 좋아한 것을 나에게 추천해 줍니다. 사용자 기반 협업 필터링의 작동 방식은 다음과 같습니다.
예시: 내가 영화 '어벤져스'와 '토이 스토리'를 좋아했는데, 나와 비슷한 취향의 친구가 '스파이더맨'을 좋아했다면, 시스템이 나에게 '스파이더맨'을 추천하는 식입니다.
아이템 기반 협업 필터링은 내가 좋아한 아이템과 비슷한 아이템을 찾아서 추천해주는 방식입니다. 아이템 기반 협업 필터링의 작동 방식은 다음과 같습니다.
예시: 내가 '어벤져스'를 좋아했는데, '어벤져스'와 비슷한 영화(예: '아이언맨')가 있다면, 시스템이 '아이언맨'을 추천해줍니다.
간단한 예시를 들어보겠습니다. 먼저, 세 명의 사용자가 영화에 1~5점의 평점을 줬다고 해보겠습니다.
사용자 1: 영화 A(5점), 영화 B(4점), 영화 C(3점)
사용자 2: 영화 A(4점), 영화 B(5점), 영화 D(2점)
사용자 3: 영화 C(5점), 영화 D(4점)
사용자 1과 사용자 2는 영화 A와 B에 비슷한 평점을 줬습니다. 그러니까 이 둘은 취향이 비슷하다고 볼 수 있습니다.
이를 통해 알 수 있는 정보는, 사용자 1은 영화 D를 아직 안 봤는데, 사용자 2가 영화 D에 2점을 줬으니, 사용자 1도 영화 D를 별로 안 좋아할 가능성이 높습니다.
반면, 사용자 3은 영화 C와 D를 좋아했으니 사용자 1과는 취향이 다르다고 판단할 수 있습니다.
영화 A와 영화 B는 많은 사람들이 동시에 좋아했습니다(사용자 1, 2 모두 높은 점수). 따라서, 영화 A를 좋아한 사용자 1에게 영화 B를 추천하는 식으로 진행됩니다. 이런 식으로 협업 필터링은 유사성을 기반으로 추천을 만들어줍니다.
협업 필터링은 사용자들의 데이터를 활용해서 개인 맞춤형 추천을 제공하는 기술입니다. 친구가 추천해준 영화를 보는 것처럼, 비슷한 취향을 가진 사람들의 정보를 바탕으로 나에게 딱 맞는 것을 찾아줍니다. 물론 Cold Start나 희소성 같은 한계도 있지만, 이를 보완하는 방법(예: 인기 있는 영화를 기본 추천하기)과 함께 사용하면 더 강력해질 수 있습니다.