推荐算法中的MF, PMF, BPMF[通俗易懂]

推荐算法中的MF, PMF, BPMF[通俗易懂]1.矩阵分解(MF)目前推荐系统中用的最多的就是矩阵分解方法,在NetflixPrize推荐系统大赛中取得突出效果。以用户-项目评分矩阵为例,矩阵分解就是预测出评分矩阵中的缺失值,然后根据预测值以某种方式向用户推荐。常见的矩阵分解方法有基本矩阵分解(basicMF),正则化矩阵分解)(RegularizedMF),基于概率的矩阵分解(PMF)等。利用代数中SVD方法对矩阵进行分解。奇异值

大家好,又见面了,我是你们的朋友全栈君。

1.矩阵分解(MF)

  • 目前推荐系统中用的最多的就是矩阵分解方法,在Netflix Prize推荐系统大赛中取得突出效果。以用户-项目评分矩阵为例,矩阵分解就是预测出评分矩阵中的缺失值,然后根据预测值以某种方式向用户推荐。常见的矩阵分解方法有基本矩阵分解(basic MF),正则化矩阵分解)(Regularized MF),基于概率的矩阵分解(PMF)等。
    矩阵实例

    • 利用代数中SVD方法对矩阵进行分解。奇异值分解首先需要对评分矩阵进行补全,比如用全局平均值或用户、物品平均值进行补全。然后对补全之后的矩阵进行SVD分解从而将高维评分矩阵分解成低维的U,I矩阵。但是这种方法有两个问题:一是补全后的矩阵是一个稠密矩阵,存储需要很大空间。二是SVD计算复杂度很高。

    • Basic MF最基础的分解方式,将评分矩阵R分解为用户矩阵U和项目矩阵S, 通过不断的迭代训练使得U和S的乘积越来越接近真实矩阵,矩阵分解过程如图:
      这里写图片描述
      预测值接近真实值就是使其差最小,这是我们的目标函数,然后采用梯度下降的方式迭代计算U和S,它们收敛时就是分解出来的矩阵。我们用损失函数来表示误差(等价于目标函数): 这里写图片描述
      R_ij是评分矩阵中已打分的值,U_i和S_j相当于未知变量。为求得公式1的最小值,相当于求关于U和S二元函数的最小值(极小值或许更贴切)。通常采用梯度下降的方法: 这里写图片描述
      yita 是学习速率,表示迭代的步长。其值为1.5时,通常以震荡形式接近极值点;若<1迭代单调趋向极值点;若>2围绕极值逐渐发散,不会收敛到极值点。具体取什么值要根据实验经验,另外还需要在每一步对学习速率进行衰减,目的是使算法尽快收敛。该方法也叫LFM(latent factor model).

    • 考虑偏置项的LFM。 在原有分解的基础上加入全局平均数,用户偏置项和item偏置项。(biassvd)

    • 考虑邻域影响的LFM。 在上一个基础上加上基于邻域方法(svd++)
    • 正则化矩阵分解是Basic MF的优化,解决MF造成的过拟合问题。其不是直接最小化损失函数,而是在损失函数基础上增加规范化因子,将整体作为损失函数。Regularized MF
    • 这里写图片描述
    • 其中这里写图片描述
    • 梯度下降结束条件:f(x)的真实值和预测值小于自己设定的阈值

PMF(概率矩阵分解)

RegularizedMF是对BasicMF的优化,而PMF是在RegularizedMF的基础上,引入概率模型进一步优化。假设用户U和项目V的特征矩阵均服从高斯分布,通过评分矩阵已知值用MAP(最大后验概率)和MLE(最大似然估计)(下面会详细说明)得到U和V的特征矩阵,然后用特征矩阵去预测评分矩阵中的未知值。
这里写图片描述
首先通过极大似然估计U,V
这里写图片描述
这里写图片描述
这里写图片描述
也就是说我们这里只考虑最大化分子,因为分母是一个定值。
这里写图片描述
解传统矩阵分解可以采用各种优化方法,对于概率分解,由于最后求的是参数U和V的最大似然估计,因此可以用最大期望法(EM)和马尔可夫链蒙特卡罗算法(MCMC)。
PMF也有改进的地方,它没有考虑到评分过程中用户的个人信息,比如有的用户就是喜欢打低分,有的项目(电影)质量就是不高,分肯定高不了等,这样可以采用加入偏置的概率矩阵分解(贝叶斯概率矩阵分解BPMF)
对比:
这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142926.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • nacicat15激活码-激活码分享

    (nacicat15激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html2KLKA7BQFO-eyJsaWN…

    2022年4月1日
  • debian配置samba_ubuntu设置文件共享

    debian配置samba_ubuntu设置文件共享●安装与配置Samba共享服务●创建目录为/share/public的共享目录●共享名为public●仅支持匿名用户的只读访问(请在该目录内存放一个文件名为file.txt,文件内容为“TestFile”以便于测试)●创建目录为/share/files的共享目录●共享名为files●创建zhangsan,wangwu两个用户,密码均为Skills39,并且都能从client客户端登录访问到该共享目录并上传文件●zhangsan用户可以查看和删除所有人的文件●wa

    2022年9月16日
  • 数据库关系模型的三类完整性约束[通俗易懂]

    数据库关系模型的三类完整性约束[通俗易懂]关系模型中有三类完整性约束,分别是:实体完整性,参照完整性,用户定义完整性实体完整性定义:实体完整性是用于保证关系数据库中每个元组都是可区分的,唯一的。它的意思就是说数据表中每一行都应该有办法将其唯一区分开来,这自然指的就是主键了,而且主键必须不能为空或部分为空。那么它大可以直接叫一些诸如“要有主键”等通俗的名字,但是为何要叫实体完整性呢?首先第一点,“实体完整性”这个名字听起来就很高…

    2022年7月16日
  • path是什么意思啊_on the path

    path是什么意思啊_on the path投影投影是JMESPath的关键特性之一。它允许您将表达式应用于元素集合。有五种投影:列表投影切片投影对象投影展平投影过滤投影处理投影需要注意的点投影分为两个步骤。左侧(LHS)创建一

    2022年7月29日
  • 上位机软件系统开发工具简介

    上位机软件系统开发工具简介1、微软基础类库(MFC)简介本系统上位机软件设计是基于MFC进行开发的,MFC(MicrosoftFoundationClasses)是微软基础类库的简称,提供了基于C++语言的面向对象编程的框架,软件工程师可以使用该框架开发Windows应用程序。本系统采用MFC作为上位机软件开发工具,主要原因是:(1)MFC使用C++作为底层编写语言,并对大多数常用的WindowsAPI进行了类的封装,并以成员函数或变量的形式开放接口供用户使用,这对在Windows系…

    2022年5月31日
  • activity生命周期的七种方法_九分之五大还是九分之四大

    activity生命周期的七种方法_九分之五大还是九分之四大Activity生命周期是指一个Activity从创建到销毁的全过程。下图是Activity的生命周期模型。一、生命周期五种状态(1)启动状态:Activity的启动状态很短暂,当Activity启动后便会进入运行状态。(2)运行状态:Activity在此状态时处于屏幕最前端,它是可见、有焦点的,可以与用户进行交互。如单击、长按等事件。即使出现内存不足的情况,Android…

    2022年8月30日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号