python实现lfm_LFM的学习方法

LFM为推荐系统中,矩阵分解的执牛耳者。由于SVD不善于处理稀疏向量,因此目前最常用的矩阵(共现矩阵)分解的方法就是LFM。

LFM原理

想要了解LFM,首先要知道共现矩阵,共现矩阵是一个二维矩阵,每个用户对每个物品的打分的矩阵。纵坐标为用户,横坐标为物品,对的评分即为共现矩阵(i,j)位置上的值。然而,共现矩阵上每一位置并不是全都有值的(用户并不喜欢对商品评分),正因为这样所以SVD并不能对该矩阵进行分解。LFM的原理可以使用一个公式表达:

加入正则项:

即:只使用共现矩阵中有值的部分进行学习,学习范围为(K),其中为共现矩阵中的值,为物品的隐向量(待求),为用户的隐向量(待求)。使用隐向量具有泛化性。通过最小化用户隐向量与物品隐向量的内积和真实评分的mse得到,每个用户以及每个物品的隐向量。

ALS学习方法

ALS是交替最小二乘,如下公式:

即先固定一个,求解另一个。固定一个,求另一个是使用梯度下降的方法求解。

全学习法

全学习法就是参数q和p一起更新,不在是固定一个求另一个。

分别对p和q求梯度可得:

由于计算比较复杂,可以使用随机梯度下降法求解。当然,也可以使用全梯度求解。

对于随机梯度下降法有python代码实现,具体参考文献2.

参考文献深度学习推荐系统(王喆)

推荐系统实践(项亮)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值