两种基于邻域的推荐算法

推荐系统的基本算法:基于邻域的推荐(基于用户的协同过滤、基于物品的协同过滤)

http://www.jianshu.com/p/01b860b4c5fb

一、基于用户的协同过滤:当一个用户A需要个性化推荐时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的、而A没有听说过的物品推荐给A。

步骤:

1、找到与目标用户u相似的用户集合{V}。

方法:计算两个用户的兴趣相似度。

给定用户u和用户v,令N(u)表示用户u曾经有过正反馈的物品集合,令N(v)为用户v曾经有过正反馈的物品集合,

Jaccard公式简单地计算u和v的兴趣相似度:

或者通过余弦相似度计算:

举个例子。用户A对物品{a,b,d}有过行为,用户B对物品{a,c}有过行为,利用余弦相似度公式计算用户A和用户B的兴趣相似度为:

如果对所有两两用户都利用余弦相似度计算相似度,这种方法的的时间复杂度是O(U*U),这在用户数大的时候非常耗时。事实上,很多用户相互之间并没有对同样的物品产生过行为,很多的时候|N(u)∩N(v)|=0。可以首先筛选出≠0的用户对。

为此,可以首先建立物品到用户的倒排表。对于每个物品都保存对该物品产生过行为的用户列表。令稀疏矩阵C[u][v]=|N(u)∩N(v)|。那么,假设用户u和v同时属于倒排表中K个物品对应的用户列表,就有C[u][v]=K。从而,可以扫描倒排表中每个物品对应的用户列表,将用户列表中的两两用户对应的C[u][v]加1。例子展示如下:

2、利用UserCF算法计算和用户兴趣最相似的K个用户喜欢的物品。

UserCF算法中用户u对物品i的感兴趣程度:

S(u,K)包含和用户u兴趣最接近的K个用户,N(i)是对物品i有过行为的用户集合,wuv是用户u和用户v的兴趣相似度,rvi代表用户v对物品i的兴趣

二、基于物品的协同过滤:这个算法是目前业界引用最多的算法。基于物品的协同过滤算法给用户推荐那些和他们之前喜欢的物品相似的物品。主要通过分析用户的行为记录计算物品之间的相似度。该算法认为,物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都也喜欢B。

步骤:

1、计算物品之间的相似度;

2、根据物品的相似度和用户的历史行为给用户生成推荐列表。

---------------------------

定义物品的相似度可以用如下公式,其中 N(i) 是喜欢物品 i 的用户数,如下公式表示了喜欢物品 i 的用户中有多少的比例用户也喜欢 j :

该公式存在一个问题:如果物品 j 很热门,那么 Wij 就会很大,接近1,为避免马太效应,可以用下面的公式:

该公式惩罚了物品 j 的权重,减轻了热门物品会和很多物品相似的可能性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇文章的技术难度会低一些,主要是对推荐系统所涉及到的各部分内容进行介绍,以及给出一些推荐系统的常用算法,比起技术...
    我偏笑_NSNirvana阅读 12,148评论 5 89
  • -- 原创,未经授权,禁止转载 2017.11.15 -- 对于推荐系统,本文总结内容,如下图所示: 文章很长,你...
    rui_liu阅读 42,992评论 14 256
  • 什么是协同过滤 协同过滤推荐(Collaborative Filtering recommendation)是在信...
    小灰灰besty阅读 34,563评论 7 52
  • 姓名:母光艳 公司:宁波贞观电器 第235期,利他二组 【日精进打卡第152天】 【知-学习】 诵读《六项精进》大...
    母光焱阅读 121评论 0 0
  • 曾经有一对夫妻,因为老婆比较爱叨叨,老公执意要跟老婆离婚,老婆很痛苦,无法接受这个事实,因为她信佛,就为这件事情去...
    甜心教主阅读 700评论 0 0