推荐系统:推荐系统基础知识

推荐系统概念

推荐系统要解决的核心是长尾对象。

从某种意义上说,推荐系统和搜索引擎对于用户来说是两个互补的工具。

搜索引擎满足了用户有明确目的时的主动查找需求,而推荐系统能够在用户没有明确目的的时候帮助他们发现感兴趣的新内容。

如果要通过发掘长尾提高销售额,就必须充分研究用户的兴趣,而这正是个性化推荐系统主要解决的问题。推荐系统通过发掘用户的行为,找到用户的个性化需求,从而将长尾商品准确地推荐给需要它的用户,帮助用户发现那些他们感兴趣但很难发现的商品。

推荐系统不仅准确预测用户的行为,而且能够扩展用户的视野、帮助用户发现可能会感兴趣的东西。

  • 推荐系统不仅仅能够淮准确预测用户的行为,而且能够扩展用户的视野,帮助用户发现那些他们可能会感兴趣,但却不那么容易发现的东西。

  • 同时,推荐系统还要能够帮助商家,将那些被埋没在长尾中的好商品、介绍给可能会对它们感兴趣的用户。这也正是《长尾理论》的作者在书中不遗余力介绍推荐系统的原因。

个性化推荐系统

  • 个性化推荐系统在这些网站中的主要作用是通过分析大量用户行为日志,给不同用户提供不同的个性化页面展示,来提高网站的点击率和转化率。

  • 个性化推荐的成功应用,需要两个条件:
    • 第一,存在信息过载。
      • 如果用户可以很容易地从所有物品中找到喜欢的物品,就不需要个性化推荐了。
    • 第二,用户大部分时候没有特别明确的需求
      • 用户如果有明确的需求,可以直接通过搜索引擎找到感兴趣的物品。
  • 示例:个性化阅读
    • 个性化阅读符合前面提出的需要个性化推荐的两个因素:
    • 首先,互联网上的文章非常多,用户面临信息过载的问题;
    • 其次,用户很多时候并没有必须看某篇具体文章的需求,他们只是想通过阅读特定领域的文章了解这些领域的动态。
  • 个性化广告投放和狭义个性化推荐的区别是:
    • 个性化推荐着重于帮助用户、找到可能令他们感兴趣的物品;而广告推荐着重于帮助广告、找到可能对它们感兴趣的用户;
    • 即一个是以用户为核心,而另一个以广告为核心。
  • 目前的个性化广告投放技术主要分为 3 种:
    • 上下文广告
      • 通过分析用户正在浏览的网页内容,投放和网页内容相关的广告,代表系统是谷歌的 Adsense。
    • 搜索广告
      • 通过分析用户在当前会话中的搜索记录,判断用户的搜索目的,投放和用户目的相关的广告。
    • 个性化展示广告
      • 我们经常在很多网站看到大量展示广告(例如 banner),它们是根据用户的兴趣,对不同用户投放不同的展示广告。

推荐系统模型

  • 模型作用:
    • 给用户推荐产品,给产品推荐用户。

协同过滤( collaborative filtering)

  • 比如:
    • 著名的IMDB电影排行榜,看看别人都在看什么电影,别人都喜欢什么电影,然后找一部广受好评的电影观看。
  • 这种方式可以进-步扩展:
    • 如果能找到和自己历史兴趣相似的一群用户,看看他们最近在看什么电影,那么结果可能比宽泛的热门排行榜更能符合自己的兴趣,这种方式称为基于协同过滤(collaborative filtering)的推荐。

推荐算法分类

基于关联规则的分类

  • 购物篮分析;
  • 计算量比较大(排列组合);

基于内容的推荐

  • 比较内容相似度;
  • 网站没有用户的时候,可以使用此算法做冷启动;

基于人口统计的推荐(用户画像标签)

  • 按照用户的标签进行推荐;

基于协同过滤的推荐

  • 基于用户的推荐
  • 基于物品的推荐
  • 推荐系统弊端:审美疲劳

推荐模型效果测试

显示反馈 VS 隐式反馈

测试推荐效果的实验方法

  • 离线实验(offline experiment)
    • 离线实验的方法一般由如下几个步骤构成:
      • 通过日志系统获得用户行为数据,并按照一定格式生成一个标准的数据集;
      • 将数据集按照一定的规则分成训练集和测试集;
      • 在训练集上训练用户兴趣模型,在测试集上进行预测;
      • 通过事先定义的离线指标评测算法在测试集上的预测结果。
  • 用户调查(user study)

  • 在线实验 (online experiment)。
    • A/B 测试 是一种很常用的在线评测算法的实验方法。
    • 它通过一定的规则将用户随机分成几组,并对不同组的用户采用不同的算法,然后通过统计不同组用户的各种不同的评测指标比较不同算法,比如可以统计不同组用户的点击率,通过点击率比较不同算法的性能。

A/B Test

  • 对AB测试感兴趣的读者,可以参考网站 http://www.abtests.com/,该网站给出了很多通过实际AB测试提高网站用户满意度的例子,从中我们可以学习到如何进行合理的AB测试。

  • 一个大型网站的架构分前端和后端,从前端展示给用户的界面到最后端的算法,中间往往经过了很多层,这些层往往由不同的团队控制而且都有可能做AB测试。如果为不同的层分别设计AB测试系统,那么不同的AB测 试之间往往会互相干扰。

  • 比如,当我们进行一个后台推荐算法的AB测试,同时网页团队在做推荐页面的界面AB测试,最终的结果就是你不知道测试结果是自己算法的改变,还是推荐界面的改变造成的。

  • 因此,切分流量是AB测试中的关键。

    • 不同的层以及控制这些层的团队、需要从一个统一的地方获得自己AB测试的流量;
    • 首先,用户进入网站后,流量分配系统决定用户是否需要被进行AB测试,如果需要的话,流量分配系统会给用户打上在测试中属于什么分组的标签。
    • 然后,用户浏览网页,而用户在浏览网页时的行为都会被通过日志系统发回后台的日志数据库。此时,如果用户有测试分组的标签,那么该标签也会被发回后台数据库。
    • 在后台,实验人员的工作首先配置流量分配系统,决定满足什么条件的用户参加什么样的测试。其次,实验人员需要统计日志数据库中的数据,通过评测系统生成不同分组用户的实验报告,

TopN 推荐

  • 亚马逊前科学家 Greg Linden 2009 年在 Communications of the ACM 网站发表了一篇文章,指出:
    • 电影推荐的目的,是找到用户最有可能感兴趣的电影,而不是预测用户看了电影后会给电影什么样的评分。
    • 因此,TopN 推荐更符合实际的应用需求。
      • 也许有一部电影用户看了之后会给很高的分数,但用户看的可能性非常小。
      • 所以,预测用户是否会看一部电影,应该比预测用户看了电影后会给它什么评分更加重要。