개요
이번 포스팅은 넷플릭스 경연대회(Netflix Prize competition)에서 뛰어난 성능을 보인 "Matirx Factorization을 이용한 추천시스템'에 대한 글입니다. 어떻게 Matrix factorization이 추천시스템에 적용되는지, 원리를 중점으로 알아보도록 하겠습니다.
참고한 논문은 Yehuda Koren의 "Matrix Factorization Techniques for Recommender Systems" 입니다.
추천시스템 기본
저번 포스팅에서 언급했듯이 추천시스템은 크게 콘텐츠 기반 필터링(Content-based filtering), 협업 필터(Collaborative filtering)으로 나뉘게 된다.
추천 시스템 개요 및 유형 - 콘텐츠 기반 필터링, 협업 필터링
개요 본 게시물은 추천 시스템의 기본 개념 및 유형을 정리하기 위한 글입니다. 대표적으로 분류되는 콘텐츠 기반 필터링(content-based filtering), 협업 필터링(collaborative filtering)에 대해서 설명하고
sane0.tistory.com
콘텐츠 기반 필터링은 유저 및 아이템의 속성을 기반으로 추천이 진행되는 반면, 협업 필터링은 사용자와 아이템 간의 상호 관계를 분석해 새로운 사용자-아이템 관계를 찾아준다. 협업 필터링은 도메인에 관계없이 사용될 수 있는 큰 장점이 있다. 일반적으로 콘텐츠 기반 필터링보다 뛰어나지만 새로운 제품과 사용자를 다룰 수 없어 Cold start problem 단점이 있다.
협업 필터링의 주요 분야는 이웃 방법론(Neightborhood Mehots)과 잠재 요인 모델(Latent Factor model)로 구분할 수 있다. 해당 글에서 설명하려는 Matrix Factorization(행렬분해)방법은 잠재 요인 모델에 포함된다.
위 그림을 보면서 잠재 요인 모델에 대해서 이해해보자. x축에서는 남자와 여자, y축에서는 진지하고 지향적인(serious)과 현실 도피적인(escapist)으로 차원이 구분된다. 이 모델은 성별, 진지함에 대한 특성을 이용해 사용자가 다음에 나와있는 영화들에 대한 선호도를 계산하는것이다. 예를 들어, 그림에서 Gus는 Dumb and Dumber를 좋아하고 The Color Purple은 싫어하며 Braveheart는 중간정도 선호한다고 예상할 수 있다. 이렇게 수많은 factor에서 2가지 latent factor를 활용해 고객에게 맞는 영화를 추천할 수 있다.
Matrix Factorization Methods
잠재 요인 모델 중 가장 뛰어난 성능은 모델은 Matrix Factorization을 기반으로 한다고 설명한다. Matrix Factorization은 아이템 패턴에서 유추된 요인 벡터(latent vector)로 아이템과 사용자를 모두 특성화한다. 이러한 방식으로 아이템과 사용자 요인간 높은 일치성을 보이는것을 추천하는 원리이다.
추천시스템은 다양한 유형의 입력 데이터를 사용하는데 가장 이상적인 데이터는 고품질의 명시적 피드백(explicit feedback)이다. 명시적 피드백은 이름 그대로 유저가 아이템에 대한 선호도를 명시적으로 나타낸 피드백이다.
예를 들어 Netflix는 영화에 대한 별점을 수집하는데, 이러한 고객의 정확한 선호도를 얻을 수 있다면 이상적인 추천을 할 수 있다는 뜻이다. 하지만 별점을 정성스럽게 기입하는 고객이 많을까? 실제로 이를 유저, 아이템 행렬화하면 데이터가 많지않을 것이다. 따라서 이는 대부분의 matrix값이 0인 Sparse matrix(희소행렬)로 이어질 수 있다.
이때 Matrix Factorization의 강점을 보면 추가적인 정보를 통합할 수 있다는 점이있다. 명시적 피드백을 이용할 수 없는 경우에 암묵적 피드백(Implicit Feedback)을 사용하여 사용자의 선호도를 유추해나간다. 위에서 고객의 영화에 대한 별점을 명시적 피드백이라하면 암묵적 피드백은 영화 시청 횟수에 해당한다. 해당 영화에 대해 명확한 선호도는 알 수 없지만 어떤 영화를 시청했는지랑 몇번 시청했는지 등을 활용해 선호하는 정도를 추정할 수 있고 이를 추천에 반영할 수 있다는 뜻이다.즉 암묵적 피드백은 영화에 대한 확실한 선호도를 나타내는게 아닌 간접적인 선호도를 나타낸다.
Matrix Factorization은 말그대로 사용자와 아이템의 상호작용 행렬을 사용자, 아이템 잠재 행렬로 분해하는 방법이다. 그리고 분해한 잠재 행렬의 곱이 실제 사용자와 아이템의 상호 작용 행렬과 유사하도록 학습하는 모델이다.
위 그림2는 직관적으로 Matrix Factorization를 이해하기위해 가져온 그림이다. 왼쪽 User-Home matrix가 데이터에서 사용자별로 집에 대한 선호도를 나타내는 행렬이다. 이를 사용자, 아이템 행렬을 잠재 변수 2차원으로 분해한게 오른쪽 그림이다. 두 행렬간의 내적곱으로 사용자가 Home에 대한 선호 추정치를 구하고 이를 실제 선호도값과 비교하며 반복해서 학습하게 된다.
논문에서는 '사용자와 아이템을 특정 차원의 공통 잠재 요인(joint latent factor) 공간에 매핑하여 user-item 상호작용을 그 공간의 내적으로 모델링하는 방법'이라고 설명하고 있다. 이를 수식적으로 알아보면
$$ \hat{r}_{ui} = q^T_ip_u $$
위의 내적 결과는 정의에서 말하는 사용자와 아이템간의 상호 작용, 사용자가 아이템에 대한 전반적인 관심을 의미한다. 여기서 사용자 \( u \)는 벡터 \( p_u \) 로 나타내며 아이템 \( i \) 는 벡터 \( q_i \) 로 표현한다. 그리고 \( \hat{r}_{ui} \)는 사용자 \( u \)의 아이템 \( i \)에 대한 선호도를 나타낸다.
이러한 모델은 잠재 요인에서 잘 알려진 기법인 특이값 분해(SVD)와 유사한데, 특이값 분해는 Sparse matrix를 처리하는데 어려움이 있다. 추천시스템에서도 사용자-아이템 행렬은 상당히 Sparse matrix라서 특이값 분해를 적용하기에는 어렵다. 또한 비교적 적은 수로 알려진 항목들에 대해 임의로 지정할 경우 과적합(Overfitting) 문제가 발생할 수 있다. 그리고 이전 추천시스템들은 누락된 등급을 채우기위해 보간(Imputation) 방법을 사용했는데 이는 데이터 양이 크게 늘거나 비용이 많이드는 단점이 있다.
$$ min_{q^*,p^*} \sum _{(u,i) \in K} (r_{ui} - q^T_ip_u)^2 + \lambda(\left\| q_i\right\|^2 + \left\| p_u\right\|^2) $$
따라서 논문에서는 과적합 문제를 피하면서 관측된 등급만을 직접 모델링하는 것을 제시한다. 위 수식을 보면 요인 벡터 \( p_{u} \)와 \( q_{i} \)를 학습하는 방식이며 핵심은 실제 관측된 유저-아이템 행렬 점수와의 요인 벡터간의 내적곱의 Squared Error를 최소화하는 것이다. 여기서 \( K \)는 \( r_{ui} \)가 알려진 (\( u, i\) )쌍들의 집합이다. 그리고 이 모델은 알려지지 않은 점수를 예측하는 것이 목적이며 매개변수 \( \lambda \) 로 정규화하여 데이터의 과적합을 방지한다.
정리하자면
- Matrix Factorization 방법론은 Collaborative Filtering에서 Latent factor model에 해당한다
- 사용자와 아이템 행렬을 사용자, 아이템 잠재 변수 행렬로 분해하는 방법이다
- 차원축소를 통해 효율적으로 상호관계를 모델링할 수 있으며 Sparse matrix에 유의하다
- 명시적 피드백 뿐만 아니라 암시적 피드백 데이터에도 유용하다
마치며
이번 글은 논문을 기반으로 Matrix Factorization의 기초 원리에 대해서 알아보았습니다. 추가적으로 모델링을 위한 학습 알고리즘과 Temporal, 암시적 피드백 특성을 반영하기 위한 수식들은 논문에서 참고할 수 있습니다.
'추천시스템' 카테고리의 다른 글
[논문 리뷰] Causal Intervention for Leveraging Popularity Bias in Recommendation (0) | 2025.03.24 |
---|---|
추천 시스템 개요 및 유형 - 콘텐츠 기반 필터링, 협업 필터링 (0) | 2024.01.07 |