基于受限玻尔兹曼机(RBM)的协同过滤

  受限玻尔兹曼机是一种生成式随机神经网络(generative stochastic neural network), 详细介绍可见我的博文《受限玻尔兹曼机(RBM)简介》, 本文主要介绍RBM在协同过滤的应用。

1. 受限玻尔兹曼机简单介绍

  传统的受限玻尔兹曼机是一种如下图所示, 其由一些可见单元(visible unit,对应可见变量,亦即数据样本)和一些隐藏单元(hidden unit,对应隐藏变量)构成,可见变量和隐藏变量都是二元变量,亦即其状态取{0,1}。整个网络是一个二部图,只有可见单元和隐藏单元之间才会存在边,可见单元之间以及隐藏单元之间都不会有边连接。

  

 

  将该模型应用到协同过滤需要解决以下两个问题:

  1. 鉴于RBM中的单元都是二元变量, 如果用这些二元变量来对整数值的评分建模?
  2. 用户的打分是非常稀疏的, 亦即用户只会对很少的物品(比如电影)打分, 如何处理这些缺失的评分?

2. 基于RBM的协同过滤

  R. R. Salakhutdinov等人提出了一种使用RBM来进行协同过滤的方法:

  假设有m个电影, 则使用m个softmax单元来作为可见单元来构造RBM.  对于每个用户使用不同的RBM, 这些不同的RBM仅仅是可见单元不同, 因为不同的用户会对不同的电影打分, 所有的这些RBM的可见单元共用相同的偏置以及和隐藏单元的连接权重W. 该方法很好的解决了之前提到的问题:

  1. 使用softmax来对用户的评分进行建模, softmax是一种组合可见单元, 包含k个二元单元, 第i个二元单元当且只当用户对该电影打分为i时才会置为1.
  2. 如果一个用户没有对第j个电影评分, 则该用户的RBM中不存在第j个softmax单元.

  该模型如下图所示:

  

  可是单元V和隐藏单元h的条件概率为:

  

  模型参数的学习过程非常类似于RBM的DC算法:

  

  训练完模型后, 计算用户对未评价物品的预测评分的算法为:

  

3. 条件RBM(Conditional Restricted Boltzmann Machine)

  以上的RBM只用到了用户对电影的评分, 忽视了另外一种非常重要的信息: 用户浏览过哪些电影(但是没打分, 或者打分未知), 条件RBM把这种信息也进行了建模:

  

  其中的r是一个m维的向量, ri为1代表用户对浏览过第i个电影, 加入r后的模型的条件概率为:

  

  权重D的学习过程为:

  

 

  参考文献:

  [1]. Ruslan Salakhutdinov, Andriy Mnih, Geoffrey Hinton. Restricted Boltzmann Machines for Collaborative Filtering. 2007, ICML.

  [2]. Gilles Louppe, Pierre Geurts. Collaborative filtering: Scalable approaches using restricted Boltzmann machines

  [3]. 受限玻尔兹曼机(RBM)简介

时间: 2024-08-22 14:31:45

基于受限玻尔兹曼机(RBM)的协同过滤的相关文章

谁有基于用户的推荐系统或者协同过滤的算法和代码分析啊

问题描述 求个大数据的大神给个基于用户的推荐系统或者协同过滤的算法和代码分析啊我有部分代码但是不知道怎么在Eclipse上实现求解答啊1.publicclassAggregateAndRecommendReducerextendsReducer<VarLongWritable,VectorWritable,VarLongWritable,RecommendedItemsWritable>{...publicviodreduce(VarLongWritablekey,Iterable<Ve

推荐系统中基于深度学习的混合协同过滤模型

近些年,深度学习在语音识别.图像处理.自然语言处理等领域都取得了很大的突破与成就.相对来说,深度学习在推荐系统领域的研究与应用还处于早期阶段. 携程在深度学习与推荐系统结合的领域也进行了相关的研究与应用,并在国际人工智能顶级会议AAAI 2017上发表了相应的研究成果<A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems>,本文将分享深度学习在推荐系统上的应用,同时介绍携程基础BI团

基于协同过滤的个性化Web推荐

         下面这是论文笔记,其实主要是摘抄,这片博士论文很有逻辑性,层层深入,所以笔者保留的比较多.          看到第二章,我发现其实这片文章对我来说更多是科普,科普吧-- 一.论文来源 Personalized Web Recommendation via Collaborative Filtering(很奇怪via为什么小写,先记住吧) (Candidate)博士研究生:孙慧峰 (Advisor)导师:陈俊亮(院士) (Academic Degree Applied for)

受限玻尔兹曼机(Restricted Boltzmann Machine, RBM) 简介

  受限玻尔兹曼机(Restricted Boltzmann Machine,简称RBM)是由Hinton和Sejnowski于1986年提出的一种生成式随机神经网络(generative stochastic neural network),该网络由一些可见单元(visible unit,对应可见变量,亦即数据样本)和一些隐藏单元(hidden unit,对应隐藏变量)构成,可见变量和隐藏变量都是二元变量,亦即其状态取{0,1}.整个网络是一个二部图,只有可见单元和隐藏单元之间才会存在边,可见

基于协同过滤的推荐方法

协同过滤(Collaborative Filtering, CF)是推荐系统广泛使用的一种技术,它主要通过考虑用户(User)与用户之间.物品(Item)与物品之间的相似度(Similarity),来向用户推荐物品,常被用在电商网站中.其中,在推荐系统中最常使用的协同过滤方法,有如下4种: 基于用户的协同过滤推荐 基于物品的协同过滤推荐 基于模型的协同过滤推荐 混合协同过滤推荐 上面4种方法中,基于用户的协同过滤推荐.基于物品的协同过滤推荐都是基于内存的协同过滤推荐,一般在数据量较小的应用场景下

基于用户的协同过滤推荐算法原理和实现

      在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单.该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens 用于新闻过滤.一直到2000年,该算法都是推荐系统领域最著名的算法.       本文简单介绍基于用户的协同过滤算法思想以及原理,最后基于该算法实现园友的推荐,即根据你关注的人,为你推荐博客园中其他你有可能感兴趣的人. 基本思想       俗话说"物以类聚.人以群分",拿看电影这个例子来说,如果你喜欢<蝙蝠侠&

有关基于项目的协同过滤算法的预测值计算问题

问题描述 有关基于项目的协同过滤算法的预测值计算问题 有个疑问,比如项目有100个最近邻居,但是目标用户对这100个邻居中的极少部分有评分,比如只对5个项目有评分,但是大部分论文中计算预测值时是这么计算的:,我将未评分值先简单置为0,那么分母就是所有相似度之和,分子却只是那5个目标用户有评分项的加权和,结果通常很小,与实际值相差很大,我想那个分母是不是只用包括最近邻居中用户已评分项的相似度? 解决方案 我刚计算预测值时分母只累加了已评分项的相似度,邻居300左右时MAE值达到最优值为0.75,正

基于物品的协同过滤算法(ItemCF)

最近在学习使用阿里云的推荐引擎时,在使用的过程中用到很多推荐算法,所以就研究了一下,这里主要介绍一种推荐算法-基于物品的协同过滤算法. ItemCF算法不是根据物品内容的属性计算物品之间的相似度,而是通过分析用户的行为记录来计算用户的相似度.该算法认为物品A和物品B相似的依据是因为喜欢物品A的用户也喜欢物品B. 基于物品的协同过滤算法实现步骤: 1.计算物品之间的相似度 2.根据物品的相似度和用户的历史行为记录给用户生成推荐列表 下面我们一起来看一下这两部是如何实现的: 一.计算物品之间的相似度

基于云计算的受限玻尔兹曼机推荐算法研究

基于云计算的受限玻尔兹曼机推荐算法研究 郑志蕴  李步源  李伦  李钝 数据的指数级增长及算法本身的复杂性使受限玻尔兹曼机面临着计算效率的问题.在详细分析受限玻尔兹曼机的基础上,将受限玻尔兹曼机与Hadoop平台的并行计算架构相结合,提出基于云平台的受限玻尔兹曼机推荐算法.该算法通过复制机制解决数据相关性问题,并将传统的受限玻尔兹曼机过程分解为若干个Hadoop任务的循环,实现并行计算.实验结果表明,与在传统平台上的实现相比,基于Hadoop并行架构的受限玻尔兹曼机推荐算法在大体量数据集的条件