协同过滤 Collaborative Filtering

标签: 算法 | 发表时间:2016-03-21 12:11 | 作者:三江小渡
出处:http://www.blogread.cn/it/

标签:   协同过滤

   协同过滤算法是推荐系统中最古老,也是最简单高效的推荐算法。简单说协同过滤就是根据以往的用户产生的数据分析,对用户的新行为进行匹配分析来给用户推荐用户最有可能感兴趣的内容。

   协同过滤算法是为了解决 长尾现象,也就是说推荐系统是为了解决长尾现象而诞生的。因为在之前在有限的空间(如:书店的书架、服装店的衣架、商店的货架、网页的展示区域)只能摆有限的物品进行展示,造成大量的非热门物品很难进入人们的视野,也就无法产生任何价值。研究表明挖掘长尾内容,产生的效益很可能会超过头部。因为网络、计算机的发展使关注大数据量下的长尾内容成本下降,使得关注长尾效益成为可能。

   简单说就是推荐系统会在有限空间内针对到单个用户推荐内容,帮助用户发现长尾内容中对自己更有价值的内容,发挥长尾内容的效益。也就是推荐算法和推荐系统的存在价值。

   协同过滤算法的数学模型有一个假设前提:

   每个人会有一个或多个自己感兴趣的领域

   看起来有点废话,但是这是一切的基础,这样我们可以推论:

   1、如果两个事物同属于一个人的兴趣范围,那么这两个事物有较大可能属于不同类型的事物;
2、如果两个事物同时属于很多人的兴趣范围,那么这两个事物有较大可能属于同一类型的事物。

   比较绕,仔细理解一下。

   ps :以上内容写自三月11号,现在是九月29号。。。 好吧,真心很久没写blog了。。捋一捋继续写~~~ --!

   基于以上假设,我们可以把两个事物的相关度量化出来(计算机也只能理解量化的东西了):
协同过滤公式
ps :弄公式太麻烦了,想用latex,没有可视化的太麻烦,还是用word弄好导出图片吧。

   描述一下符号的意义:
N(i):对i事物感兴趣的用户集合
S(a,k):与事物a最相似的k个事物的集合
Rui:用户u对事物i的兴趣度
Wij:事物ij的相似度
Pua:用户u对事物a喜欢程度的预测值

   解释一下三个公式:
(1)这个公式就是最开始的推论的表述,比较好理解,值域范围是[0,1],值越大相关度越大。就是说两个事物有更多用户同时喜欢就相似度越大。大家如果看另外一篇 相似性度量,会发现这里的公式其实是用的余弦相似度公式。所有推荐系统都需要计算两个事物之间的相似度以量化后便于进行计算,有兴趣可以看看各种相似度度量的计算方法,这篇里也只是介绍一些比较多用到的,相似度计算时根据实际情形来设计的。选择或设计出一个更准确的相似度度量方法是推荐系统很重要的一块。
(2)这个公式是修整(1)公式,因为做推荐的时候会发现,很多热门的东西比如j,基本人人都喜欢或者说是绝大多数人都喜欢,这样容易得到i与j有极高相似度的结论。如果不修正的话,那么热门的事物跟任何事物都具有较高的相似度了,所以需要加权降低热门事物的影响。也可以理解为了推荐的新颖度,降低热门事物被推荐的机会。
(3)这个公式就是计算针对用户u,a事物的推荐度。公式里那个Wij写错了,应该是Wai ,可以理解一下公式,不是很难。

   至此可以根据用户已喜欢或评分的事物来进行用户最有可能喜欢的新的事物的推荐了。虽然已经可以用了,但是想推荐的更准确仍有很多工作需要做,比如:
1、不活跃用户应该比活跃用户有更多的权重来确定物品相关性,因为活跃用户总会对很多事物点赞之类的,即使他只是感觉差不多而已。
2、对热门事物的惩罚力度、推荐事物的新颖度等控制,都是一个需要试验后设置好一个理想的阈值。
3、最后还需要根据推荐系统所推荐的事物,进行各种数据的优化和过滤以满足产品定位的各种需求。

   协同过滤优缺点简单罗列一下,更多问题也需要自己在实践中总结,先说优点:
1、简单明了,无论从模型的建立,到程序的编写都非常简单清晰。程序简单完成复杂工作这是非常优雅的一种。记得之前说过google的一个外号是AK47的程序猿,说过类似的。
2、适用场景比较广泛,基本上是万金油了。
3、准确度还是不错的,添加更复杂逻辑也不会有很好的结果了,看推荐系统设计比赛里,各种复杂设计,最终推荐准确度是提高了,但是也不是那种特别多的提高。

   缺点,也是硬伤:
1、冷启动问题。推荐系统初期缺乏基础的计算数据,无法进行相关推荐数据的计算。新用户推荐也属于这类冷启动。
2、需要针对推荐的事物和用户群体二次过滤。
3、另外还有很多说数据稀疏感觉完全不算个缺点,为了凑够传统的123点,就加一条吧~ --!

您可能还对下面的文章感兴趣:

  1. 基于用户的协同过滤和皮尔逊相关系数 [2012-12-19 23:30:27]
  2. 基于综合兴趣度的协同过滤推荐算法 [2012-05-17 23:50:22]
  3. 协同过滤推荐系统的那些不足点 [2012-01-27 17:58:53]

相关 [协同过滤 collaborative filtering] 推荐:

协同过滤 Collaborative Filtering

- - IT技术博客大学习
   协同过滤算法是推荐系统中最古老,也是最简单高效的推荐算法. 简单说协同过滤就是根据以往的用户产生的数据分析,对用户的新行为进行匹配分析来给用户推荐用户最有可能感兴趣的内容.    协同过滤算法是为了解决 长尾现象,也就是说推荐系统是为了解决长尾现象而诞生的. 因为在之前在有限的空间(如:书店的书架、服装店的衣架、商店的货架、网页的展示区域)只能摆有限的物品进行展示,造成大量的非热门物品很难进入人们的视野,也就无法产生任何价值.

协同过滤算法

- - CSDN博客推荐文章
今天要讲的主要内容是 协同过滤,即Collaborative Filtering,简称 CF.    关于协同过滤的一个最经典的例子就是看电影,有时候不知道哪一部电影是我们喜欢的或者评分比较高的,那.    么通常的做法就是问问周围的朋友,看看最近有什么好的电影推荐. 在问的时候,都习惯于问跟自己口味差不.

协同过滤和推荐引擎

- - 刘思喆@贝吉塔行星
推荐系统在个性化领域有着广泛的应用,从技术上讲涉及概率、抽样、最优化、机器学习、数据挖掘、搜索引擎、自然语言处理等多个领域. 东西太多,我也不准备写连载,今天仅从基本算法这个很小的切入点来聊聊推荐引擎的原理. 推荐引擎(系统)从不同的角度看有不同的划分,比如:. 按照数据的分类:协同过滤、内容过滤、社会化过滤.

Spark MLlib中的协同过滤

- - JavaChen Blog
本文主要通过Spark官方的例子理解ALS协同过滤算法的原理和编码过程,然后通过对电影进行推荐来熟悉一个完整的推荐过程. 协同过滤常被应用于推荐系统,旨在补充用户-商品关联矩阵中所缺失的部分. MLlib当前支持基于模型的协同过滤,其中用户和商品通过一小组隐语义因子进行表达,并且这些因子也用于预测缺失的元素.

使用Mahout实现协同过滤 spark

- - zzm
Mahout使用了Taste来提高协同过滤算法的实现,它是一个基于Java实现的可扩展的,高效的推荐引擎. Taste既实现了最基本的基 于用户的和基于内容的推荐算法,同时也提供了扩展接口,使用户可以方便的定义和实现自己的推荐算法. 同时,Taste不仅仅只适用于Java应用程序,它 可以作为内部服务器的一个组件以HTTP和Web Service的形式向外界提供推荐的逻辑.

Amazon.com的推荐:从商品到商品的协同过滤

- 小和尚 - 互联网的那点事
以下全文翻译的PDF点此下载. Amazon.com 的推荐. 推荐算法以其在电子商务网站的用途而著称1,它们利用有关一个顾客的兴趣作为输入,来产生一个推荐商品的列表. 很多应用仅仅使用顾客购买并明确表示代表其兴趣的商品,但它们也可以利用其他属性,包括已浏览的商品、人口统计特征数据、主题兴趣,以及偏爱的艺术家.

基于综合兴趣度的协同过滤推荐算法

- - IT技术博客大学习
标签:   兴趣   协同过滤   推荐. 电子商务推荐系统最大的优点在于它能收集用户的兴趣资料和个人信息,根据用户兴趣偏好主动为用户做出个性化推荐. 推荐技术指的是如何找出用户感兴趣的商品并列出推荐清单,在用户信息获取差别不大的情况下,推荐技术成为决定一个推荐系统性能的关键,其中推荐算法是推荐技术的核心[1].

协同过滤推荐系统的那些不足点

- - 标点符
类目(种类)推荐杂很多情境下行不通,因为有太多的产品属性,而每个属性(比如价钱,颜色,风格,面料,等等)在不同的时候对于消费者的重要程度都是不一样的. 但是协同过滤推荐系统也不是那么完美无缺,他或多或少的会有那么一些问题~. 协同过滤的精度主要取决于用户数据的多少. 如果一个系统有很多用户的历史数据,他就能更好的对用户的喜欢做出预测.

[原]Mahout 协同过滤 itemBase RecommenderJob源码分析

- -
Mahout支持2种 M/R 的jobs实现itemBase的协同过滤. 下面我们对RecommenderJob进行分析,版本是mahout-distribution-0.7. 源码包位置:org.apache.mahout.cf.taste.hadoop.item.RecommenderJob. RecommenderJob前几个阶段和ItemSimilarityJob是一样的,不过ItemSimilarityJob 计算出item的相似度矩阵就结束了,而RecommenderJob 会继续使用相似度矩阵,对每个user计算出应该推荐给他的top N 个items.