Factorization Machine(FM)1是现代推荐系统的基础算法之一。本文介绍FM的模型思想、计算与优化方法。
FM模型
问题
输入:
预测:标量
举例
- 回归:x 的元素和y 都为实数
- 二类分类:x 的元素为实数,y 为±1
- 排序:x=(xa,xb) 为有序对,y 为±1
在实际问题中,
举例
一个电影推荐系统,系统中有n1 个用户,有n2 部电影。
系统中的每一条记录包含如下信息:用户编号,时间,电影编号,打分。
想要设计一个系统,预测用户某时刻对某一部电影的评分。对于每一条记录,按照如下方式将其转化为
(x,y) 对:
- 内容 维度 说明 x 1-hot编码的用户编号 n1 用户多,此部分稀疏 1-hot编码的电影编号 n2 电影多,此部分稀疏 0-1标记用户已经看过的电影,归一化到和为一 n2 大部分用户只看过很少电影,此部分稀疏 时间 1 y 评分 1
稀疏数据的挑战
一个预测模型可以有不同的“度”(degree),度越大,对
注意第二项,下标j的循环从i+1开始。
模型中参数总量为
FM的解决方案
FM使用分解(factorization)的方法解决这个问题。
以
类似地,
其中,
可以从以下两个角度考察FM模型的物理意义
- 参数总量从
O(nd) 减少到O(rnd) 。r 越大参数越多,模型越精细;r 越小,泛化力越强。 - 分解削弱了高阶参数之间的独立性:
wij 和wik 通过vi 关联。vi 维度r 越高,vi 对<vi,vj> 的决定性,高阶参数之间独立性越强,模型越精细。
对于实际问题,选用较小的
计算与求解
FM模型的计算和求解都非常快。
计算
以
可以首先把
对于
灵感
(a+b+c)2=a2+b2+c2+2ab+2ac+2bc 左边只需要1次乘法,而右边需要6次乘法:把二次项凑成和的平方可以节约计算。
把上式的求和项统一范围,便于计算:
括号内,两部分计算量均
结论:
FM是个线性模型。其计算量相对于变量维度
n ,以及模型度r 均为线性。
求解
FM模型的参数可以使用SGD方法方便地求解。
预测值对一元参数的导数非常直接:
时间复杂度为
预测值对于二元参数的导数:
其中
对于全部参数,求解梯度的时间复杂度为
- Rendle, Steffen. “Factorization Machines.” IEEE International Conference on Data Mining IEEE Computer Society, 2010:995-1000. ↩