(1)推荐引擎初探

引言

  1. 搜索引擎并不能完全满足用户对信息发现的需求:
    1. 用户很难用恰当的关键词描述自己的需求
    2. 基于关键词的信息检索在很多情况下是不够的
  2. 推荐引擎的出现使用户获取信息的方式从简单的目标明确的数据的搜索转换成为更高级更符合人们使用习惯的上下文信息更丰富的信息发现。

信息发现

  1. 如何让人们在海量的数据中想要找到他们需要的信息变得越来越难。
  2. 在用户对自己需求相对明确的时候,用搜索引擎很方便的通过关键字搜索很快的找到自己需要的信息。但是搜索引擎并不能完全满足用户对信息发现的需求,那是因为在很多情况下,用户其实并不明确自己的需求,或者他们的需求很难用简单的关键字来表述,又或者他们需要更加符合他们个人的口味和喜好的结果,因此出现了推荐系统,与搜索引擎相对应,大家也习惯称他为“推荐引擎”。
  3. 如今,随着推荐技术的不断发展,推荐引擎已经在电子商务(E-commerce,例如Amazon,当当网)和一些基于社交的社会化站点(包括音乐,电影和图书分享,例如豆瓣,Mtime等)都取得很大的成功。这也进一步说明了,Web2.0环境下,面对海量的数据用户需要这种更加智能的更加了解他们需求,口味和喜好的信息发现机制。

推荐引擎

  1. 推荐引擎利用特殊的信息过滤技术,将不同的物品或内容推荐给可能对它们感兴趣的用户。
    1. 图一给出了推荐引擎的工作原理图,这里先将推荐引擎看做黑盒,它接受的输入是推荐的数据源,一般情况下,推荐引擎所需要的数据源包括:
      1. 要推荐物品或者内容的元数据,例如关键字,基因描述等
      2. 系统用户的基本信息,例如性别,年龄等
      3. 用户对物品或者信息的偏好,根据应用本身的不同,可能包括用户对物品的评分,用户的购买记录等。其实这些用户的偏好信息可以分为两类:
        1. 显示的用户反馈:这类是用户在网站上自然浏览或者使用网站以外显示提供的反馈信息,例如用户对物品的评分,或者对物品的评论
        2. 隐式的用户反馈:这类是用户在使用网站是产生的数据,隐式的反映了用户对物品的喜好,例如用户购买了某商品,用户查看了某商品的信息等。
      4. 显示的用户反馈能准确反映用户对物品的真实喜好,但需要用户付出额外的代价,而隐式的用户行为,通过一些分析和处理也能反映用户的喜好,只是数据不够精确,有些行为的分析存在较大的噪音。但只要选择正确的行为特征,隐式的用户反馈也能得到很好的效果。只是行为特征的选择可能在不同的应用中有很大的不同。例如在电子商务网站上用户查看了某物品的信息等。

推荐引擎的分类

  1. 推荐引擎是不是为不同用户推荐不同的数据
    1. 基于这个指标,推荐引擎可以分为“基于大众行为的推荐引擎”和“个性化推荐引擎”
    2. 这个是最基本的推荐引擎分类,其实大部分人们讨论的推荐引擎都是个性化的推荐引擎,从根本上说,只有个性化的推荐引擎才是更智能化的信息发现过程。
      1. 根据大众化的推荐引擎,对每个用户都给出相同的推荐,这些推荐可以是静态的,由系统管理员设定的,或者基于系统所有用户的反馈统计量计算出的当下比较流行的物品。
      2. 个性化推荐引擎,对于不同的用户,根据他们的口味和喜好给出更加精确的推荐,这时,系统需要了解需推荐内容和用户的特质,或者基于社会化网络,通过找到与当前用户相同喜好的用户,实现推荐。
  2. 根据推荐引擎的数据源
    1. 其实这里讲的如何发现数据的相关性,因为大部分推荐引擎的工作原理还是基于物品或者相似集进行推荐,根据不同的数据源发现数据相关性的方法可以分为以下几种:
      1. 根据系统用户的基本信息发现用户的相关程度这种被称为“基于人口统计学的推荐”(Demographic-based Recommendation)
      2. 根据推荐物品或内容的元数据发现物品或者内容的相关性,这种被称为“基于内容的推荐”(Content-based Recommendation)
      3. 根据用户对物品或者信息的偏好发现物品或者内容本身的相关性,或者发现用户的相关性,这种被称为“基于协同过滤的推荐”(Colloaborative Filtering-based Recommendation)
  3. 根据推荐模型的建立方式
    1. 可以想象在海量物品和用户的系统中,推荐引擎的计算量是相当大的,要实现实时的推荐,务必需要建立一个推荐模型,关于推荐模型的建立方式可以分为以下几种:
      1. 基于物品和用户本身的:这种推荐引擎将每个用户和每个物品都当做一个独立的实体,预测每个用户对于每个物品的喜好程度,这些信息往往是用一个二维矩阵描述的。由于用户感兴趣的物品远远小于总物品的数目,这样的模型导致大量的数据空置,即,我们得到的二维矩阵往往是一个很大的稀疏矩阵。同时,为了减少计算量,我们可以对物品和用户进行聚类,然后记录和计算一类用户对一类物品的喜好程度,但这样的模型又会在推荐的准确性上有损失。
      2. 基于关联规则的推荐:关联规则的挖掘已经是数据挖掘中的一个经典的问题。主要是挖掘一些数据的依赖关系,典型的场景就是“购物篮问题”,通过关联规则的挖掘,我们可以找到那些物品经常被同时购买,或者用户购买了一些物品后通常会购买哪些其他的物品。当我们挖掘出这种关联规则之后,我们可以基于这些规则对用户进行推荐。
      3. 基于模型的推荐:这是一个典型的机器学习的问题,可以将已有的用户喜好信息作为训练样本,训练出一个预测用户喜好的模型,这样以后再用户进入系统,可以基于此模型进行计算推荐。这种方法的问题在于如何将用户实时或者近期的喜好信息反馈给训练好的模型,从而提高推荐的准确度。
    2. 现在的推荐系统中,很少有只使用了一种推荐策略的推荐引擎,一般都是在不同的场景下使用不同的推荐策略从而达到最好的推荐效果,例如,Amazon的推荐,以及基于大众喜好的当下比较流行的物品都在不同区域推荐给用户,让用户可以从全方位的推荐中找到自己真正感兴趣的物品。

深入推荐机制

  1. 基于人口统计学的推荐
    1. 基于人口统计学的推荐机制是一种最容易实现的推荐方法,他只是简单的根据系统用户的基本信息发现用户的相关程度,然后将相似用户喜爱的其他物品推荐给当前用户,下图给出了这种推荐的工作原理:
    2. 从图中可以很清楚的看到,首先,系统对每个用户都有一个用户Profile的建模,其中包括用户的基本信息,例如用户的年龄,性别等等。然后,系统会根据用户的Profile计算用户的相似度,可以看到,用户A的Profile和用户C的Profile一样,那么系统会认为用户A和C是相似用户,在推荐系统中可以称他们为“邻居”,最后基于“邻居”用户群的喜好推荐给当前用户一些物品,图中将用户A喜欢的物品推荐给用户C
    3. 这种基于人口统计学的推荐机制的好处在于:
      1. 因为使用不当的当前用户对物品的喜好历史数据,所以对于新用户来讲,没有“冷启动(Cold Start)”的问题。
      2. 这个方法不依赖于物品本身的数据,所以这个方法在不同的领域都可以使用,它是领域独立的(domino-independent)。
    4. 这个方法的缺点和问题:
      1. 这种基于用户的基本信息对用户的分类的方法比较粗糙,尤其是对品味要求较高的领域,比如图书、电影和音乐等领域。无法得到很好的推荐效果。可能在一些电子商务的网站中这个方法可以给出一些简单的推荐。
      2. 这个方法可能涉及到一些信息发现问题本身无关却敏感的信息,比如用户的年龄,这些用户信息不是很好获取。
  2. 基于内容的推荐
    1. 基于内容的推荐是在推荐引擎推荐之初应用最为广泛的推荐机制。它的核心思想是根据推荐物品或者内容的元数据,发现物品或内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品。下图给出的是基于内容推荐的基本原理
    2. 图中给出了基于内容推荐的一个典型的例子,电影推荐系统,首先我们需要对电影的元数据有一个建模,这里只是简单的描述了一下电影的类型,然后通过电影的元数据,发现电影间的相似度,因为类型都是“爱情,浪漫”,电影A和C被认为是相似的电影(当然,只是根据类型是不够的,要得到更好的推荐,我们还可以考虑电影的导演,演员等等),最后实现推荐,对于用户A,他喜欢电影A,那么系统可以给他推荐电影C。
    3. 这种基于内容的推荐机制的好处是在于它能很好的建模用户的口味,能提供更加精确的推荐
    4. 它的问题:
      1. 需要对物品进行分析和建模,推荐的质量依赖于对物品模型的完全和全面程度,在现在的应用中我们可以观察到关键词和标签(Tag)被认为是描述物品元数据的一种简单有效的方法。
      2. 物品相似度的分析仅仅依赖于物品本身的特征,这里没有考虑人对物品的态度。
      3. 因为需要基于用户以往的喜好历史做出推荐,所以对于新用户有“冷启动”的问题。
    5. 虽然这个方法有很多不足和问题,但他还是成功的应用在一些电影,音乐和图书的社交站点,有些站点还请专业的人员对物品进行基因编码,比如潘多拉,在一份报告中说道,在潘多拉的推荐引擎中,每首歌有超过100个元数据特征,包括歌曲的风格,年份,演唱者等等。
  3. 基于协同过滤的推荐
    1. 随着Web2.0的发展,Web站点更提倡用户参与和用户贡献,因此基于协同过滤的推荐机制应运而生。它的原理很简单,就是根据用户对物品或者信息的偏好,发现物品或者内容本身的相关性,或者发现用户的相关性,然后再基于这些关联性进行推荐。基于协同过滤的推荐可以分为三个子类:基于用户的推荐(User-based Recommendation)、基于项目的推荐(Item-based Recommendation)、基于模型的推荐(Model-based Recommendation)。
    2. 基于用户的协同过滤推荐
      1. 基于用户的协同过滤推荐的基本原理是,根据所有用户对物品或者信息的偏好,发现当前用户品味和偏好相似的“邻居”用户群,在一般应用中是采用计算“K-邻居”的算法,然后,基于这个K个邻居的历史偏好信息,为当前用户进行推荐。下图给出了原理示意:
      2. 上图示意出基于用户的协同过滤推荐机制的基本原理,假设用户A喜欢物品A、物品C,用户B喜欢物品B,用户C喜欢物品A、物品C和物品D,那么我们可以推断出用户A可能也喜欢物品D,因此可以将物品D推荐给用户A。
      3. 基于用户的协同过滤推荐机制和基于人口统计学的推荐机制都是计算用户的相似度,并基于“邻居”用户群计算推荐,但他们所不同的是“如何计算用户的相似度”,基于人口统计学的机制只考虑用户本身的特征,而基于用户的协同过滤机制可是在用户的历史偏好的数据上计算用户的相似度,它的基本假设是,喜欢类似物品的用户可能有相同或者相似的口味和偏好。
    3. 基于项目的协同过滤推荐:
      1. 基于项目的协同过滤推荐的基本原理也是类似的:只是说它使用所有用户对物品或者信息的偏好,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户,下图为它的原理
      2. 假设用户A喜欢物品A和物品C,用户B喜欢物品A、物品B、物品C,用户C喜欢物品A,从这些用户的历史偏好中可以分析出物品A和物品C比较类似,喜欢物品A的人都喜欢物品C,基于这个数据可以推断用户C很可能也喜欢物品C,所以系统会将物品C推荐给用户C。
      3. 与上面讲的类似,基于项目的协同过滤推荐和基于内容的推荐其实都是基于物品相似度预测推荐,只是相似度计算的方法不一样,前者是从用户历史的偏好推断,而后者是基于物品本身的属性特征信息。
      4. 同时协同过滤,在基于用户和基于项目两个策略中应该如何选择呢?
        1. 其实基于项目的协同过滤推荐机制是Amazon在基于用户的机制上改良的一种策略,因为在大部分的Web站点中,物品的个数是远远小于用户的数量的,而物品的个数和相似度相对比较稳定,同时基于项目的机制比基于用户的实时性更好一些。但也不是所用的场景都是这样的情况,可以设想一下,在一些新闻推荐系统中,也许物品,也就是新闻的个数可能大于用户的个数,而新闻的更新程度也有很快,所以它的形似度依然不稳定。所以,其实可以看出,推荐策略的选择其实和具体的应用场景有很大的关系。
    4. 基于模型的协同过滤推荐:
      1. 基于模型的协同过滤推荐就是基于样本的用户喜好信息,训练一个推荐模型,然后根据实时的用户喜好的信息进行预测,计算推荐。
    5. 基于协同过滤的推荐机制是现如今应用最为广泛的推荐机制,它有以下几个显著的优点:
      1. 它不需要对物品或者用户进行严格的建模,而且不要求物品的描述是机器可理解的,所以这种方法也是领域无关的。
      2. 这种方法计算出来的推荐是开放的,可以共用他人的经验,很好的支持用户发现潜在的兴趣偏好。
    6. 基于协同过滤的推荐有以下几个问题:
      1. 方法的核心是基于历史数据,所以对新物品和新用户都有“冷启动”的问题。
      2. 推荐的效果依赖于用户历史偏好数据的多少和准确性。
      3. 在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能少部分的错误偏好会对推荐的准确度有很大的影响等等。
      4. 包括一些特殊品味的用户不能给予很好的推荐。
      5. 由于以历史数据为基础,抓取和建模用户的偏好后,很难修改或者根据用户的使用演变,从而导致这个方法不够灵活。
  4. 混合的推荐模式
    1. 在现行的Web站点上的推荐往往都不是单纯只采用了某一种推荐的机制和策略,他们往往是多个方法混合在一起,从而达到更好的推荐效果。
    2. 关于如何组合各个推荐机制,这里讲几种比较流行的组合方法:
      1. 加权的混合(Weighted Hybridization):用线性公式(linear)将几种不同的推荐按照一定的权重组合起来,具体权重的值需要在测试数据集上反复试验,从而达到最好的推荐效果。
      2. 切换的混合(Switching Hybridization):前面也讲到,其实对于不同的情况(数据量,系统运行状况,用户和物品的数目等),推荐策略可能有很大的不同,那么切换到混合方式,就是允许在不同的情况下,选择最为合适的推荐机制计算推荐。
      3. 分区的混合(Mixed Hybridization):采用多种推荐机制,并将不同的推荐结果分为不同的去区显示给用户。其实,Amazon,当当网等很多电子商务网站都是采用这种方式,用户可以得到很全面的推荐,也很容易找到他们想要的东西。
      4. 分层的混合(Meta-Level Hybridization):采用多种推荐机制,并将一个推荐结果作为另一个的输入,从而综合各个推荐机制的优缺点,得到更加准确的推荐。

推荐引擎的应用

  1. 推荐在电子商务中的应用-Amazon
    1. Amazon作为推荐引擎的鼻祖,它已经将推荐的思想渗透进应用的各个角落。Amazon推荐的核心是通过数据挖掘算法和比较用户的消费偏好与其他用户进行对比,借以预测用户可能感兴趣的商品。对应于上面介绍的各种推荐机制,Amazon采用的是分区的混合的推荐机制,并将不同的推荐结果分不同的区显示给用户,下面两幅图展示了用户在Amazon上得到的推荐:
      1. 亚马逊的推荐机制-首页
      2. 亚马逊的推荐机制-浏览商品
    2. Amazon可以利用的记录的所有用户在站点上的行为,根据不同数据的特点对它们进行处理,并分成不同的区为用户推送推荐:
      1. 今日推荐:通常是根据用户的近期的历史购买或者查看记录,并结合时下流行的物品给出一个折中的推荐。
      2. 新产品的推荐:采用了基于内容的推荐机制,将一些新到的物品推荐给用户。在方法选择上由于新物品没有大量的用户喜好信息,所以基于内容的推荐能很好的解决这个“冷启动”的问题
      3. 捆绑销售:采用数据挖掘技术,对用户的购买行为进行分析,找到经常被一起或者同一个人购买的物品集,进行捆绑销售,这是一种典型的基于项目的协同过滤推荐机制。
      4. 别人购买/浏览过的商品:这也是一个典型的基于项目的协同过滤推荐的应用,通过社会化机制用户能更快更方便的找到自己感兴趣的物品。
    3. 值得一提的是亚马逊在做推荐时,设计和用户体验也做的特别独到:
      1. Amazon利用有它大量历史数据的优势,量化推荐原因:
        1. 基于社会化的推荐,Amazon会给你事实的数据,让用户信服,例如:购买此物品的用户百分之多少也购买了那个物品。
        2. 基于物品本身的推荐,Amazon也会列出推荐的理由,例如,因为你的购物车中有xxx,或者因为你购买过xxx,所以给你推荐类似的xxx。
      2. 另外,Amazon的很多推荐是基于用户的Profile计算出来的,用户的Profile中记录了用户在Amazon上的行为,包括看了那些物品,买了那些物品,收藏夹和Wash list里的物品等等。当然Amazon还集成了评分等其他的用户反馈的方式,它们都是Profile的一部分,同时Amazon提供了让用户自主管理自己Profile的功能,通过这种方式可以更明确的告诉推荐引擎它的品味和意图是什么。
  2. 推荐在社交网络中的应用-豆瓣
    1. 豆瓣是国内做的比较成功的社交网站,它以图书、电影、音乐和同城活动为中心,形成一个多元化的社交网络平台,自然推荐的功能是必不可少的,下面我们看看豆瓣是怎么推荐的。
      1. 豆瓣的推荐机制-豆瓣电影,当你在豆瓣电影中将一些你看到过的或是感兴趣的电影加入你看过或者想看的列表里,并为它们作出相应的评分,这是豆瓣的推荐引擎已经拿到你的一些偏好信息,那么它将给你展示下图所示的电影推荐
      2. 豆瓣的推荐机制-基于用户品味的推荐
    2. 豆瓣的推荐是通过“豆瓣猜”,为了让用户清楚这些推荐是如何来的,豆瓣还给出了“豆瓣猜”的简要介绍。

      你的个人推荐是根据你的收藏和评价自动得出的,每个人的推荐清单都不同。你的收藏和评价越多,豆瓣给你的推荐会越准确和丰富。每天推荐的内容可能会有变化。随着豆瓣的长大,给你推荐的内容也会越来越准。

      这一点让我们清晰明了的知道,豆瓣必然是基于社会化的协同过滤的推荐,这样用户越多,用户的反馈越多,那么推荐的效果会越来越准确。

    3. 相对于Amazon的用户行为模型,豆瓣电影的模型更加简单,就是“看过”和“想看”,这也让他们的推荐更加专注于用户的品味,毕竟买东西和看电影的动机还是有很大的不同的。
    4. 另外,豆瓣也有基于物品本身的推荐,当你查看一些电影的详细信息的时候,它会给你推荐出“喜欢这个电影的人也喜欢的电影”,如下图,这是一个基于协同过滤的应用。豆瓣的推荐机制-基于电影本身的推荐

总结

  1. 推荐引擎的魔力在于你不清楚在这个推荐背后,引擎到底记录和推理了些什么。
  2. 其实推荐引擎只是默默的记录和观察你的一举一动,然后再借由所有用户产生的海量数据分析和发现其中的规律,进而慢慢的了解你,你的需求,你的习惯,并默默的无声息的帮助你快速的解决你的问题,找到你想要的东西。
  3. 其实,回头想想,很多时候,推荐引擎比你更了解你自己

转载自:探索推荐引擎内部的秘密,第 1 部分 推荐引擎初探 赵 晨婷 和 马 春娥

feihu分享到:

          

You may also like...

Scroll Up