推荐系统基础之矩阵分解

1 隐语义模型与矩阵分解

隐语义模型最早在文本领域被提出,用于挖掘文本的隐含语义。在推荐系统中,隐语义模型的核心思想就是基于用户的行为挖掘用户和物品的潜在特征。那么,如何找出用户和物品的潜在特征呢?矩阵分解就是一个广泛应用的方法。

2 矩阵分解算法(MF)原理

对于一个 U × I U \times I U×I的用户-物品矩阵,我们选择F作为潜在特征数,将用户-物品矩阵分解成为一个 U × F U \times F U×F的用户矩阵P和一个 F × I F \times I F×I的物品矩阵Q,这就是矩阵分解算法。
矩阵分解
如何理解矩阵分解呢?举个例子,当我们在进行音乐推荐的时候,发现每个用户都有自己对音乐的偏好,并且对不同的元素有不同的喜好程度,我们将每个用户对各个元素的喜好程度进行量化,就得到下面这个用户矩阵:
用户矩阵
同时,不同的歌曲中所含有的各个元素的比例也不一样,量化之后就得到下面这个物品矩阵:
在这里插入图片描述
那么要预测张三对音乐A的评分,我们就可以用 0.6 ∗ 0.9 + 0.8 ∗ 0.1 + 0.1 ∗ 0.2 + 0.1 ∗ 0.4 + 0.7 ∗ 0 = 0.68 0.6*0.9+0.8*0.1+0.1*0.2+0.1*0.4+0.7*0=0.68 0.60.9+0.80.1+0.10.2+0.10.4+0.70=0.68
在这个例子中,小清新、重口味、优雅、伤感、五月天就是潜在特征,潜在特征数F就是5。不过,在实际的应用中,我们可能很难解释模型所学习到的潜在特征的具体含义。
最常用的一种矩阵分解方法是SVD分解,虽然名字叫SVD分解,但它只是从矩阵论中的SVD分解借鉴过来的,两者并不是一回事。矩阵论中的SVD分解公式是 A m × n ≈ U m × k Σ k × k V k × n T A_{m \times n} \approx U_{m \times k} \Sigma_{k \times k} V_{k \times n}^T Am×nUm×kΣk×kVk×nT,把中间的 Σ k × k \Sigma_{k \times k} Σk×k去掉,把A看作是用户-物品矩阵,U看作是用户矩阵,V看作是物品矩阵,这就是基于SVD的矩阵分解了。
基于上面的讨论,我们知道,对于用户u和物品i,在已知用户矩阵P和物品矩阵Q的情况下,我们可以预测其评分为:
r ^ u , i = ∑ f = 1 F P u , f Q f , i \hat{r}_{u,i} = \sum_{f=1}^{F}P_{u,f}Q_{f,i} r^u,i=f=1FPu,fQf,i
而一开始,我们并不知道P和Q,我们可以先用随机数对P和Q进行初始化(根据经验,通常采用 随 机 数 / F 随机数/\sqrt F /F 作为P和Q矩阵的初始值),然后采用梯度下降来学习P和Q矩阵中的各个参数。于是,经过初始化后,我们得到对每个评分的预测 r ^ u , i \hat{r}_{u,i} r^u,i,而该评分的真实值为 r u , i r_{u,i} ru,i,因此,预测误差为:
e u , i = r u , i − r ^ u , i e_{u,i} = r_{u,i}-\hat{r}_{u,i} eu,i=ru,ir^u,i
采用误差的平方和作为损失函数:
L o s s = 1 2 ∑ u , i e u , i 2 = 1 2 ∑ u , i ( r u , i − r ^ u , i ) 2 = 1 2 ∑ u , i ( r u , i − ∑ f =

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值