반응형

Matrix Completion은 사용자와 아이템 사이의 비어 있는 상호작용 값을 예측하는 문제로 볼 수 있다. 추천 시스템에서는 평점, 클릭, 구매 같은 interaction data를 행렬로 놓고 빈칸을 채우는 방식으로 자주 설명된다.

이 글은 user-item 행렬, explicit feedback, implicit feedback, collaborative filtering, matrix factorization, latent feature, regularization을 연결해 추천 시스템을 이해하려는 메모다.

 

핵심 정리

추천 시스템에서 사용자를 행, 아이템을 열로 두고 평점이나 클릭 같은 상호작용을 값으로 넣으면 user-item matrix를 만들 수 있다. 대부분의 사용자는 모든 아이템을 평가하지 않으므로 행렬에는 빈칸이 많다. Matrix Completion은 이 빈칸을 사용자의 과거 행동과 다른 사용자들의 패턴을 바탕으로 예측하려는 접근이다. Matrix Factorization은 큰 user-item 행렬을 더 작은 두 행렬의 곱으로 근사해 사용자와 아이템의 숨은 특징을 찾는 방식으로 이해할 수 있다. 이때 중간 차원은 latent feature 수로 볼 수 있고, 관측된 값만 사용해 학습해야 아직 보지 않은 빈칸을 예측하는 의미가 생긴다. 과적합을 줄이기 위해 regularization을 함께 쓰는 것도 중요한 포인트다.

  • user-item matrix는 사용자와 아이템 사이의 상호작용을 표로 만든 것이다.
  • explicit feedback은 평점처럼 사용자가 직접 남긴 평가를 뜻한다.
  • implicit feedback은 클릭이나 조회처럼 행동에서 추정되는 신호를 뜻한다.
  • Matrix Completion은 비어 있는 user-item 값을 예측하는 문제로 볼 수 있다.
  • Matrix Factorization은 큰 행렬을 더 작은 잠재 특징 행렬들로 분해해 근사한다.
  • latent feature는 사용자와 아이템을 설명하는 숨은 요인으로 이해할 수 있다.
  • 학습에는 관측된 상호작용 값만 사용해야 빈칸 예측의 의미가 유지된다.
  • regularization은 추천 모델이 관측 데이터에 과하게 맞춰지는 것을 줄이는 데 쓰인다.

원문은 Matrix Completion과 추천 시스템을 처음 연결하며 정리한 학습 메모입니다. 보강문에서는 user-item 행렬, feedback 종류, matrix factorization, latent feature, regularization을 한 흐름으로 묶었습니다. 추천 시스템을 볼 때는 알고리즘 이름보다 어떤 상호작용 데이터를 관측했고, 무엇을 빈칸으로 예측하려는지 먼저 정리하는 것이 좋습니다.

matrix completion

user - item 간 관계가 1:1 이고 interaction이 평점등으로 단순하다면 다음처럼 matrix completion문제로 치환 가능하다.

content-based

collaborative filtering

interaction data 사용

explicit feedback

평점 같은 것

implicit feedback

아이템 클릭 같은 것

matrix-factorization

수학적 의미

일단 대충 찾아본 첫번째 느낌으로는

A라는 행렬이 n x m 인데 (행이 n개 열이 m개)

n x 3 행렬과 3 x m 으로 분리를 하는거야

그럼 곱하면 다시 n x m 행렬이 나오겠지..

근데 엘리먼트 개수만 살펴보면은

전자는 n x m 개인데 후자는 n x 3 + 3 x m = 3 ( n + m) 이 되어서 n, m이 될 경우는 개 많이 줄어들겠지

오직 한가지 남은 문제는 저렇게 하기위해서 소인수 비스무래하게 곱해서 원래의 원소값이 나오도록 해야하니까 규칙을 찾아내는게 문제겠지

위의 그림이 바로 그런 규칙을 찾아낸 경우인데.. 모든경우에 되지는 않겠지..

여기보고 이해하려 시도중

추천 시스템에서 활용

아래 표를 보자.. 왼쪽에 U1 ~ U5가 유저1에서 부터 유저5를 의미하고

D1 ~ D4가 영화1부터 영화4를 의미한다고 해보자

그리고 숫자는 평점이고.. 하이픈은 물론 평가하지 않은 경우를 나타냄..

이때 matrix factorization을 수학적으로 생각해보면 규칙을 찾아내서 더 작은 행렬로 묶어준다고 할 수 있으니까

위의 하이픈을 예측하는데 그 규칙을 찾는다는 행위를 이용할 수 있다(?)라고도 할 수 있겠지..

어떻게 factorize 할 것인가

위의 수학적 예를 보면 3이라는 중간 숫자를 이용해서

M x N 행렬을 M x 3 과 3 x N 으로 분리(factorize)했었다.

이때 3이라는 숫자를 K = latent(숨은) feature 개수라고 위 링크에서는 보고 있네

구글링크에서는 rank라고 하는것 같다.(확인 필요)

K는 그냥 고정 숫자로 박아주는 것 같고

무려 gradient descent로 값을 튜닝하는데.. 중요하다고 할만한건 위의 하이픈 정보는 빼고 튜닝해야 하이픈에 적절한 값이 예측된다는 것 (사실 당연)

오버피팅을 막기위한 regularazation기술도 동일하게 들어가네

반응형

+ Recent posts