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

[Rec] Factorization Machine이란? - 개괄잡기

by 다람이도토리 2021. 12. 29.
관련 논문 : https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf

이번에는, Factorization Machine이 무엇인지 정도, 간단하게 감을 잡아보고자 한다.
(구체적인 코딩 및 학습 과정을 위해선..아직 논문을 깊게 읽어봐야 합니다...)

들어가기 전에 - Matrix Factorization

역시, 이번에도 시작점은 Matrix Factorization이다. Matrix Factorization의 주요 목적은 평점행렬을 user에 대한 부분과 item에 대한 부분으로 나누는 것이다.

 

여기서, 주요하게 겪을 수 있는 문제는 행렬을 분해하던, 근사를 하던(truncated SVD) rating matrix가 비어있을 경우 어떻게 채울 것인가? sparse함을 겪을 수 있다는 문제가 존재한다.  즉 cold start 문제에 부딪히게 되는데, 이에 대한 개선이 이루어진 모델 중 하나가, Factorization Machine이라고 한다.

 

Factorization Model은 무엇이 달라졌는가?

Factorization Model은 추천 문제를 회귀분석의 문제로 바라보게 된다. 이 때, user-rating matrix가 아니라, user, item, metadata 등의 정보를 펼쳐서 나열하게 된다. 그리고 마지막에  target을 넣고 학습하게 된다.

 

그래서 학습을 위한 식은 어떻게 구성되었는가?

3개의 항으로 구성되어있는데, w0을 제외하고 선형term과 latent vector의 내적term으로 구분된다.

선형 term에서는 개별 변수의 영향력을 학습하게 되며, latent vector의 경우는 xi와 xj, 즉 각 row간의 관계를 학습해주게 된다.

 

그런데, 그래서 결국 왜 FM은 뭐가 좋아진 것인가?

1) 우선, 연산량에 대한 개선이 발생했다. 내적 형태로의 변환을 통해 O(N^2) 정도의 복잡도에서 선형 속도로 개선이 발생했다.

2) 결국 cold start의 해결에 조금은 도움이된다는데 충분한 내용을 찾기가 어려워 추론을 해보자면 내적 term에서 모든 행들에 대한 상호 관계 파악을 통해, 데이터에 없는 관계를 간접적으로 transivite한 쌍 형태를 통해서 추론 가능한 것으로 보인다. (예시, xi와 xk에 대한 관계는 없지만 xi와 xj,  xj와 xk의 관계를 통해 추론 가능?)
* 이에 대한 명백한 답을 더 찾고 싶다.....