【推荐系统】Toward the Next Generation of Recommender Systems: A Survey of the State-of-the-Art and Possible Extensions

迫于生计,从今天开始学习推荐系统相关的内容,今天先来读一篇推荐系统领域的综述 Toward the next generation of recommender systems: a survey of the state-of-the-art and possible extensions

由于目前的工作其实是偏向推荐系统的serving,训练的开发,因此这些paper可能都是粗读,也不会把paper中的内容逐句翻译,而是找出我认为最为重要的一些概念加以记录。

INTRODUCTION

  • 推荐的问题简单可以归纳成对user未看见的item进行打分的过程,这个分一般称之为rating.有了rating,推荐前top k 个最好的rating给用户即可。
  • 推荐系统的预测内容有两种不同的类别,一种是预测绝对的rating,另外一种是预测一个user对不同item的相对喜好,称为“preference- based recommender systems”. 本文只讲前者,也就是预测具体的rating数值
  • 根据使用的方法不同,推荐系统又分为三类:
    • 基于内容的推荐:user会被推荐与他之前喜欢的item相似的item
    • 基于协同过滤的推荐: user会被推荐其他和该user品味相近的user喜欢的item
    • 将上述两种方法结合在一起使用

基于内容的方法( Content-Based Methods )

常用在基于text内容的领域,可以用一些keyword来描述内容。具体做法是先拿到keyword的weight,然后基于这些weight来做推荐。计算keyword weight的方法中,比较有名的是 TF-IDF

TF-IDF

tf–idf 是一个用来衡量一篇text中,每个keyword的重要性(或者叫weight)的方法。 从名字就可以看出,这个方法分为两部分。 tf和idf

tf是"term frequency"的缩写,表示的是某个keyword在一篇text里的频率,也就是出现的次数除以所有字词出现的次数 idf是"inverse document frequency"的缩写,衡量的是某个keyword在语料库里的普遍性。越普遍,改指越小(比如结构助词"的",几乎在每一个text里都会出现,那么idf值就会很小)

tf和idf两部分都有一个公式来计算得到数值,tf-idf算法是将两个数值相乘起来,使得最终结果可以被这两部分影响。 tf-idf算法认为,某个keyword的tf值越高,idf越小,说明这个keyword对这篇text越重要。

直观地说,tf-idf的tf是保留高频重要词语,idf是将常见的词语去除的过程。


我们刚刚说tf-idf可以用来分析一个text(也就是item)中,每个Keyword的weight 那么实际上,tf-idf也可以用来分析对于一个user,每个keyword的weight 这样我们就得到了两个weight vector,分别表示每个keyword对一个user的重要性和每个keyword对一个item(text)的重要性

此时可以算一下两个向量的相似度,比如算个cos距离。 然后根据这个相似度进行推荐

缺点

  • 非text-based的item不好提取feature
  • top k keyword相同的两个item,不好区分
  • 只会推荐之前打分过的item,使得推荐系统缺乏多样性
  • 新用户的冷启动问题,推荐系统中没有新用户的喜好,导致无法做推荐

基于协同过滤的方法

  • 找到和某个user taste类似的user group,然后将这个user group喜欢的item 推给这个user
  • 根据使用的方法不同,通常分为两类:memory-based(or heuristic-based) and model-based。前者我更多的基于某个rule类做预测,后者是通过ML以及之后的DL方法来train 一个model,用这个model 做预测
  • 由于可能需要计算任意两个user的相似度来判断taste,很多sys会先将任意两个user的相似度预处理出来。
  • 虽然协同过滤的方法最初是用于计算user的相似度来做推荐,但是后面也有基于item的相似度来做推荐的方法,通常被写作"user-based CF"和"item-based CF"

优点

  • 能够推荐给user他没见过,但是和他品味类似的user group喜欢的item
  • 由于是基于ratings算相似度,所以适用于任何形态的内容(而不仅仅是text-based content,说白了就是当时其他形态的内容不容易拿到feature)

缺点

  • new user problem: 不知道新用户的喜好,不知道哪些才是与new user taste 相似的user
  • new item problem: 新item没有被足够的用户打分,很难被推荐给其他user
  • Sparsity: 协同过滤依赖于大量的user.如果某个item没有很多user打分,那么就不会被经常推荐;如果某个user的口味独特(因此和它口味相近的人很少),那么也不会有很好的推荐效果。

混合方法

就是将content-based和协同过滤的方法混合起来。有几种混合方法:

  • 两个方法分别做,然后把最终结果混合,类似model Ensemble.或者直接在某个步骤时取一个更好的。
  • 在协同过滤方法中添加content-based的特征。可以用这些content-based的特征算user的profile. 得到的profile不仅可以用来计算user之间的相似度(而不仅仅是根据user喜欢的items来计算),还可以通过计算user的profile与item之间的相似度直接推荐,解决了冷门item(对应了口味独特的user)的推荐文件。
  • 在content-based的方法中添加协同过滤的特征
  • 搞一个使用两种两种方法的统一模型