Matrix Factorization Techniques For Recommender System [논문리뷰]

anal-yg·2022년 5월 10일
2

논문리뷰

목록 보기
2/4
post-thumbnail

Netflix에서 활용되고 있는 Matrix Factorization 딥러닝 구현을 소개한 논문에 대해서 리뷰하겠습니다.


README


논문의 배경

  • 위 논문의 발단은 Netflix Prize Competition에서 시작됩니다. Netflix 기업에서 2006년부터 개최하여 50만명이 넘는 사용자들에게 임의 처리된 17,000개의 영상데이터 및 1억개가 넘는 별점 데이터를 제공하면서, 현재 운영되고 있는 Recommender System보다 더 좋은 성능을 갖는 방법론을 찾으려고 하였습니다. 기존 시스템보다 10% 이상 개선된다면 100만 달러를, 목표 보다는 못미치지만 큰 개선을 한 1등 팀에게는 5만 달러를 약속하였습니다.
    위 논문은 2007년 8.43%로 1등, 그 다음해에 9.46%로 또 다시 1등을 차지한 팀의 방법론에 관련된 논문입니다.

논문의 시작

  • 많은 선택들에 둘러쌓인 요즘 시대의 현대 소비자들을 사로잡기 위해서, 많은 전자 상거래 및 온라인 컨텐츠 서비스들은 추천 시스템을 활용하여 소비자들의 행동 패턴을 분석하고 고객 선호에 가장 잘 맞는 상품을 제공하려고 노력합니다. 소비자들에게 최고로 적합한 제품을 추천해주는 것이야말로 소비자들의 마음을 사로잡고 충섬고객으로 자리메김 하게 하는 핵심 키포인트 일 것입니다. 이러한 트렌드 역시 다양한 엔터테이먼트 산업인 영화, 음악, TV쇼 등 분야에도 적용될 수 있는데, 그 중 넷플릭스라는 회사도 이러한 추천 시스템을 메인 서비스 기능으로 삼아 고객들에게 가장 최적의 영상 컨텐츠물을 제공하도록 노력하고 있습니다.

추천시스템의 전략

  • 추천시스템은 크게 두 가지의 전략으로 크게 나뉘어 집니다.

컨텐츠 기반 필터링(Content Filtering)

  • 각각의 유저 및 아이템에 대해 프로필(메타정보)을 생성하고, 과거에 어떤 유저가 구매 혹은 접했던 아이템이 담고 있는 프로필과 가장 유사한 아이템을 또 다시 추천해주는 방법론 입니다.

예를 들어서 한 영화(아이템)의 프로필(메타정보)에 장르, 등장배우, 대중 인기성 등을 포함하고, 고객(유저)의 프로필에는 단순 인구통계학적 정보(성별,나이 등)가 있다고 가정해보자. 해당 가정을 전제로 컨텐츠 기반 필터링 살펴보면, 만약 A라는 유저가 톰크루즈(배우)가 나오는 액션(장르)영화인 미션임파서블을 보았다고 했을 때, 다음번에도 역시 톰크루즈(배우)가 나오는 액션(장르)영화와 비슷한 것을 추천해주면 될 것이다.

  • 위와 같이 컨텐츠 기반 추천 시스템은 다른 유저의 데이터가 필요하지 않다는 것과 추천을 내린 결과물에 대한 해석이 가능하다는 장점이 존재합니다.
  • 하지만 아이템에 대한 프로필(메타정보)를 생성하기 위해서는 명시적(explicit)인 데이터가 있어야 하는데, 매번 새로운 아이템이 생성될 때마다 프로필을 고민하고 생성해야 한다는 큰 단점이 있다.

협업 필터링(Collaborative Filtering)

  • 컨텐츠 기반 필터링의 프로필 생성에 대한 한계를 극복하고 나온 대안 방법론인 협업 필터링은 따로 명시적(explicit)인 프로필을 생성하지 않고 오로지 사용자와 아이템간의 상호관계(interation)에 기반하여 추천을 제공합니다.

예를 들어서 Joe라는 유저와 세명의 유저들이 서로 다수의 영화들에 대해서 비슷한 시청 및 평가를 내린다고 했을 때, 세명의 유저들이 보고 선호한 영화를 Joe가 못 봤다면 그 영화를 유저 Joe도 똑같이 좋아하지 않을까 라는 아이디어에서 나온 것이다.

  • 앞에서도 말했듯이 협업 필터링은 컨텐츠 기반 필터링의 단점과는 상반되게 프로필을 수동으로 생성해야 하는 단점을 개선할 뿐만 아니라 성능적인 측면에서도 상당히 우수한 것으로 알려져 있습니다.
  • 하지만 협업필터링의 가장 큰 단점은 서로 비교할 데이터가 없어 어려운 신규 고객에게는 적용할 수 없다는 Cold Start 문제를 가지고 있습니다.

협업 필터링 방법론

Neighborhoods Method(근접 이웃 방법)

  • 협업필터링에서 많이 사용되는 방법으로 Neighborhoods Method가 있는데, 해당 방법은 앞서 설명한 Collaborative Filtering과 크게 다르지 않습니다.
  • 다만 구체적으로 설명하자면 어떤 대상(유저 or 아이템)을 초점으로 맞추냐 일 것입니다.
  • 동일한 아이템에 대해서 유저 평가 유사도에 초점을 맞춘다면 (User-Oriented NM)
  • 동일한 유저에 대해서 아이템 평가 유사도에 초점을 맞춘다면 (Item-Oriented NM)

Latent Factor Models(잠재 요인 모델)

  • 협업필터링의 두번째 방법으로써, user와 item에서 임의의 K개 만큼의 잠재요소를 추출하여, 각 user마다 프로덕트에 대한 관계를 만들어 내는 방법입니다.

  • 위 그림은 잠재 요인 모델에 대한 설명을 (X축 = 남자 VS 여자), (Y축 = 현실적 VS 비현실적) 기준 특성으로 좌표평면에 표현하였습니다.
  • 그래서 각 특성을 가진 축에 따라서 설명하자면, X축으로 갈수록 남성을 타켓으로 한 영화이고 Y축으로 갈수록 현실적인 소재를 다룬 영화라 말할 수 있다.
  • 그리고 각 영화와 각 user의 이름이 가까우면 가까울수록 해당 user가 그 영화에 대한 좋은 평가를 내릴 가능성이 크다라고 볼 수 있다.
  • 이렇게 좌표평면에 특성에 따라 분류할 수 있도록 하는 방법론이 지금부터 설명할 Matrix Factorization(행렬 분해) 입니다.

Matrix Factorization(행렬 분해)

  • 아이템에 평가된 점수(R)로 부터 추론된 요소의 벡터들로, 유저(P)와 아이템(Q)을 지정한 K개의 특성으로 나누어 학습시키는 방법을 말합니다. 구체적으로 User의 Latent Factor와 아이템의 Latent Factor간의 Dot Product로 위와 같이 평가 점수를 추론하게 됩니다.

  • 선형대수를 공부해보았다면 Singular Value Decomposition(SVD)기법을 통해 아이템에 평가된 점수(R)로부터 그냥 반대로 P_u와 Q_i를 구할 수 있지 않을까라는 생각을 할 수 있습니다. 하지만 MF와 SVD 둘 다 데이터분석과 기계학습에 널리 사용되고 유사한 점이 있지만 명백히 다른 기법입니다.

    • SVD
      • 위 그림과 같이 데이터를 3개의 행렬로 분해해서 학습시키고 이 3개의 행렬로 원래의 행렬을 재현(re-creation)하는 기법입니다.
      • SVD는 원래 행렬을 분해해서 3개의 행렬로 만든 다음에 이를 사용해서 원래 행렬을 재현하는 데에는 뛰어나지만, 원래 행렬의 null값을 허용하지 않기 때문에 원래 행렬에 없는 값을 예측하는 데에는 문제가 있습니다.
      • 만약에 null값 대신에 0을 대신해서 넣으면 0 또한 하나의 값으로 인식해서 최대한 이 값을 재현하기 위해서 행렬을 분해하기 때문에 나중에는 원래의 0값이 0이 아니라 0에 가까운 수가 되버립니다.
      • 즉, 평가하지 않은 항목을 0으로 표시하고 평가한 값만 가지고 학습시킨 후, 0의 값을 다시 예측값으로 계산할 수 없는 구조입니다.
    • MF
      • 그에 비해 MF는 원래 데이터를 2개의 행렬로 분해한다는 점에서 차이가 있습니다.
      • MF의 경우 null값을 0으로 표현했지만 SGD로 P,Q를 학습할 때에는 0인 값은 빼고 계산을 하기 때문에 사실상 null값은 제외하고 계산을 하는 구조입니다.
      • 그리고 원래 행렬에 null값이 있더라도 P,Q 행렬은 null이 없이 학습이 되며, 학습이 끝나고 나면 P,Q를 사용해서 원래 행렬에 빠져 있는 null 값도 상당히 정확하게 예측합니다.
      • 그래서 SVD가 여러가지 목적(차원축소 등)에서는 유용하게 사용되는 분석기법이지만 추천 시스템 분야에서는 거의 사용되지 않습니다.
  • 추천 알고리즘에 입력 데이터의 종류로는 크게 두 가지가 있는데, 그 중 명시적 피드백을 바로 사용할 수 없는 경우, 암시적 피드백(Implicit Feedback)을 대신 사용하여 사용자의 선호를 유추할 수 있습니다.(해당 내용 참고 작성글)

    • 명시적 피드백(Explicit Feedback)
      • 별점, 만족도, 리뷰와 같은 고객 선호를 명시적으로 나타내는 데이터
      • 사용자의 선호를 바로 알수 있다는 점과 데이터 품질이 좋은 경우가 많은데에 비해 데이터 수집의 어려움 때문에 sparse matrix인 경우가 많습니다.
    • 암시적 피드백(Implicit Feedback)
      • 구매기록, 장바구니, 검색 패턴, 행동 로그와 같은 고객 선호를 간접적으로 나타내는 데이터
      • 사용자의 선호를 간접적으로 알수 있지만 직접적인 관계성을 찾는 것이 중요하고, 다양한 방법을 통해서 구할 수 있기 때문에 대부분 Dense Matrix로 표현됩니다.

Basic Matrix Factorization Model

  • Matrix Factorization(행렬 분해) 모델은 유저와 아이템을 차원(f)의 잠재 요인 공간으로 매핑합니다. 그리고 사용자와 아이템간의 Dot Product(내적 연산)을 통해서 아래 그림과 같이 모델링될 수 있습니다.

  • 위 수식을 통해 나온 결과는 아이템에 대한 사용자의 관심 즉, 상호관계(interation)를 의미합니다.

  • 그리고 머신러닝에서 흔히 발생하는 문제인 과적합(overfitting)이 비교적 많은 컬럼에 비해 적게 수집된 데이터들(결측치가 많은)로 추천시스템을 모델링하는 과정중에도 발생하게 됩니다. 그래서 아래와 같이 모델 학습 과정 중 Loss Function에 Regularization Term(람다 이후 식)을 추가하여 과적합을 방지할 수 있는 장치를 마련할 수 있습니다. 그리고 교차검증을 통해서 세부적인 lambda 값 조절을 통해서 과적합 문제를 정교하게 조정할 수 있습니다. 대신 해당 값(람다)은 민감하기 때문에 큰 값 범위 -> 작은 값 범위로 점차 줄여가면서 최적의 파라미터를 찾아야 합니다.


Learning Algorithms

  • Matrix factorization의 loss값을 최소화하기 위한 2가지 최적화 방법을 제시합니다.
  1. SGD(Stochastic Gradient Descent)(확률적 경사하강법)
    • 첫 번째로 error는 실제 평점과 예측 평점과의 예측오차 계산
    • 두 번째, 세번째로 gradient 반대 방향의 gamma에 비례하는 크기로 q_i와 p_u를 최신화
  2. ALS(Alternating Least Squares)
    • 일반적인 MF SGD 식을 보면 q_i와 p_u가 미지의 값이기 때문에, p와 u의 반복적인 최신화 과정 중 발생하는 error식이 convex(볼록) 하다는 보장을 할 수 없게 됩니다.
    • 그래서 두 개의 벡터 중에 하나를 고정한다음에 하나의 미지의 파라미터만 먼저 최적화 한다는 문제로 바꾸게 된다면 해당 식은 Convex한 2차식이 되어 최적화가 가능해집니다.
    • 해당 메커니즘을 채택한 ALS방식은 p_u와 q_i를 한번씩 번갈아가면서 고정하면서 최적의 p_u 및 q_i의 least square를 계산합니다.
    • 보통의 경우는 SGD가 더 쉽고 빠르지만 ALS가 더 효과적인 두 가지 상황이 있습니다.
      • 병렬화 프로세싱이 가능한 상황
      • 보유한 데이터가 Implicit data에 집중된 서비스인 경우

Adding Biases

  • 협업 필터링에 Matrix Factorization 기법을 사용한다는 의미는 다양한 데이터 및 task-specific한 요구사항을 처리할 수 있다는 유연성을 뜻합니다.

  • 위 식은 사용자와 아이템간의 상호작용 및 관계를 파악하는 것이라 말하였지만, 실제로 점수 결과에서 관찰된 다양한 변동들은 직접적인 상호관계와는 관계 없이 사용자 혹은 아이템의 고유의 편향된 특성에 영향을 받고 이러한 편향된 특성을 Biases라고 부릅니다.

예들들면 항상 평점을 짜게 주는 A(1~2점)유저와 항상 평점을 후하게 주는 B(4~5점)유저가 있는데, 특정 영화에 3점을 주었다면 여기서 3점은 A에게는 높은 3평점 그리고 B에게는 낮은 3평점이 되는 것처럼 두 유저에게 다른 의미일 것입니다.

  • 따라서 각 유저와 아이템에 대한 개별 고유 특성을 표현하는 bias term을 아래와 같이 추가합니다.
    • mu = 모든 아이템의 평점 평균
    • b_i = 전체 아이템 평균에 대한 아이템 i의 편차
    • b_u = 전체 유저 평균에 대한 유저 u의 편차
  • 그리고 최종적으로 위 bias term을 활용하여 loss function을 구할 수 있습니다.

Additional Input Sources

  • 기본적으로 협업필터링의 많은 장점에 비해, 신규 유저 혹은 데이터를 쌓기 어려운 서비스 환경인 경우에 데이터 부족으로 인한 비일반화적인 결론에 도달하게 되는 Cold-Start 문제가 생깁니다.

  • 이러한 문제를 극복하기 위해서, 유저의 취향을 간접적으로나마 파악할 수 있는 Implicit한 데이터들을 활용하는 것입니다.

  • 해당 예를 단순화하기 위해서 Boolean의 Implicit Feedback로 예를 들어보겠습니다.

  • 여기서 N(u)는 user u가 implcit feedback을 보인 아이템의 집합입니다.

  • 이 때 암시적으로 선호하는 항목들을 통해 사용자 프로필을 만들 수 있고, 첫 번째 같이 표현될 수 있습니다.

  • 그리고 식을 정규화하면 두 번째와 같이 표현될 수 있습니다.

  • 그리고 또다른 추가적인 소스는 인구통계적 성격(아이템과 직접적인 관련을 띄지 않는 = 성별, 나이, 우편번호 등)을 띄는 사용자 속성(User Attribute)입니다.

  • 해당 부분도 마찬가지로 Boolean형태로 고려하여 본다면 다음과 같이 표현됩니다.

  • 여기서 A(u)는 유저 u의 속성 집합을 뜻하고 위에 했던 방식과 똑같이 첫 번째와 같이 표현됩니다.

  • 결론적으로 모든 Signal Sources(Implicit 데이터 + User Attribute 데이터)를 통합하면 Matrix Factorization 모델은 두 번째와 같이 표현됩니다.


Temporal Dynamics

  • 데이터는 정적이지 않고 유행과 같이 시간에 따라 동적으로 변할 수도 있습니다.

  • 그래서 아이템에 대한 유행과 유저의 선호도 성향은 시간에 따라 동적으로 시시각각으로 변할 수 있습니다.

  • 이러한 영향(Temporal Effect)을 Matrix Factorization 모델도 설명 및 반영할 수 있어야 합니다.

  • 아래 식은 t에 따른 사용자 선호 예측 평점을 나타내고 있습니다.

  • b_i(t) = 시간에 따른 아이템의 편향 ("아이템의 유행은 시간에 따라 변할 수 있다")

  • b_u(t) = 시간에 따른 유저의 편향 ("사용자의 평가 성향은 시간에 따라 변할 수 있다")

  • p_u(t) = 시간에 따른 유저의 선호도 편향 ("아이템에 대한 사용자 선호도는 시간이 지남에 따라 변할 수 있다 = 옛날에 좋아했던 영화가 지금도 좋아하지 않을 수도 있으니")


Inputs with Varying Confidence Levels

  • 관측된 모든 점수들이 동일한 기준을 따르는 가중치 및 신뢰도를 받는 것에는 무리가 있습니다.

예를들어 특정 광고에 영향을 직접적으로 받은 아이템에 대해서는 좋은 rating을 받는 상황과 한 유저가 특정 아이템에 악의적으로 나쁜 rating을 준 상황에서는 이를 일시적인 현상으로 보아야 함으로 예측 선호도를 계산할 때 신뢰도를 뜻하는 점수를 함께 부여하는 것이 중요합니다.

  • 따라서 예상 선호도와 신뢰도를 함께 고려하는 것이 중요한데, 이 경우에 신뢰도를 사용자의 행동에 대한 빈도 값으로 표현될 수 있습니다. 사용자가 단순히 일회성의 행동에는 명확한 선호도라 구분 짓기 힘들지만, 이러한 행동이 반복적으로 일어나게 된다면 이러한 패턴은 사용자의 선호를 반영한 것이라고 확신할 수 있습니다.

Netflix Prize Competition

  • 지금까지 실제 Netflix Prize Competition에서 입증된 Matrix Factorization 방법 및 효용성에 대해서 살펴보았습니다.

  • 다음으로는 Netflix Prize Competition에서 실제 적용한 Matrix Factorization 결과로부터 두 개의 Latent Factor를 사용하여 각 영상들을 2차원 평면에 Plotting한 것입니다.

  • 첫 번째 Latent Factor(X축)는 좌측에 가까울수록 남성과 청소년 대상을 고려한 저속한 코미디와 공포영화이고, 우측에 가까울수록 여성 중심이고 진지한 색채를 사진 드라마와 코미디를 뜻합니다.

  • 두 번째 Latent Factor(Y축)는 상단에 가까울수록 비평가들에게 호의적이고 독립적인 영화이고, 하단에 가까울수록 주류영화들을 뜻합니다.

  • 다음은 Factorization에 다양한 접근 및 매개변수 변화를 주어 실험한 결과에 대한 해석입니다.
    • 편향적 성격을 고려하여 RMSE 감소
    • Implicit한 데이터 추가를 통한 RMSE 감소
    • 시간에 따른 선호도 변화를 고려하여 RMSE 감소
    • 학습을 위한 파라미터 증가를 통한 RMSE 감소

마무리

Netflix Prize Competition에서 우수한 결과를 낸 팀의 방법론 내용을 담고 있는 "Matrix Factorization Techniques For Recommender System"에 대해서 간단하게 리뷰해보았습니다.

해당 논문은 추천 시스템을 구축할 때 MF방식을 어떻게 더욱 효과적 활용할 수 있는지에 대해서 우리에게 말하고 있습니다.

지금도 계속해서 최신화 알고리즘들이 많이 나오고 있지만, 크게 근간은 바뀌지 않고 전통적인 방법론의 메커니즘으로부터 시작하게 됩니다.

기초부터 차근하게 쌓아나가시길 바라면서, 우리 모두의 성공적인 학습을 기원합니다.
감사합니다.

0개의 댓글