- 构建企业级推荐系统:算法、工程实现与案例分析
- 刘强
- 404字
- 2021-08-06 15:00:04
7.2.3 分解机模型求解
分解机模型公式相对简单,完全可导,我们可以用平方损失函数、logit损失函数或hinge损失函数来学习FM模型。从7.2.2节的介绍我们知道,分解机模型的值可以在线性时间复杂度计算出来,因此FM的模型参数(w0,w,V)可以在工程实现上高效地利用梯度下降算法(SGD、ALS等)来训练(即我们可以通过线性时间复杂度求出下面的ex,所以在迭代更新参数时是非常高效的,见下面的迭代更新参数的公式)。结合式(7-1)和式(7-2),就很容易计算出FM模型的梯度,具体如下:
记,针对平方损失函数,具体的参数更新公式如下(未增加正则项,其他损失函数的迭代更新公式类似,也很容易推导出来):
其中,与i无关,因此可以事先计算出来(在做预测求或者在更新参数时,都需要计算该量)。上面的梯度可以在常数时间复杂度O(1)下计算出来。在模型训练更新时,在O(kn)时间复杂度下即可完成对样本(x,y)的更新(如果是稀疏情况,更新时间复杂度是O(km(x)),m(x)是特征x非零元素个数)。7.4节会细讲怎么进行模型训练。