矩阵分解

1.隐语义模型

的核心思想是通过隐含特征(latent factor)联系用户兴趣和物品(item), 基于用户的行为找出潜在的主题和分类, 然后对item进行自动聚类,划分到不同类别/主题(用户的兴趣)。
先说说协同过滤算法, 这样好对比不同:

对于UserCF,首先需要找到和他们看了同样书的其他用户(兴趣相似的用户),然后给他们推荐那些用户喜欢的其他书。
对于ItemCF,需要给他们推荐和他们已经看的书相似的书,比如作者B看了很多关于数据挖掘的书,可以给他推荐机器学习或者模式识别方面的书。
潜在因子—— 用户矩阵Q 这个矩阵表示不同用户对于不同元素的偏好程度, 1代表很喜欢, 0代表不喜欢, 比如下面这样:
在这里插入图片描述
潜在因子——音乐矩阵P 表示每种音乐含有各种元素的成分, 比如下表中, 音乐A是一个偏小清新的音乐, 含有小清新的Latent Factor的成分是0.9, 重口味的成分是0.1, 优雅成分0.2…
在这里插入图片描述
根据隐向量其实就可以得到张三对音乐A的打分,即: 0.6 ∗ 0.9 + 0.8 ∗ 0.1 + 0.1 ∗ 0.2 + 0.1 ∗ 0.4 + 0.7 ∗ 0 = 0.69 0.6 * 0.9 + 0.8 * 0.1 + 0.1 * 0.2 + 0.1 * 0.4 + 0.7 * 0 = 0.69 0.60.9+0.80.1+0.10.2+0.10.4+0.70=0.69 按照这个计算方式, 每个用户对每首歌其实都可以得到这样的分数, 最后就得到了我们的评分矩阵:
在这里插入图片描述

2. 矩阵分解算法的原理

在矩阵分解的算法框架下, 我们就可以通过分解协同过滤的共现矩阵来得到用户和物品的隐向量, 就是上面的用户矩阵Q和物品矩阵P, 这也是“矩阵分解”名字的由来。
在这里插入图片描述

4. Basic SVD

Simon Funk公布了一个矩阵分解算法叫做Funk-SVD, 后来被Netflix Prize的冠军Koren称为Latent Factor Model(LFM)。 Funk-SVD的思想很简单: 把求解上面两个矩阵的参数问题转换成一个最优化问题, 可以通过训练集里面的观察值利用最小化来学习用户矩阵和物品矩阵。
如果有了用户矩阵和物品矩阵的话, 我们就知道了如果想计算用户 u u u对物品 i i i的评分, 只需要 Preference ⁡ ( u , i ) = r u i = p u T q i = ∑ f = 1 F p u , k q k , i \operatorname{Preference}(u, i)=r_{u i}=p_{u}^{T} q_{i}=\sum_{f=1}^{F} p_{u, k} q_{k,i} Preference(u,i)=rui=puTqi=f=1Fpu,kqk,i 而现在, 我们有真实的 r u , i r_{u,i} ru,i, 但是没有 p u T q i p_{u}^{T} q_{i} puTqi, 那么我们可以初始化一个啊, 随机初始化一个用户矩阵 U U U和一个物品矩阵 V V V, 然后不就有 p u T q i p_{u}^{T} q_{i} puTqi了? 当然你说, 随机初始化的肯定不准啊, 但是, 有了 p u T q i p_{u}^{T} q_{i} puTqi之后, 我们就可以计算一个猜测的 r ^ u i \hat{r}{u i} r^ui, 即 r ^ u i = p u T q i \hat{r}{u i}=p_{u}^{T} q_{i} r^ui=puTqi
这时候, 肯定是不准, 那么这个猜测的和真实值之间就会有一个误差: e u i = r u i − r ^ u i e_{u i}=r_{u i}-\hat{r}_{u i} eui=ruir^ui

有了误差, 我们就可以计算出总的误差平方和: SSE ⁡ = ∑ u , i e u i 2 = ∑ u , i ( r u i − ∑ k = 1 K p u , k q k , i ) 2 \operatorname{SSE}=\sum_{u, i} e_{u i}^{2}=\sum_{u, i}\left(r_{u i}-\sum_{k=1}^{K} p_{u,k} q_{k, i}\right)^{2} SSE=u,ieui2=u,i(ruik=1Kpu,kq

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值