推荐系统–矩阵分解(1)
推荐系统–矩阵分解(2)
推荐系统–矩阵分解(3)
推荐系统–矩阵分解(4)
推荐系统–矩阵分解(5)
推荐系统–矩阵分解(6)

3 BiasSVD:考虑偏置

有一些用户会给出偏高的评分,有一些物品也会收到偏高的评分,比如电影观众为铁粉,一些受某时期某事件影响的电影。所以需要考虑偏置对评分的影响,其公式如下:
L(θ)=arg⁡min⁡⏟pu,qi∑u,i(rui−μ−bu−bi−puTqi)2+λ(∥pu∥22+∥qi∥22+∥bu∥22+∥bi∥22)(4)\begin{aligned} L(\theta)=\underbrace{\arg \min }_{p_{u}, q_{i}} \sum_{u, i}\left(r_{u i}-\mu-b_{u}-b_{i}-p_{u}^{T} q_{i} \right)^{2} \\ +\lambda\left(\left\|p_{u}\right\|_{2}^{2}+\left\|q_{i}\right\|_{2}^{2}+\left\|b_{u}\right\|_{2}^{2}+\left\|b_{i}\right\|_{2}^{2}\right) \end{aligned} \tag4L(θ)=pu​,qi​argmin​​u,i∑​(rui​−μ−bu​−bi​−puT​qi​)2+λ(∥pu​∥22​+∥qi​∥22​+∥bu​∥22​+∥bi​∥22​)​(4)
符号说明:
用户的预测评分为:rui^=puTqi+μ+bu+bi\hat{r_{ui}} = p_{u}^T q_{i} + \mu + b_{u} + b_{i}rui​^​=puT​qi​+μ+bu​+bi​;
偏差为:eui=rui−rui^e_{ui}=r_{ui}-\hat{r_{ui}}eui​=rui​−rui​^​;
μ\muμ:训练集中所有评分记录的全局平均数,表示了训练数据的总体评分情况,对于固定的数据集,它是一个常数;
bub_ubu​:用户uuu的偏置,独立于物品特征的因素,表示某一特定用户的打分习惯。例如,对于批判性用户对于自己的评分比较苛刻,倾向于打低分;而乐观型用户则打分比较保守,总体打分要偏高;
bib_ibi​:物品iii的偏置,特立于用户兴趣的因素,表示某一特定物品得到的打分情况。以电影为例,好片获得的总体评分偏高,而烂片获得的评分普遍偏低,物品偏置捕获的就是这样的特征。
对公式(4)求偏导,理后可以得到迭代公式为:
pu,k=pu,k+η(euiqk,i−λpu,k)qk,i=qk,i+η(euipu,k−λqi,k)bu=bu+η(eui−λbu)bi=bi+η(eui−λbi)(5)\begin{aligned} p_{u, k} &=p_{u, k}+\eta\left(e_{u i} q_{k, i}-\lambda p_{u, k}\right) \\ q_{k, i} &=q_{k, i}+\eta\left(e_{u i} p_{u, k}-\lambda q_{i, k}\right) \\ b_{u} &=b_{u}+\eta\left(e_{ui} -\lambda b_{u}\right) \\ b_{i} &=b_{i}+\eta\left(e_{ui} -\lambda b_{i}\right) \end{aligned} \tag5 pu,k​qk,i​bu​bi​​=pu,k​+η(eui​qk,i​−λpu,k​)=qk,i​+η(eui​pu,k​−λqi,k​)=bu​+η(eui​−λbu​)=bi​+η(eui​−λbi​)​(5)

4 SVD++:增加历史行为

通过观看B站上的视频,终于把SVD++核心思想搞清楚了:

  • 它是来探索物品与物品之间关联关系的,比如对逃学威龙1评分高的人,可能也会给逃学威龙2高评分;
  • 由于需要探索物品与物品之间的关联关系,可以使用显式反馈,也可以使用显式反馈+隐式反馈;
  • 利用隐式反馈来探索物品与物品之间的关联关系,信息更加丰富:少数用户会主动点评电影或者美食,大多数用户只会浏览或者观看,也就是说显式反馈比隐式反馈少。

SVD++模型的步骤如下:

  • 对于某一个用户uuu,它提供了反馈的物品集合定义为N(u)N(u)N(u);
  • 假设j∈N(u)j \in N(u)j∈N(u),该物品jjj和预测物品iii之间的关系为wijw_{ij}wij​;
  • 将这个关系作为预测评分的一个部分,则有如下公式:
    rui^=μ+bu+bi+puTqi+1∣N(u)∣∑j∈N(u)wij(6)\begin{aligned} \hat{r_{ui}}=\mu+b_{u}+b_{i}+p_{u}^T q_{i} + \frac{1}{\sqrt{|N(u)|}} \sum_{j \in N(u)}w_{ij} \tag6 \end{aligned} rui​^​=μ+bu​+bi​+puT​qi​+∣N(u)∣​1​j∈N(u)∑​wij​​(6)
    引入1∣N(u)∣\frac{1}{\sqrt{|N(u)|}}∣N(u)∣​1​是为了消除不同∣N(u)∣|N(u)|∣N(u)∣个数引起的差异。
    WWW矩阵如下表所示:
t1t_1t1​ t2t_2t2​ t3t_3t3​ t4t_4t4​
t1t_1t1​ w11w_{11}w11​ w12w_{12}w12​ w13w_{13}w13​ w14w_{14}w14​
t2t_2t2​ w21w_{21}w21​ w22w_{22}w22​ w23w_{23}w23​ w24w_{24}w24​
t3t_3t3​ w31w_{31}w31​ w32w_{32}w32​ w33w_{33}w33​ w34w_{34}w34​
t4t_4t4​ w41w_{41}w41​ w42w_{42}w42​ w43w_{43}w43​ w44w_{44}w44​
  • WWW矩阵维度为n×nn \times nn×n,维度很大,我们对WWW进行矩阵分解后得到如下公式:
    rui^=μ+bu+bi+puTqi+1∣N(u)∣xuT∑j∈N(u)yj(7)\begin{aligned} \hat{r_{ui}}=\mu+b_{u}+b_{i}+p_{u}^{T} q_{i} + \frac{1}{\sqrt{|N(u)|}} x_u^T \sum_{j \in N(u)}y_{j} \tag7 \end{aligned} rui​^​=μ+bu​+bi​+puT​qi​+∣N(u)∣​1​xuT​j∈N(u)∑​yj​​(7)
  • xux_uxu​表示用户的隐向量,可以用pup_upu​替换,这样就减少了对WWW矩阵的分解,则上式可以表示为:
    rui^=μ+bu+bi+puTqi+1∣N(u)∣puT∑j∈N(u)yj=μ+bu+bi+puT(qi+1∣N(u)∣∑j∈N(u)yj)(10)\begin{aligned} \hat{r_{ui}}=\mu+b_{u}+b_{i}+p_{u}^{T} q_{i} + \frac{1}{\sqrt{|N(u)|}} p_u^T \sum_{j \in N(u)}y_{j} \\ = \mu+b_{u}+b_{i}+p_{u}^{T} \left(q_{i} + \frac{1}{\sqrt{|N(u)|}} \sum_{j \in N(u)}y_{j}\right)\tag{10} \end{aligned} rui​^​=μ+bu​+bi​+puT​qi​+∣N(u)∣​1​puT​j∈N(u)∑​yj​=μ+bu​+bi​+puT​⎝⎛​qi​+∣N(u)∣​1​j∈N(u)∑​yj​⎠⎞​​(10)

其优化目标函数:
L(θ)=arg⁡min⁡⏟pu,qi∑u,i(rui−μ−bu−bi−puTqi−puT1∣N(u)∣∑j∈N(u)yj)2+λ(∥pu∥22+∥qi∥22+∥bu∥22+∥bi∥22+∑j∈N(u)∥yj∥22)(11)\begin{aligned} L(\theta) = \underbrace{\arg \min }_{p_{u}, q_{i}} \sum_{u, i}\left(r_{ui}-\mu-b_{u}-b_{i}-p_{u}^{T} q_{i} -p_{u}^{T} \frac{1}{\sqrt{|N(u)|}} \sum_{j \in N(u)} y_{j}\right)^{2} \\ +\lambda\left(\left\|p_{u}\right\|_{2}^{2}+\left\|q_{i}\right\|_{2}^{2}+\left\|b_{u}\right\|_{2}^{2}+\left\|b_{i}\right\|_{2}^{2}+\sum_{j \in N(u)}\left\|y_{j}\right\|_{2}^{2}\right) \end{aligned} \tag{11} L(θ)=pu​,qi​argmin​​u,i∑​⎝⎛​rui​−μ−bu​−bi​−puT​qi​−puT​∣N(u)∣​1​j∈N(u)∑​yj​⎠⎞​2+λ⎝⎛​∥pu​∥22​+∥qi​∥22​+∥bu​∥22​+∥bi​∥22​+j∈N(u)∑​∥yj​∥22​⎠⎞​​(11)

对公式(11)求偏导,令eui=rui−rui^e_{ui}=r_{ui}- \hat{r_{ui}}eui​=rui​−rui​^​,整理后可以得到迭代公式:
bu=bu+η⋅(eui−λ⋅bu)bi=bi+η⋅(eui−λ⋅bi)pu=pu+η⋅(eui⋅qi−λ⋅pu)qi=qi+η⋅(eui(pu+1∣N(u)∣∑j∈N(u)yj)−λ⋅qi)yj=yj+η⋅(eui⋅1∣N(u)∣qi−λ⋅qi)(12)\begin{aligned} b_u = b_u + \eta \cdot (e_{ui} - \lambda \cdot b_u) \\ b_i = b_i + \eta \cdot (e_{ui} - \lambda \cdot b_i) \\ p_u = p_u + \eta \cdot (e_{ui} \cdot q_i - \lambda \cdot p_u) \\ q_i = q_i + \eta \cdot (e_{ui}(p_u + \frac{1}{\sqrt{|N(u)|}}\sum_{j \in N(u)} y_j) - \lambda \cdot q_i) \\ y_j = y_j + \eta \cdot (e_{ui} \cdot \frac{1}{\sqrt{|N(u)|}} q_i - \lambda \cdot q_i) \\ \end{aligned} \tag{12} bu​=bu​+η⋅(eui​−λ⋅bu​)bi​=bi​+η⋅(eui​−λ⋅bi​)pu​=pu​+η⋅(eui​⋅qi​−λ⋅pu​)qi​=qi​+η⋅(eui​(pu​+∣N(u)∣​1​j∈N(u)∑​yj​)−λ⋅qi​)yj​=yj​+η⋅(eui​⋅∣N(u)∣​1​qi​−λ⋅qi​)​(12)
参考的迭代公式如下:

推荐系统--矩阵分解(2)相关推荐

  1. 推荐系统--矩阵分解(5)

    推荐系统–矩阵分解(1) 推荐系统–矩阵分解(2) 推荐系统–矩阵分解(3) 推荐系统–矩阵分解(4) 推荐系统–矩阵分解(5) 推荐系统–矩阵分解(6) 8 基于隐式反馈的矩阵分解 8.1 引入 相 ...

  2. 推荐系统--矩阵分解(3)

    推荐系统–矩阵分解(1) 推荐系统–矩阵分解(2) 推荐系统–矩阵分解(3) 推荐系统–矩阵分解(4) 推荐系统–矩阵分解(5) 推荐系统–矩阵分解(6) 5 TimeSVD++:增加时间因素 物品的 ...

  3. 推荐系统--矩阵分解(4)

    推荐系统–矩阵分解(1) 推荐系统–矩阵分解(2) 推荐系统–矩阵分解(3) 推荐系统–矩阵分解(4) 推荐系统–矩阵分解(5) 推荐系统–矩阵分解(6) 7 基于情感分析的矩阵分解 7.1 引入 [ ...

  4. 推荐系统--矩阵分解(1)

    推荐系统–矩阵分解(1) 推荐系统–矩阵分解(2) 推荐系统–矩阵分解(3) 推荐系统–矩阵分解(4) 推荐系统–矩阵分解(5) 推荐系统–矩阵分解(6) 1 引入 一个矩阵可以分解为两个小矩阵的乘积 ...

  5. 推荐系统——矩阵分解

    一.隐因子模型(Latent Factor Model,LFM) LFM是推荐系统中的经典模型,它也就是2006年Simon Funk在博客中公开的算法,当时背景是Netflix Prize比赛.LF ...

  6. 入门推荐系统——矩阵分解

    1.隐语义模型与矩阵分解 协同过滤算法完全没有利用到物品本身或者是用户自身的属性, 仅仅利用了用户与物品的交互信息就可以实现推荐,是一个可解释性很强, 非常直观的模型.存在问题, 第一个就是处理稀疏矩 ...

  7. 推荐系统——矩阵分解FM

    矩阵分解 隐语义模型与矩阵分解 之所以我们提出隐语义模型与矩阵分解,原因就是[[协同过滤]]存在泛化能力弱的问题 而对于隐语义模型而言,我们可以利用隐向量来代表隐藏信息 此外,也可以在一定程度上弥补[ ...

  8. 【转载】推荐系统-矩阵分解-SVD-通俗易懂

    [转载[https://blog.csdn.net/u011412768/article/details/52972081#commentBox] 因为要用到基于SVD的推荐作为baseline,所以 ...

  9. 推荐系统--联邦学习下的矩阵分解(6)

    推荐系统–矩阵分解(1) 推荐系统–矩阵分解(2) 推荐系统–矩阵分解(3) 推荐系统–矩阵分解(4) 推荐系统–矩阵分解(5) 推荐系统–矩阵分解(6) 9 应用于联邦学习的矩阵分解 这个部分主要参 ...

最新文章

  1. POJ 1207 The 3n + 1 problem
  2. Quartz1.X中CronTrigger第一次启动的问题
  3. Skype For Business 2015实战系列2:安装活动目录
  4. 使用ArcGIS Engine连接ArcIMS feature Service 获得FeatureCLass
  5. inputstreamreader 编码不完整_素材编码对剪辑效率的影响
  6. 高中毕业 84 岁奶奶自学编程受邀参加 WWDC,人生从来没有太晚!
  7. ffmpeg create a video from 4th image and and slow down the play speed
  8. mysql怎样在bat脚本中添加日志_如何在windows下用bat脚本定时备份mysql
  9. python人脸识别防小偷_基于python的人脸识别(检测人脸、眼睛、嘴巴、鼻子......)...
  10. 2018-04-08椭圆曲线测试程序
  11. “方法X对于类型Y是模糊的” Java模糊方法调用null错误
  12. 今天发现的好几个PP文字,不敢独享,gaga
  13. 谷粒商城:跨域问题解决
  14. 数据仓库建设思维导图
  15. selenium超详解
  16. MBR 与 GPT - 分区时要知道的事情
  17. mac电脑如何找到usr文件夹
  18. Nexus 07 制品库制品晋级实践
  19. Leptonica PIX 与 Qt QImage 的相互转换
  20. android GPS应用程序设计

热门文章

  1. linux跨版本升级,深度Deepin系统支持跨版本升级
  2. chackbox的值 php获取_最详细最全的PHP面试题(附答案)
  3. php培训出生做微电影网站的,微电影分享网站织梦整站源码
  4. 高并发服务器开源项目,百万级高并发WebRTC流媒体服务器设计与开发(示例代码)...
  5. Nginx的初步安装
  6. android string 去掉斜杠,Android – PATH中的改装和斜杠字符
  7. nginx https透明代理_Nginx反向代理https,配置lets-encrypt证书教程
  8. 挂机宝装mysql_挂机宝安装
  9. linux php 执行python,Linux(Ubuntu)下php使用exec调用python程序返回json数据
  10. 奥鹏20年12月作业考核(C语言专科),《C语言(专科)》20年12月作业考核【答案100分】...