20180809-0816论文阅读笔记 协同过滤Collaborative Filtering

Collaborative filtering:
Collaborative filtering (CF) is a technique used by recommender systems.
In the newer, narrower sense, collaborative filtering is a method of making automatic predictions (filtering) about the interests of a user by collecting preferences or taste information from many users (collaborating). The underlying assumption of the collaborative filtering approach is that if a person A has the same opinion as a person B on an issue, A is more likely to have B's opinion on a different issue than that of a randomly chosen person. Note that these predictions are specific to the user, but use information gleaned from many users.
根据数据源的不同搜索引擎可以分为三类:
1.基于人口的统计学推荐(Demographic-based Recommendation)
2.基于内容的推荐(Content-based Recommendation)
3.基于协同过滤的推荐(Collaborative Filtering-based Recommendation)
基于内容的推荐:
根据物品或内容的元数据,比如:电影的类型,发现物品或内容的相关性,然后基于用户以前的喜好记录,推荐给用户相似的物品。
而基于协同过滤的推荐又可以分为以下三类:
1.基于用户的协同过滤推荐
    基于用户的协同过滤推荐算法先使用统计技术寻找与目标用户有相同喜好的邻居,然后根据目标用户的邻居的行为,向目标用户进行推荐。基本原理就是利用用户访问行为的相似性来互相推荐用户可能感兴趣的资源。在一般应用中采用计算“k-邻居”,然后基于这K个邻居的历史偏好信息,为当前用户进行推荐。
2.基于项目的协同过滤推荐
    根据所有用户对物品的评价,发现物品和物品之间的相似度,然后根据用户的历史偏好信息将类似的物品推荐给该用户。
    与之前基于内容的推荐的区别是,基于内容的推荐训练时看的是人工的分类,这是已经提炼过的信息。而基于项目的协同过滤则是根据用户所产生的与物品相关的行为数据进行物品的相似度训练,进而将相似度高的推荐出去。基于内容的推荐计算的是两个物品内容的相似度,而基于项目的协同过滤计算的是每个物品以用户行为(是否喜欢它)为向量,计算物品的相似度。
    协同过滤和基于内容推荐所使用的数据维度不同,协同过滤侧重使用用户对于商品的历史交互记录,即用户-商品二维矩阵,而基于内容推荐侧重于对用户或者项目的属性信息建模,比如用户的性别、年龄、爱好等,商品的颜色、大小等。
3.基于模型的协同过滤推荐
    以上两个模型又可以被归为基于记忆的模型,即依赖简单的相似性度量(比如余弦相似性、皮尔森相关系数等)来把相似的用户或物品匹配起来。如果有一个矩阵,那么其中每一行是一个用户,每一列代表一个物品,那么基于记忆的方法就是对这一矩阵的行或列使用相似性度量来获得一个相似度值,进而推荐。
    而基于模型的方法则更进一步地填充上面说的矩阵,它们会尝试量化一个用户对他们之前没有遇到过的物品的喜好程度。为了达到这个目的,基于模型的方法使用一些机器学习算法来对物品的向量(针对一个特定的用户)来训练,然后建立模型来预测用户对于新的物品的得分。即,基于模型的方法是离线训练,在线推荐的。(训练和推荐明显分开,而基于记忆的模型则是离线训练离线推荐)。流行的基于模型的技术是贝叶斯网络、奇异值分解和隐含概率语义分析。
至此,我们对协同过滤的概念已有了大概的了解。那么他们具体是怎么做的呢?是不是和我们之前想的一样呢?下面来稍微具体的记录下基于用户的协同过滤的推荐过程:
我们现在有很多用户和很多电影,以及他们的相互关系。比如:用户u1喜欢电影:ABC,用户u2喜欢电影ACEF。那么是否应该把电影F推荐给用户
u1呢?
我们对u1或u2按照item的向量表示,进行相似度对比,如果他们两个相似度比较高,那么我们就可以把u2喜欢的电影E和F都推荐给u1。
  • https://www.cnblogs.com/luchen927/archive/2012/02/01/2325360.html

以上两个方法都能很好的给出推荐,并可以达到不错的效果。但是他们之间还是有不同之处的,而且适用性也有区别。下面进行一下对比

       计算复杂度

  Item CF 和 User CF 是基于协同过滤推荐的两个最基本的算法,User CF 是很早以前就提出来了,Item CF 是从 Amazon 的论文和专利发表之后(2001 年左右)开始流行,大家都觉得 Item CF 从性能和复杂度上比 User CF 更优,其中的一个主要原因就是对于一个在线网站,用户的数量往往大大超过物品的数量,同时物品的数据相对稳定,因此计算物品的相似度不但计算量较小,同时也不必频繁更新。但我们往往忽略了这种情况只适应于提供商品的电子商务网站,对于新闻,博客或者微内容的推荐系统,情况往往是相反的,物品的数量是海量的,同时也是更新频繁的,所以单从复杂度的角度,这两个算法在不同的系统中各有优势,推荐引擎的设计者需要根据自己应用的特点选择更加合适的算法。

  适用场景

  在非社交网络的网站中,内容内在的联系是很重要的推荐原则,它比基于相似用户的推荐原则更加有效。比如在购书网站上,当你看一本书的时候,推荐引擎会给你推荐相关的书籍,这个推荐的重要性远远超过了网站首页对该用户的综合推荐。可以看到,在这种情况下,Item CF 的推荐成为了引导用户浏览的重要手段。同时 Item CF 便于为推荐做出解释,在一个非社交网络的网站中,给某个用户推荐一本书,同时给出的解释是某某和你有相似兴趣的人也看了这本书,这很难让用户信服,因为用户可能根本不认识那个人;但如果解释说是因为这本书和你以前看的某本书相似,用户可能就觉得合理而采纳了此推荐。

  相反的,在现今很流行的社交网络站点中,User CF 是一个更不错的选择,User CF 加上社会网络信息,可以增加用户对推荐解释的信服程度。

  • https://www.jianshu.com/p/5463ab162a58
  • https://www.jianshu.com/p/e56665c54df8

这几篇文章也非常好,先记录下来。

  • https://www.zhihu.com/question/19843390
  • https://blog.csdn.net/qq_32023541/article/details/79746813

这几篇是关于冷启动的知识。


 

 
posted @ 2018-08-10 09:47  大胖子球花  阅读(135)  评论(0)    收藏  举报