LFM为推荐系统中,矩阵分解的执牛耳者。由于SVD不善于处理稀疏向量,因此目前最常用的矩阵(共现矩阵)分解的方法就是LFM。
LFM原理
想要了解LFM,首先要知道共现矩阵,共现矩阵是一个二维矩阵,每个用户对每个物品的打分的矩阵。纵坐标为用户,横坐标为物品,对的评分即为共现矩阵(i,j)位置上的值。然而,共现矩阵上每一位置并不是全都有值的(用户并不喜欢对商品评分),正因为这样所以SVD并不能对该矩阵进行分解。LFM的原理可以使用一个公式表达:
加入正则项:
即:只使用共现矩阵中有值的部分进行学习,学习范围为(K),其中为共现矩阵中的值,为物品的隐向量(待求),为用户的隐向量(待求)。使用隐向量具有泛化性。通过最小化用户隐向量与物品隐向量的内积和真实评分的mse得到,每个用户以及每个物品的隐向量。
ALS学习方法
ALS是交替最小二乘,如下公式:
即先固定一个,求解另一个。固定一个,求另一个是使用梯度下降的方法求解。
全学习法
全学习法就是参数q和p一起更新,不在是固定一个求另一个。
分别对p和q求梯度可得:
由于计算比较复杂,可以使用随机梯度下降法求解。当然,也可以使用全梯度求解。
对于随机梯度下降法有python代码实现,具体参考文献2.
参考文献深度学习推荐系统(王喆)
推荐系统实践(项亮)