Factorization Machine(FM)1是现代推荐系统的基础算法之一。本文介绍FM的模型思想、计算与优化方法。
FM模型
问题
输入: n n n维数据 x \bf{x} x。
预测:标量 y y y
举例
- 回归: x \bf x x的元素和 y y y都为实数
- 二类分类: x \bf x x的元素为实数, y y y为 ± 1 \pm1 ±1
- 排序: x = ( x a , x b ) \textbf x =(x^a,x^b) x=(xa,xb)为有序对, y y y为 ± 1 \pm1 ±1
在实际问题中, x \bf x x往往非常稀疏: x \bf x x中非零元素个数远远小于 n n n。
举例
一个电影推荐系统,系统中有 n 1 n_1 n1个用户,有 n 2 n_2 n2部电影。
系统中的每一条记录包含如下信息:用户编号,时间,电影编号,打分。
想要设计一个系统,预测用户某时刻对某一部电影的评分。
对于每一条记录,按照如下方式将其转化为 ( x , y ) (\textbf x,y) (x,y)对:
|-|内容|维度|说明|
|----|----|----|
| x \textbf x x|1-hot编码的用户编号| n 1 n_1 n1|用户多,此部分稀疏|
||1-hot编码的电影编号| n 2 n_2 n2|电影多,此部分稀疏|
||0-1标记用户已经看过的电影,归一化到和为一| n 2 n_2 n2|大部分用户只看过很少电影,此部分稀疏|
||时间|1||
|y|评分|1||
稀疏数据的挑战
一个预测模型可以有不同的“度”(degree),度越大,对 x \bf x x元素之间的相互作用考虑的越多。
d = 1 d=1 d=1时,是线性模型:
y ( x ) = ∑ i = 1 n w i x i y(\textbf x)=\sum_{i=1}^nw_ix_i y(x)=i=1∑nwixi
d = 2 d=2 d=2时,考虑元素对之间的关系:
y ( x ) = ∑ i = 1 n w i 1 x i + ∑ i = 1 n ∑ j = i + 1 n w i j 2 x i x j y(\textbf x)=\sum_{i=1}^nw^1_ix_i+\sum_{i=1}^n\sum_{j=i+1}^nw^2_{ij}x_ix_j y(x)=i=1∑nwi1xi+i=1∑nj=i+1∑nwij2xixj
注意第二项,下标j的循环从i+1开始。
d = 3 d=3 d=3时,考虑三元组之间的关系:
y ( x ) = ∑ i = 1 n w i 1 x i + ∑