推荐系统之基于用户的推荐、基于物品的推荐、协同过滤等工作原理及方法介绍

1. 背景

互联网飞速发展,数据爆炸式增长。人们在海量的数据中找到自己想要的信息变得困难。
这时候百度谷歌搜索引擎出现了,可以为大家精准的寻找目标,但是远远不够,因为,很多时候用户自己也不明白自己的需求,他们很难把自己的需求用关键字描述出来。
因此,出现了推荐系统,它可以使用户从目标明确的数据搜索过程转换到更高级的信息发现过程。推荐系统更加智能。

2. 推荐系统工作原理

在这里插入图片描述
从图片上来看,分为三块,
上面第一块是物品信息用户信息用户对物品产生的偏好
第二块的推荐引擎拿到这些信息后,经过一顿处理,完成了使命。
呈现出第三块,就是把某某物品合理的推荐给某某用户。

我们可以这样理解第一块中系统拿到的信息:

  • 物品信息有这些:物品关键字,物品详情描述。
  • 用户信息有这些:性别,年龄。
  • 用户对物品产生的偏好有这些:用户对物品的评分,用户对物品的评论,用户对物品的查看记录,用户对物品的购买记录。再细分一下,用户对物品的评分,用户对物品的评论是_显式的用户偏好(用户主动留下的信息)。用户对物品的查看记录,用户对物品的购买记录是_隐式的用户偏好(网站保存的信息)

我们可以这样理解第二块中推荐引擎的作用:
推荐引擎使用第一块信息的的一部分,分析出一定的规则,或者对用户的偏好进行预测,这样在其他用户进入或者自己再次进入的时候就可以推荐出感兴趣的物品了。

3. 推荐系统的分类

我们继续看上面那幅图,可以把第二块处理信息到第三块给用户推荐之间过程当成一个模型,现在统称为推荐引擎模型。可以分成以下几类:

根据用户分类:

  • 大众用户:根据大众行为的推荐引擎,对每个用户都给出同样的推荐,这些推荐可以是静态的由系统管理员人工设定的,或者基于系统所有用户的反馈统计计算出的当下比较流行的物品。
  • 个人用户:个性化推荐引擎,对不同的用户,根据他们的口味和喜好给出更加精确的推荐,这时,系统需要了解需推荐内容和用户的特质,或者基于社会化网络,通过找到与当前用户相同喜好的用户,实现推荐。(个性化推荐才是智能推荐)

根据使用的数据分类:

  • 使用物品信息:根据物品的信息,发现物品与物品之间的相关性,这种被称为:基于内容的推荐
  • 使用用户信息:根据用户的信息,发现用户与用户之间的相关性,这种被称为:基于用户的推荐
  • 使用用户对物品产生的偏好:根据用户对物品的偏好,发现物品之间的相关性,或,发现用户之间的相关性,这种被称为:基于协同过滤的推荐。(重点是偏好,就是用户和物品之间的联系)

根据推荐模型建立方式分类:

  • 把每个物品和每个用户当成独立个体:这种推荐引擎将每个用户和每个物品都当作独立的实体,预测每个用户对于每个物品的喜好程度,这些信息往往是用一个二维矩阵描述(行是每个用户,列是每个物品)的。由于用户感兴趣的物品远远小于总物品的数目(每行的0值太多),这样的模型导致大量的数据空置,即我们得到的二维矩阵往往是一个很大的稀疏矩阵。同时为了减小计算量,我们可以对物品和用户进行聚类(很多相同喜好的用户当成一类,就把很多行变成了一行。很多类似的物品当成一类,就把很多列变成了一列), 然后记录和计算一类用户对一类物品的喜好程度,但这样的模型又会在推荐的准确性上有损失。这种叫基于物品和用户本身的推荐。
  • 数据之间的依赖关系(关联规则):关联规则的挖掘已经是数据挖掘中的一个经典的问题,主要是挖掘一些数据的依赖关系,典型的场景就是“购物篮问题”,通过关联规则的挖掘,我们可以找到哪些物品经常被同时购买(啤酒与尿布),或者用户购买了一些物品后通常会购买哪些其他的物品,当我们挖掘出这些关联规则之后,我们可以基于这些规则给用户进行推荐。这种叫基于关联规则的推荐。
  • 机器学习模型:机器学习里面有很多模型,把用户对物品的偏好注入进模型,这样以后用户在进入系统,可以基于此模型计算推荐了。这种叫基于模型的推荐。这种方法的问题在于如何将用户实时或者近期的喜好信息反馈给训练好的模型,从而提高推荐的准确度。

其实在现在的推荐系统中,很少有只使用了一个推荐策略的推荐引擎,一般都是在不同的场景下使用不同的推荐策略从而达到最好的推荐效果,例如 Amazon 的推荐,它将基于用户本身历史购买数据的推荐,和基于用户当前浏览的物品的推荐,以及基于大众喜好的当下比较流行的物品都在不同的区域推荐给用户,让用户可以从全方位的推荐中找到自己真正感兴趣的物品。

4. 详细的推荐机制

第三个知识点中,我们根据推荐引擎使用的数据分类可以把推荐分成基于用户的推荐基于内容的推荐基于协同过滤的推荐

  • 基于用户的推荐
    在这里插入图片描述
    系统根据用户信息(年龄、性别),计算出了用户之间的相似度,例如系统计算出用户A用户C是相似的,在推荐引擎中,称他们是“邻居”。然后就可以把用户A喜欢的物品A推荐给用户C了。用户本位思想
    优点:
    1.因为仅使用用户信息,不使用物品信息,所以这个方法在不同物品的领域都可以使用,它是领域独立的。
    2.因为仅使用用户信息,不使用当前用户对物品的偏好数据,所以对于新用户来讲没有“冷启动”的问题。(冷启动就是新用户刚来,什么购买浏览评分评论数据也没有)
    缺点:
    1.仅使用用户信息对用户进行分类的方法过于粗糙,尤其是对品味要求较高的领域,比如图书,电影和音乐等领域,无法得到很好的推荐效果。可能在一些电子商务的网站中,这个方法可以给出一些简单的推荐。
    2.有些用户信息(比如用户年龄)可能涉及到一些与信息发现问题本身无关却比较敏感的信息,这些用户信息不是很好获取。

  • 基于内容的推荐
    在这里插入图片描述
    系统根据物品信息(电影类型、电影导演),计算出了电影之间的相似度,例如系统计算出电影A电影C是相似的。然后就可以把电影C推荐给喜欢电影A的用户A了。物品本位思想
    优点:
    1.系统使用物品信息,计算出相似的众多物品,也总是把这些物品推荐给一个用户,能很好的建模用户的口味,能提供更加精确的推荐。
    缺点:
    1.仅使用物品信息推荐,我们可以观察到物品的关键词和标签,这也是被认为是描述物品元数据的一种最简单有效的方法。但是对于推荐系统来说,推荐质量很依赖于对物品模型的认识的完整性和全面程度。
    2.仅使用物品信息推荐,物品相似度的分析仅仅依赖于物品本身的特征,这里没有考虑人对物品的态度。
    3.仅使用物品信息推荐,那么新出现的物品因为没有相关数据,不好被推荐,所以对于新物品有“冷启动”的问题。

  • 基于协同过滤的推荐
    按照上面的学习方式,基于协同过滤的推荐肯定要用到用户对物品的偏好信息。让我们再复习一下什么是基于协同过滤的推荐:
    使用用户对物品产生的偏好,根据用户对物品的偏好,发现物品之间的相关性,或,发现用户之间的相关性,这种被称为:基于协同过滤的推荐。(重点是偏好,就是用户和物品之间的联系)
    所以,协同过滤一定是涉及到用户信息物品信息用户对物品的偏好信息的。我们因此需要把协同过滤再细分为:基于用户的协同过滤推荐(偏向用户)、基于物品的协同过滤推荐(偏向物品)和基于模型的协同过滤推荐(偏向喜好,把喜好训练成模型)

    • 基于用户的协同过滤推荐(偏向用户) 使用用户对物品产生的偏好,但是偏向用户
      在这里插入图片描述
      系统根据用户对物品产生的偏好,如:用户 A 喜欢物品 A,物品 C; 用户 B 喜欢物品 B; 用户 C 喜欢物品 A ,物品 C 和物品 D。 (使用用户对物品产生的偏好 )
      从这些用户的历史喜好信息中,我们可以发现用户 A 和用户 C 的口味和偏好是比较类似的(他们两人喜欢的东西差不多),同时用户 C 还喜欢物品 D,那么我们可以推断用户 A 可能也喜欢物品 D,因此可以将物品 D 推荐给用户 A。(偏向用户)
      我们时刻记着基于用户的协同过滤推荐是偏好本位思想,但偏向用户之间的相似性进行推荐

    • 基于物品的协同过滤推荐(偏向物品) 使用用户对物品产生的偏好,但是偏向物品
      在这里插入图片描述
      系统根据用户对物品产生的偏好,如:用户 A 喜欢物品 A,物品 C; 用户 B 喜欢物品 A,物品B和物品C; 用户 C 喜欢物品 A 。 (使用用户对物品产生的偏好 )
      从这些用户的历史喜好可以分析出物品 A 和物品 C 时比较类似的(这两件物品总是能被别人同时喜欢),喜欢物品 A 的人都喜欢物品 C,基于这个数据可以推断用户 C 很有可能也喜欢物品 C,所以系统会将物品 C 推荐给用户 C。(偏向物品)
      我们时刻记着基于物品的协同过滤推荐是偏好本位思想,但偏向物品之间的相似性进行推荐

    • 基于模型的协同过滤推荐(偏向喜好,把喜好训练成模型) 使用用户对物品产生的偏好,直接用喜好训练模型
      基于模型的协同过滤推荐就是基于样本的用户喜好信息,训练一个推荐模型,然后根据实时的用户喜好的信息进行预测,计算推荐。至于如何把喜好相关信息训练成模型,可以查看机器学习简介

    基于协同过滤的推荐机制是现今应用最为广泛的推荐机制,它有以下几个显著的
    优点:
    1.系统使用用户对物品的偏好也就是一些数据,就可以使用,它不需要对物品或者用户进行严格的建模,而且不要求物品的描述是机器可理解的,所以这种方法也是领域无关的。
    2.这种方法计算出来的推荐是开放的,可以共用他人的经验,很好的支持用户发现潜在的兴趣偏好。
    缺点:
    1.因为使用物品信息用户信息用户对物品的偏好等各种数据信息推荐,方法的核心是基于历史数据的,所以对新物品和新用户都有“冷启动”的问题。
    2.因为使用物品信息用户信息用户对物品的偏好等各种数据信息推荐,推荐的效果依赖于用户历史偏好数据的多少和准确性。
    3.在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能少部分人的错误偏好会对推荐的准确度有很大的影响等等。
    4.对于一些特殊品味的用户不能给予很好的推荐。
    5.由于以历史数据为基础,抓取和建模用户的偏好后,很难修改或者根据用户的使用演变,从而导致这个方法不够灵活。

5. 混合推荐机制

在现行的 Web 站点上的推荐往往都不是单纯只采用了某一种推荐的机制和策略,他们往往是将多个方法混合在一起,从而达到更好的推荐效果。关于如何组合各个推荐机制,这里讲几种比较流行的组合方法。

  • 加权的混合: 用线性公式将几种不同的推荐方法按照一定权重组合起来,具体权重的值需要在测试数据集上反复实验,从而达到最好的推荐效果。
  • 切换的混合:前面也讲到,其实对于不同的情况(数据量,系统运行状况,用户和物品的数目等),推荐策略可能有很大的不同,那么切换的混合方式,就是允许在不同的情况下,选择最为合适的推荐机制计算推荐。
  • 分区的混合:采用多种推荐机制,并将不同的推荐结果分不同的区显示给用户。其实,Amazon,当当网等很多电子商务网站都是采用这样的方式,用户可以得到很全面的推荐,也更容易找到他们想要的东西。
  • 分层的混合: 采用多种推荐机制,并将一个推荐机制的结果作为另一个的输入,从而综合各个推荐机制的优缺点,得到更加准确的推荐。

6. 推荐系统的应用

  • 推荐系统在电子商务中的应用 – Amazon
    Amazon 作为推荐引擎的鼻祖,它已经将推荐的思想渗透在应用的各个角落。Amazon 推荐的核心是通过数据挖掘算法和比较用户的消费偏好于其他用户进行对比,借以预测用户可能感兴趣的商品。对应于上面介绍的各种推荐机制,Amazon 采用的是分区的混合的机制,并将不同的推荐结果分不同的区显示给用户。
    在这里插入图片描述
    亚马逊的首页,画线的是不同的推荐机制。

    • 今日推荐 (Today’s Recommendation For You): 通常是根据用户的近期的历史购买或者查看记录,并结合时下流行的物品给出一个折中的推荐。
    • 新产品的推荐 (New For You): 采用了基于内容的推荐机制,将一些新到物品推荐给用户。在方法选择上由于新物品没有大量的用户喜好信息,所以基于内容的推荐能很好的解决这个“冷启动”的问题。
    • 捆绑销售 (Frequently Bought Together): 采用数据挖掘技术对用户的购买行为进行分析,找到经常被一起或同一个人购买的物品集,进行捆绑销售,这是一种典型的基于物品的协同过滤推荐机制。
    • 别人购买 / 浏览的商品 (Customers Who Bought/See This Item Also Bought/See): 这也是一个典型的基于物品的协同过滤推荐的应用,通过社会化机制用户能更快更方便的找到自己感兴趣的物品。
      Amazon 利用有它大量历史数据的优势,量化推荐原因。
      1.基于社会化的推荐,Amazon 会给你事实的数据,让用户信服,例如:购买此物品的用户百分之多少也购买了那个物品;
      2.基于物品本身的推荐,Amazon 也会列出推荐的理由,例如:因为你的购物框中有 ***,或者因为你购买过 ***,所以给你推荐类似的 ***。
      另外,Amazon 很多推荐是基于用户的 profile 计算出来的,用户的 profile 中记录了用户在 Amazon 上的行为,包括看了那些物品,买了那些物品,收藏夹和 wish list 里的物品等等,当然 Amazon 里还集成了评分等其他的用户反馈的方式,它们都是 profile 的一部分,同时,Amazon 提供了让用户自主管理自己 profile 的功能,通过这种方式用户可以更明确的告诉推荐引擎他的品味和意图是什么。
  • 推荐在社交网站中的应用 – 豆瓣
    豆瓣是国内做的比较成功的社交网站,它以图书,电影,音乐和同城活动为中心,形成一个多元化的社交网络平台,自然推荐的功能是必不可少的,下面我们看看豆瓣是如何推荐的。
    当你在豆瓣电影中将一些你看过的或是感兴趣的电影加入你看过和想看的列表里,并为它们做相应的评分,这时豆瓣的推荐引擎已经拿到你的一些偏好信息,那么它将给你展示如下图的电影推荐。
    在这里插入图片描述
    豆瓣的推荐是通过“豆瓣猜”,为了让用户清楚这些推荐是如何来的,豆瓣还给出了“豆瓣猜”的一个简要的介绍。
    “你的个人推荐是根据你的收藏和评价自动得出的,每个人的推荐清单都不同。你的收藏和评价越多,豆瓣给你的推荐会越准确和丰富。
    每天推荐的内容可能会有变化。随着豆瓣的长大,给你推荐的内容也会越来越准。”

    豆瓣必然是基于社会化的协同过滤的推荐,这样用户越多,用户的反馈越多,那么推荐的效果会越来越准确。
    另外,豆瓣也有基于物品的推荐,当你查看一些电影的详细信息的时候,他会给你推荐出“喜欢这个电影的人也喜欢的电影”, 如下图,这是一个基于协同过滤的应用。
    在这里插入图片描述

最后,这篇文章是参照IBM推荐引擎初探理解写的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值