《推荐系统实践》笔记--好的推荐系统

什么是推荐系统

建立用户与物品之间的联系:在用户没有明确目的的情况下帮助他们发现感兴趣的物品;为物品找到可能对它们感兴趣的用户。

个性化推荐系统的应用

个性化推荐的成功应用需要两个条件:

  • 存在信息过载
  • 用户大部分时候没有特别明确的需求
  1. 电子商务:Amazon、阿里
  2. 电影和视频网站:Netflix、Youtube
  3. 个性化音乐网络电台:Pandora、Last.fm、豆瓣电台
    • 个性化音乐推荐的特点
      • 物品空间大(相对书与电影而言)
      • 消费每首歌的代价很小
      • 物品种类丰富
      • 听一首歌耗时很少
      • 物品重用率很高(每首歌用户会听很多遍)
      • 用户充满激情
      • 上下文相关
      • 次序很重要
      • 很多播放列表资源
      • 不需要用户全神贯注
      • 高度社会化
  4. 社交网络:Facebook、twitter、weixin、weibo
  5. 个性化阅读:GoogleReader、Flipboard、Zite、Digg
  6. 基于位置的服务(LBS)
  7. 个性化邮件
  8. 个性化广告
    • 个性化广告投放技术分三种
      • 上下文广告:如google的Adsense
      • 搜索广告
      • 个性化展示广告:如雅虎

延伸阅读:

推荐系统评测

一个完整的推荐系统的参与者:用户、物品提供者、提供推荐系统的网站。在评测一个推荐算法时,需要同时考虑三方的利益,一个好的推荐系统是能够令三方共赢的系统。好的推荐系统不但能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户发现那些他们可能会感兴趣,但却不那么容易发现的东西。同时,推荐系统不要能够帮助商家将那些被埋没在长尾中的好商品介绍给可能会对它们感兴趣的用户。

推荐系统实验方法

  1. 离线实验
  2. 用户调查
  3. 在线实验

一般来说,一个新的推荐算法最终上线,需要完成上面所说的三个实验:

  • 首先,需要通过离线实验证明它在很多离线指标上优于现有的算法。
  • 然后,需要通过用户调查确定它的用户满意度不低于现有算法。
  • 最后,通过在线的AB测试确定它在我们关心的指标上优于现有的算法。

评测指标

  1. 用户满意度

  2. 预测准确度:最重要的离线评测指标,根据离线推荐算法的不同研究方向,有相应更具体的预测准确度指标。

    • 评分预测:预测用户对物品评分的行为称为评分预测。评分预测的预测准确率一般通过均方根误差(RMSE)、平均绝对误差(MAE)计算。
      $$RMSE=\sqrt{\frac{\sum_{u,i \in T}(r_{ui} - \hat{r}_{ui})^2}{|T|}}$$
      $$MAE=\frac{\sum_{u,i \in T}|r_{ui} - \hat{r}_{ui}|}{|T|}$$
    • TopN推荐:网站在提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐称为TopN推荐。TopN推荐的预测准确率一般通过准确率(precision)/召回率(recall)度量。
      $$Recall=\frac{\sum_{u \in U}|R(u) \cap T(u)|}{\sum_{u \in U}|T(u)|}$$
      $$Precision=\frac{\sum_{u \in U}|R(u) \cap T(u)|}{\sum_{u \in U}|R(u)|}$$
  3. 覆盖率:描述一个推荐系统对物品长尾的发掘能力。覆盖率有不同的定义,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。
    $$Coverage=\frac{|\bigcup_{u \in U}R(u)|}{|I|}$$
    上面的定义过于粗略,在信息论与经济学中有两个著名的指标可以用来定义覆盖率,第一个是信息熵:
    $$H=-\sum_{i=1}^{n}p(i)\log_{2}p(i)$$这里的p(i)是物品i的流行度除以所有商品流行度之和。第二个指标是基尼系数(Gini Index):
    $$G=\frac{1}{n - 1} \sum_{j=1}^{n}(2j - n - 1)p(i_j)$$这里$i_j$是按照物品流行度p()从小到大排序的物品列表中第j个物品。

  4. 多样性:
    用户u的推荐列表的多样性的计算公式:
    $$Diversity(R(u))=1 - \frac{\sum_{i,j \in R(u), i \neq j}s(i,j)}{\frac{1}{2}|R(u)|(|R(u)| - 1)}$$
    推荐系统的整体多样性的计算公式:
    $$Diversity=\frac{1}{|U|}\sum_{u \in U}Diversity(R(u))$$

  5. 新颖性

  6. 惊喜度

  7. 信任度

  8. 实时性

  9. 健壮性

  10. 商业目标

获取各种评测指标的途径如下表:

- 离线实验 问卷调查 在线实验
用户满意度 N Y O
预测准确度 Y Y N
覆盖率 Y Y Y
多样性 O Y O
新颖性 O Y O
惊喜度 N Y N

评测维度

比如一个推荐算法虽然整体上性能不好,但可能在某种特定场景下性能比较好,而增加评测维度的目的就是为了知道一个算法在什么情况下性能最好。这样可以为融合不同推荐算法取得最好的整体性能带来参考。

  • 用户维度:主要包括用户的人口统计学信息、活跃度以及是不是新用户等。
  • 物品维度:包括物品的属性信息、流行度、平均分以及是不是新加入的物品等。
  • 时间维度:包括季节,是工作日还是周末,是白天还是晚上等。

在推荐系统评测报告中包含不同维度下的系统评测指标,就能帮助我们全面地了解推荐系统性能,力争在弱势算法中找优点,优势算法中找缺点。

进一步阅读

  1. O’scar Celma的博士论文:Music Recommendation and Discovery in the Long Tail
  2. ACM的推荐系统会议在2011年有一个专门的研讨会讨论推荐的多样性与新颖性
  3. 惊喜度相关论文:Auralist: Introducing Serendipity into Music RecommendationMetrics for evaluating the serendipity of recommendation listsEvaluating Recommender Systems by Coverage and Serendipity
  4. 关于推荐系统健壮性的教程