본 글은 2010년 발표된 Factorization Machines를 읽고 요약 및 정리한 글입니다.
논문
논문제공코드(c++)
직접 구현 Factorization 모델 코드 (Pytorch)
직접 구현 FM Movielens100k 학습 코드 (Jupyter)
| 구분 | Matrix Factorization (MF) | Factorization Machine (FM) | Support Vector Machine (SVM) |
|---|---|---|---|
| 주요 목적 | user–item interaction (추천 시스템) | 범용 예측 모델 (추천, CTR, 회귀/분류 등) | 분류 또는 회귀 |
| 입력 형태 | user, item | 여러 feature (user, item, context 등) | 여러 feature (벡터 형태 입력) |
| 모델 수식 | |||
| 상호작용 방식 | Inner Product(user, item) | feature 간 2차 상호작용(term interaction) | feature 간 선형 결합(linear combination) |
| Feature 처리 | user, item만 사용 | 범주형/연속형 모두 가능 | 범주형/연속형 모두 가능 |
| 비선형 확장 | 불가능 (기본은 선형) | 2차 상호작용까지만 | 가능 (커널 함수 사용 시) |
| 모델 복잡도 | 비교적 단순 | 약간 복잡 (feature 조합 고려) | 커널 종류에 따라 다양 |
| 학습 목표 | 평점/선호도 예측 | 회귀, 분류, CTR 등 다양한 예측 | 클래스 간 마진 최대화 |
| 출력 예시 | 유저가 아이템을 클릭할 확률 | 클릭 확률, 구매 확률, 전환율 | 클래스 라벨 (예: +1 / -1) |
| 대표 사용 예시 | 영화/상품 추천 | 광고 CTR, 추천 랭킹, 피처 상호작용 모델 | 이미지 분류, 스팸 필터, 이진 분류 |

실제 transaction과 같은 상황에 만들어지는 피처 벡터
Factorization Machines에서 사용될 input 데이터 형태
- Common Prediction Task
- Classification
- Regression
1) Model Equation(degree 2)
2) Expressiveness
3) Parameter Estimation Under Sparsity
4) Computation