首页 > 推荐系统 > [论文笔记] Amazon推荐系统——基于item的协同过滤
2014
06-23

[论文笔记] Amazon推荐系统——基于item的协同过滤

Amazon.com Recommendations Item-to-Item Collaborative Filtering


点此下载论文:Amazon.com Recommendations Item-to-Item Collaborative Filtering 

 

内容概要:文章大致介绍了一下基于物品的协同过滤。并和基于用户的协同过滤、聚类方法以及基于搜索的方法进行了对比。
 
    评价邮件和web广告效果两个重要的指标:点击数,转化率。
    推荐系统的一些挑战:

  1. 数据量大
  2. 要求速度快,最好可以达到实时的效果
  3. 冷启动问题
  4. 老用户信息太多,如何筛选
  5. 用户信息不稳定,可能随时更新<--more-->

推荐的一般方法:
    聚集一批相似的用户,根据他们共同购买或者评分过的商品估计未购买过的商品评分从而推荐。这个算法的实现就是传统的协同过滤和聚类模型。

  1. 传统协同过滤(基于用户的协同过滤User-based Collaborative Filtering):将用户表示成一个N维的物品的向量。多个用户表示成一个稀疏的矩阵。然后根据相似度(比如余弦相似度)计算出来用户的距离,用最相似用户的评分来替代未知的评分。本文指的是最近邻的协同过滤。
  • 复杂度:M个用户,N个物品,需要计算的用户跟每个用户进行相似度计算,每次为O(N),所以总的复杂度为O(MN)。因为很稀疏所以总的复杂度大概在O(M+N)。因为矩阵非常非常稀疏,所以可以看做每个用户有常数个购买,假设计算次数为aM+b(假设用邻接表或者hash表存储),则扫描所有的用户复杂度为O(M)。筛掉一些购买量很大或者购买量非常小的商品,需要的复杂度为O(N)
  1. 聚类的方法(Cluster Models):将其看做分类的问题,使用无监督的聚类方法。聚类模型比基于用户的协同过滤在线上表现好。线下计算分类,线上直接使用线下的结果,找到需要的相似用户。
  2. 基于搜索的方法(Search-Based Methods):根据相似的关键词,作者等来搜索相似物品。这个跟之前两种方法的不同之处是找的是相似的商品而不是用户,这个和下面的新方法有相同之处。
  • 缺点:范围太窄或者太宽泛。如果搜索的过程这么推荐感觉还可以,虽然窄或者宽泛,但都是在用户可以承受的范围内。如果用户买过这个物品再推荐同一类别的话,就不太合适了。

 
本文提出的新方法:基于物品的协同过滤(Item-to-Item Collaborative Filtering)

特点:实时推荐、大规模数据
找到用户倾向一起购买的物品,然后建立一个商品对商品的相似矩阵。复杂度在O(N2M),扫一遍商品N,扫每个商品的购买者M,对于每个购买者扫他购买的其他商品N,故复杂度为O(N2M)实现中接近O(MN)。最内层的扫描由于矩阵很稀疏,所以可以看做常数(邻接表或者hash表实现),故可以减少个N。

For each item in product catalog, I1
    For each customer C who purchased I1
        For each item I2 purchased by customer C
            Record that a customer purchased I1 and I2
    For each item I2
        Compute the similarity between I1 and I2

    基于物品的协同过滤的关键是创建线下的物品相似矩阵。线上算法作为补充,计算量独立于总的物品个数和总的用户个数。它仅仅依赖于用户购买量和评分量。因此这个算法即使在大数据上也会很快。

 
四种方法的对比

  1. 传统协同过滤几乎没有线下计算,而线上如果不减小维度的话的计算量太大。
  2. 聚类模型线下计算要好一点,但是推荐质量低。为了提升推荐质量,分类的个数要增加,但是这样的话会使得线上分类代价高。
  3. 基于搜索的模型不能给用户推荐比较有兴趣的物品,推荐的域太窄。

 
看完了发现本论文的全文翻译一篇><

最后编辑:
作者:zxy_snow
吃好,喝好,学习好!

  1. 一直都很佩服你,acm弄的那么好,最后又考上中科院,今日看到所搭建的网站很精致,在此晚辈表示一下崇敬之情。另外可以把怎么搭成那么漂亮的网站分享一下吗?