基于邻域的协同过滤算法(一)

  两个月前我开始学习机器学习,这两个月期间学习了一些基础的机器学习算法及其Python实现。这周我刚开始学习《推荐系统实践》这本书,并打算以后定期将自己的学习情况做个简单的总结。这份总结是我这个博客上的第一篇文章。这周的学习的主要内容是基于邻域的协同过滤算法。基于用户行为分析的推荐算法是个性化推荐系统的重要算法,学术界一般将这种类型的算法称为协同过滤算法。

  协同过滤,从名字就可以看出这种方法的本质是先有协同(用户齐心协力)再有过滤(每个用户的推荐列表能够过滤掉他不喜欢的物品)。对协同过滤算法,学术届提出了了很多种方法,比如基于邻域的方法(neighborhood-based)、隐语义模型(laten factor model)、基于图的随机游走算法(random walk on graph)等。

  基于邻域的方法主要包括两种算法:基于用户的协同过滤算法(UserCF)和基于物品的协同过滤算法(ItemCF)。

基于用户的协同过滤算法(UserCF):

  UserCF的本质就是我要给你推荐物品,我先找到与你兴趣最相似的K个用户,然后把他们喜欢的而你却没产生过行为的物品推荐给你。当然不是把所有的他们喜欢的且你没产生过行为的都推荐给你,而是推荐你最感兴趣的 N个产品。根据上面这些描述,我们看到使用 UserCF需要两步:

  1. 找到与你兴趣相似的K个用户。
  2. 确定你最感兴趣的N个物品?

  在第一步中,我们需要去计算你与每个用户的兴趣相似度,然后按相似度降序排列,所对应的前K个用户就是我们要找的。

  对于用户u和v我们可以通过如下的Jaccard公式来计算:
wuv=N(u)N(v)N(u)N(v) ,

或者通过余弦相似度计算:
wuv=N(u)N(v)N(u)N(v) ,
计算相似度的时候,为了减少时间复杂度,需要建立一个物品-用户倒排表。因为当用户数很大时,直接从数据集很费时间,很多时间浪费在了计算 N(u)N(v)=0 上。另外,两个用户对冷门物品采取过同样的行为更能说明他们兴趣的相似度。所以书中指出 John S. Breese 在论文中提出如下计算相似度的公式:

wuv
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于协同过滤的推荐系统算法研究项目源码 协同过滤算法研究 [摘要] 随着“大数据”的出现,人们在庞大的数据面前更是显得束手无策。信息过载的问题成为了让人们头疼的事情。社会信息超过了个人或系统所能接受、处理或有效利用的范围,并导致故障。当前要解决这个问题主要有两个途径:一类是使用搜索引擎,比如谷歌、百度、搜狐等,但是这类方法需要用户的需求明确,用户也得十分清楚的表达出自己的意向,其搜索结果的质量很大程度上依赖于用户对需求描述的准确度;另一类就是基于推荐系统,这种推荐系统不需要用户十分明白清楚自己的需求,它通过用户的历史行为数据来预测推断出用户的需求以及兴趣,通过建立模型和数据挖掘,为用户准确推荐。因此,推荐系统更符合当今时代的节奏和需求。 本文主要研究了利用用户行为数据,基于邻域算法。分别在 User-based 和 Item-based 下实验相似度的修正和改进,不同相似度对协同过滤计算方法评测数值的影响。讨论因子K值(与用户兴趣最相近用户数)对算法的 Precision、Recall、Coverage、Popular 的影响。UserCF 和 ItemCF 的综合比较。 实验结果表明,K值和算法的各项评测指标也不完全成正相关或负相关,选择合适的K值获得最高精准度是非常重要的。 关键词:推荐系统;协同过滤;用户相似度; UserCF; ItemCF
### 回答1: 基于模型的协同过滤算法是一种基于用户和物品的模型,它可以通过分析用户之间和物品之间的关系,来预测用户对特定物品的兴趣程度。它将用户和物品的关系映射到一个多维空间中,然后根据用户对物品的兴趣程度来计算他们之间的相似性,最后根据用户的兴趣程度来推荐物品。 ### 回答2: 基于模型的协同过滤算法是一种推荐系统算法,用于预测用户可能喜欢的项目。该算法通过分析用户对项目的历史评分数据,构建一个模型来表示用户和项目之间的关系,然后使用该模型来预测未评分的项目。 该算法的主要步骤如下: 1. 数据收集:收集用户对项目的评分数据,包括用户ID、项目ID和评分。 2. 模型训练:根据用户评分数据,构建一个模型来表示用户和项目之间的关系。常用的模型有矩阵分解和因子分解机等。 3. 模型评估:使用一部分评分数据作为测试集,评估模型的准确性和性能。 4. 推荐生成:对于每个用户,通过模型计算出对未评分项目的预测评分,将评分最高的项目推荐给用户。 基于模型的协同过滤算法相比基于邻域协同过滤算法具有以下优点: 1. 稀疏性处理:对于稀疏的数据集,模型能够更好地适应和预测用户的评分。 2. 冷启动问题:在存在新用户或新项目时,模型能够直接根据其他用户的行为进行预测,而无需依赖于邻域信息。 3. 可扩展性:模型的训练过程可以进行并行计算,从而能够处理大规模的数据集。 然而,基于模型的协同过滤算法也存在一些限制: 1. 对于新项目或新用户,缺乏足够的历史评分数据,导致预测结果不准确。 2. 模型的构建和训练需要耗费较长的时间,不适用于实时推荐场景。 总之,基于模型的协同过滤算法通过构建用户和项目之间的关系模型来预测用户对未评分项目的偏好,具有较好的推荐效果和较好的可扩展性。 ### 回答3: 基于模型的协同过滤算法是一种用于推荐系统的方法,它通过建立用户和物品之间的模型来预测用户对未评价物品的兴趣。该算法主要分为两个步骤:模型训练和推荐预测。 在模型训练阶段,首先需要构建一个用户和物品的交互矩阵,其中每个元素表示用户对物品的评分。接着,通过分析该矩阵中的隐含关系,我们可以得到用户和物品之间的某种模型。常用的模型包括矩阵分解、邻域模型等。矩阵分解模型将用户-物品矩阵分解为两个低维矩阵,并通过最小化评分预测误差来学习矩阵的因子表示。而邻域模型则基于用户或物品的相似性来进行推荐,例如根据用户的行为历史寻找具有相似品味的其他用户。 在推荐预测阶段,基于构建的模型,可以预测用户对未评价物品的兴趣程度。根据用户的历史评分和模型得出的用户-物品关系,可以计算出用户对未评价物品的预测评分。具体方法包括使用矩阵分解模型计算内积得分,或者基于邻域模型计算出相似用户或物品的加权平均分。 基于模型的协同过滤算法具有以下优点:1)能够利用用户和物品之间的隐含关系进行推荐,对稀疏数据更具有鲁棒性;2)可以解决冷启动问题,即对于新用户或新物品,通过建立模型进行推荐;3)能够提供解释性,即可以解释为何给出这样的推荐结果。 然而,该算法也存在一些限制:1)模型的构建和训练过程需要大量的计算和时间;2)模型可能无法捕捉到用户和物品的全部特征,导致推荐结果不准确;3)对于大规模数据集,模型可能会面临效率问题。 总的来说,基于模型的协同过滤算法是一种强大的推荐系统方法,它能够通过建立用户和物品之间的模型来预测用户对未评价物品的兴趣。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值