협업 필터링

콘텐츠 기반 필터링의 몇 가지 제한사항을 해결하기 위해 협업 필터링은 사용자와 항목 간의 유사성을 동시에 사용하여 권장사항을 제공합니다. 이로 인해 갑작스러운 추천이 발생할 수 있습니다. 즉, 협업 필터링 모델은 유사한 사용자 B의 관심분야를 기반으로 사용자 A에 항목을 추천할 수 있습니다. 또한 특성을 수동으로 엔지니어링하지 않고도 임베딩을 자동으로 학습할 수 있습니다.

영화 추천 예시

학습 데이터가 피드백 행렬로 구성된 영화 추천 시스템을 예로 들어 보겠습니다.

  • 각 행은 사용자를 나타냅니다.
  • 각 열은 항목 (영화)을 나타냅니다.

영화에 관한 피드백은 다음 두 가지 카테고리 중 하나에 속합니다.

  • 명시적: 사용자는 평점 평점을 통해 특정 영화가 마음에 들었던 정도를 지정합니다.
  • 암시적: 사용자가 영화를 시청하면 시스템은 사용자가 관심이 있다고 추론합니다.

단순화하기 위해 피드백 행렬이 바이너리라고 가정합니다. 즉, 값이 1이면 영화에 대한 관심이 있음을 나타냅니다.

사용자가 홈페이지를 방문하면 시스템은 다음 두 가지 모두를 기준으로 영화를 추천해야 합니다.

  • 사용자가 과거에 좋아하는 영화와의 유사성
  • 비슷한 사용자가 좋아하는 영화

이해를 돕기 위해 다음 표에 설명된 영화에 사용할 특성을 수동으로 엔지니어링하겠습니다.

영화 평점 설명
다크 나이트 라이즈 13세 미만 부모 동반가 배트맨이 DC 코믹스 유니버스를 배경으로 한 다크 나이트의 속편에서 고담시의 핵폭발을 막기 위해 애쓰고 있습니다.
해리 포터와 마법사의 돌 PG 고아가 된 소년은 자신이 마법사이며 호그와트 마법학교에 입학하여 사악한 볼드모트 경을 상대로 첫 전투를 벌입니다.
슈렉 PG 사랑스러운 도깨비와 당나귀가 용에 의해 성에 갇힌 피오나 공주를 구하기 위한 여정을 시작했습니다.
벨빌의 세 쌍둥이 13세 미만 부모 동반가 자전거를 탄 챔피언이 투르 드 프랑스에서 납치당하자 그의 할머니와 과체중이 강아지에게 와이어를 구하기 위해 떠오르는 재즈 가수 3명의 도움을 받아 해외로 들어갑니다.
메멘토 R 기억 상실증 환자가 자신의 몸에 단서를 채워서 아내의 살인 사건을 해결하려고 합니다.

1D 임베딩

\([-1, 1]\) 에서 영화가 아동용 (음수 값)인지 성인 (양수 값)인지 나타내는 스칼라를 각 영화에 할당한다고 가정해 보겠습니다. 또한 \([-1, 1]\) 에서 각 사용자가 아동 영화에 대한 관심(-1에 가까움) 또는 성인 영화 (+1에 가까움)를 설명하는 스칼라를 할당한다고 가정해 보겠습니다. 사용자가 좋아할 만한 영화의 경우 영화 임베딩과 사용자 임베딩의 곱이 더 높아야 합니다 (1에 가까움).

1차원 임베딩 공간을 따라 정렬된 여러 영화와 사용자를 보여주는 이미지입니다. 이 축을 따라 각 영화의 위치는 아동 영화 (왼쪽) 또는 성인용 영화 (오른쪽)인지 여부를 나타냅니다. 사용자의 위치는 아동 또는 성인 영화에 대한 관심을 나타냅니다.

아래 다이어그램에서 각 체크표시는 특정 사용자가 시청한 영화를 식별합니다. 세 번째 및 네 번째 사용자는 이 기능에 관해 잘 설명된 환경설정을 갖고 있습니다. 세 번째 사용자는 아동을 위한 영화를 선호하고 네 번째 사용자는 성인을 위한 영화를 선호합니다. 하지만 첫 번째 및 두 번째 사용자 선호는 이 기능만으로는 잘 설명되지 않습니다.

행이 사용자에 상응하고 열이 영화에 해당하는 피드백 매트릭스의 이미지 이전 그림에서 설명한 대로 각 사용자와 영화는 1차원 임베딩에 매핑되므로 두 임베딩의 곱이 피드백 행렬의 실측 값에 근사합니다.

2D 임베딩

한 가지 기능만으로는 모든 사용자의 선호도를 설명할 수 없었습니다. 이 문제를 극복하기 위해 두 번째 기능(각 영화가 블록버스터 또는 예술 영화 중 어느 정도인지)을 추가합니다. 이제 두 번째 기능을 사용하면 각 영화를 다음과 같은 2차원 임베딩으로 나타낼 수 있습니다.

2차원 임베딩 공간에 배치된 여러 영화와 사용자를 보여주는 이미지입니다. 가로축을 따라 표시되는 영화의 위치는 이 영화가 아동 영화 (왼쪽)인지 성인용 영화 (오른쪽)인지 여부를 나타냅니다. 세로축을 따라 표시되는 위치는 블록버스터 영화 (상단)인지 예술 작품 영화 (하단)인지 나타냅니다. 사용자의 위치는 각 카테고리에 대한 관심을 반영합니다.

피드백 행렬을 가장 잘 설명하기 위해 같은 임베딩 공간에 사용자를 다시 배치합니다. 각 (사용자, 항목) 쌍의 경우 사용자 임베딩의 곱과 항목 임베딩이 사용자가 영화를 시청할 때 1에 가깝고 그 외의 경우에는 0에 가깝길 원합니다.

동일한 의견 행렬의 이미지입니다. 이번에는 각 사용자와 영화가 (이전 그림의 설명처럼) 2차원 임베딩에 매핑되어, 두 임베딩의 내적이 피드백 행렬의 실측 값에 근사합니다.

이 예에서는 임베딩을 직접 엔지니어링했습니다. 실무에서는 임베딩이 협업 필터링 모델의 힘인 자동으로 학습될 수 있습니다. 다음 두 섹션에서는 이러한 임베딩을 학습하기 위한 다양한 모델과 이를 학습하는 방법을 설명합니다.

이 접근 방식의 공동작업 특성은 모델이 임베딩을 학습할 때 분명합니다. 영화의 임베딩 벡터가 고정되어 있다고 가정해 보겠습니다. 그러면 모델이 사용자의 선호를 가장 잘 설명하는 임베딩 벡터를 학습할 수 있습니다. 따라서 비슷한 선호도를 가진 사용자의 임베딩이 서로 가깝습니다. 마찬가지로 사용자의 임베딩이 고정되어 있다면 영화 임베딩을 학습하여 피드백 매트릭스를 가장 효과적으로 설명할 수 있습니다. 따라서 비슷한 사용자가 좋아하는 영화의 임베딩이 임베딩 공간에서 닫힙니다.

이해도 확인

이 모델은 최근에 유사한 앱을 설치했기 때문에 사용자에게 쇼핑 앱을 추천합니다. 이 예시는 어떤 유형의 필터링에 해당할까요?
콘텐츠 기반 필터링
잘하셨습니다. 콘텐츠 기반 필터링은 다른 사용자를 확인하지 않습니다.
협업 필터링
협업 필터링은 다른 사용자를 고려합니다. 주어진 시나리오에서는 사용자 한 명에게만 관심이 있습니다.