본문 바로가기
IT 기록/추천 시스템

#4 추천시스템 - 협업 필터링(Collaborative Filtering) 기초

by Lazy Quant 2020. 3. 1.
반응형

[이전 글] #3 추천시스템 - 컨텐츠 기반 필터링(Content-based Filtering)


1.협업 필터링(Collaborative Filtering)

 컨텐츠 기반 필터링의 한계를 해결하기 위해 협업 필터링은 User와 Item간의 유사성을 동시에 사용하여 추천한다. 이를 통해 의외의 추천(serendipitous recommendations)도 가능하다. 즉, 협업 필터링 모델은 유사한 사용자 B의 관심사에 따라 사용자 A에게 Item을 추천할 수 있다. 또한 임베딩은 feature의 수작업(hand-engineering)에 의존하지 않고 자동으로 학습될 수 있다.


2.영화 추천 예시(Movie Recommendation)

 Training 데이터가 다음과 같은 피드백 매트릭스로 구성된 영화 추천 시스템을 가정해보자. 각 행은 User를 나타내고, 각 열은 Item(영화)를 나타낸다. 영화에 대한 피드백에는 두 가지 카테고리가 있다. 그 영화를 얼마나 좋아하는지를 수치로 평가한 명시적인(Explicit) 피드백과, 사용자가 영화를 봤다면 그 영화를 좋아한다고 추측하는 암묵적인(Implicit) 피드백이다.

 

 문제를 단순화하기 위해 피드백 매트릭스는 이진이라고 가정한다. 즉, 값 1은 사용자가 그 영화가 관심이 있다는 사실을 나타낸다. 사용자가 홈페이지를 방문하면 추천시스템은 거에 사용자가 좋아했던 영화와의 유사성, 그리고 유사한 사용자가 좋아하는 영화를 기반으로 영화를 추천해야 한다.

 

 설명을 위해 다음과 같이 영화의 일부 feature(상영 등급)를 직접 엔지니어링 한다.

 - 다크나이트 라이즈(PG-13 등급)

 - 해리포터와 마법사의 돌(PG 등급)

 - 슈렉(PG 등급)

 - 벨빌의 세 쌍둥이(PG-13 등급)

 - 메멘토(R 등급)


3. 1차원 임베딩(아동용 영화를 좋아하는지, 성인 영화를 좋아하는지)

각 영화가 아동용(음수 값)인지 성인 영화(양수 값)인지에 따라 해당하는 스칼라를 할당한다. $[-1,1]$에서 각 사용자에게 어린이 영화(-1에 가까운) 또는 성인 영화(+1에 가까운)에 대한 관심을 나타내는 스칼라를 할당한다. 사용자가 좋아하는 영화의 경우 Item 임베딩 및 User 임베딩의 내적(Dot Product)이 더 높아야한다.(1에 가까워 야 함)

1차원 임베딩

 아래 다이어그램에서 체크 표시는 특정 사용자가 본 영화를 나타낸다. 세 번째 사용자와 네 번째 사용자는 이 feature로 잘 설명되는 선호도를 가지고 있다. 세 번째 사용자는 어린이를 위한 영화를 선호하고, 네 번째 사용자는 성인을 위한 영화를 선호한다. 그러나 첫 번째 및 두 번째 사용자의 선호도는 이 한 가지 feature로 설명하기 어렵다. 

 

 

4. 2차원 임베딩(블록 버스터 영화인지, 아트 하우스 영화인지 추가)

* 아트하우스 - 단순히 재미보다는 예술적이거나 실험적인 영화를 전문으로하는 영화관.

 위에서 보듯이 하나의 feature만으로는 모든 사용자의 선호도를 설명할 수 없다. 이 문제를 해결하기 위해 두 번째 feature인 각 영화가 블록버스터 또는 아트 하우스 영화인 정도를 추가한다. 두 번째 feature를 추가하여 각 영화를 다음과 같이 2차원 임베딩으로 표현할 수 있다.

2차원 임베딩

 피드백 매트릭스를 가장 잘 설명하기 위해 User를 동일한 임베딩 공간에 다시 배치한다. 각 (User, Item) 쌍에 대해 사용자가 해당 영화를 봤으면 User 임베딩과 Item 임베딩의 내적(Dot Product)이 1에 가까워지고, 보지 않았다면 0에 가까워지길 원한다.

참고 : 동일한 임베딩 공간에 Item과 User를 모두 표시했다. 결국 User와 Item은 서로 다른 두 엔티티인데, 이를 동일한 임베딩 공간에 표시한게 놀랍게 보일 수도 있다. 그러나 임베딩 공간은 Item과 User 모두에게 공통적인 추상 표현으로 생각할 수 있으며, 유사성 메트릭을 사용하여 유사성 또는 관련성을 측정할 수 있다.

 위의 영화 예제에서는 임베딩을 직접 엔지니어링했다. 실제로는 임베딩이 자동으로 학습될 수 있으며, 이는 협업 필터링 모델의 힘이다. 다음 섹션에서는 이러한 임베딩을 배우기 위한 다양한 모델과 이를 Training 시키는 방법에 대해 공부할 것이다.

 

 이러한 접근 방식의 협업 특성은 모델이 임베딩을 학습할 때 분명해진다. Item의 임베딩 벡터가 고정되었다고 가정해보자. 그럼 모델은 User가 선호도를 가장 잘 설명할 수있는 임베딩 벡터를 학습할 수 있다. 결과적으로 비슷한 선호도를 가진 User의 임베딩은 서로 가깝게 위치한다. 마찬가지로 User의 임베딩이 고정 된 경우, 피드백 매트릭스를 가장 잘 설명하기 위해 Item 임베딩을 학습할 수 있다. 결과적으로 유사한 User가 좋아하는 Item의 임베딩은 임베딩 공간에서 가깝게 위치한다.


[출처] 구글 머신러닝 추천시스템


공감댓글, 그리고 공유는 큰 힘이 됩니다 : )

반응형

댓글