搜索引擎是当前快速查找目标信息的最好途径。在用户对自己需求很明确时,用搜索引擎可以方便地通过关键字快速找到自己需要的信息。但搜索引擎并不能完全满足用户对信息发现的需求,因为在很多情况下,用户其实并不明确自己的需要, 或者他们的需求很难用简单的关键字来表述,又或者他们需要更加符合他们个人口味和喜好的结果,因此出现了推荐系统,与搜索引擎对应,大家也习惯称它为推荐引擎。
根据不同的标准,可以对推荐引擎进行如下分类:
1、根据是否为不同的用户推荐不同的数据,可以将推荐引擎分为基于大众行为的推荐引擎和个性化推荐引擎
- 根据大众行为的推荐引擎,对每个用户都给出同样的推荐,这些推荐可以是静态的由系统管理员人工设定的,或者基于系统所有用户的反馈统计计算出具有某个特征的物品。比如网站的热门推荐与商品降价推荐就是属于这种该方式。
- 个性化推荐引擎,顾名思义,就是针对对不同的用户,根据他们的口味和喜好给出精确的推荐,这时,系统需要了解需推荐物品和用户的个性化属性,比如基于用户协同过滤的推荐就是通过找到与目标用户具有相同喜好的用户所喜好的物品,来形成推荐结果。
这是一个最基本的推荐引擎分类,其实大部分人们讨论的推荐引擎都是将个性化的推荐引擎,因为从根本上说,只有个性化的推荐引擎才是更加智能的信息发现过程。
2、根据推荐引擎的数据源。
因为大部分推荐引擎的工作原理还是基于物品或者用户的相似集进行推荐,而针对不同的数据源,可从中发现的数据相关性不同,一般分为以下几种:
- 根据用户的基本信息发现用户的相关程度,这种被称为基于人口统计学的推荐(Demographic-based Recommendation),比如已有男性用户对某物品有订购,就可以把该物品推荐给其他男性用户。
- 根据推荐物品或内容的元数据,发现物品或者内容的相关性,这种被称为基于内容的推荐(Content-based Recommendation),一般视频网站中同类型电影的推荐、同演员电影的推荐等都是基于电影内容的推荐。
- 根据用户对物品或者信息的偏好,发现物品或者内容本身的相关性,或者是发现用户的相关性,这种被称为基于协同过滤的推荐(Collaborative Filtering-based Recommendation)。有的购物网站中“订购了该产品的用户还订购了以下产品”的应用场景就是通过基于用户的协同过滤实现的(但也有一些网站是通过关联规则实现的)。
3、根据推荐模型的建立方式
可以想象在海量物品和用户的系统中,推荐引擎的计算量是相当大的,除了通过离线处理的方式外,要实现实时的推荐通常都是建立一个推荐模型,关于推荐模型的建立方式可以分为以下几种:
- 基于物品和用户本身的,这种推荐引擎将每个用户和每个物品都当作独立的实体,预测每个用户对于每个物品的喜好程度,这些信息往往是用一个二维矩阵描述的。 由于用户感兴趣的物品远远小于总物品的数目,这样的模型导致大量的数据空置,即我们得到的二维矩阵往往是一个很大的稀疏矩阵。同时为了减小计算量,可以对物品和用户进行聚类, 然后记录和计算一类用户对一类物品的喜好程度,但这样的模型又会在推荐的准确性上有损失。
- 基于关联规则的推荐(Rule-based Recommendation):关联规则的挖掘已经是数据挖掘中的一个经典的问题,主要是挖掘一些数据的依赖关系,典型的场景就是“购物篮问题”,通过关联规则的挖掘,可以找到哪些物品经常被同时购买,或者用户购买了一些物品后通常会购买哪些其他的物品,当我们挖掘出这些关联规则之后,我们可以基于这些规则给用户进行推荐。
- 基于模型的推荐(Model-based Recommendation):这是一个典型的机器学习的问题,可以将已有的用户喜好信息作为训练样本,训练出一个预测用户喜好的模型,这样以后用户在 进入系统,可以基于此模型计算推荐。这种方法的问题在于如何将用户实时或者近期的喜好信息反馈给训练好的模型,从而提高推荐的准确度。
针对推荐方法或策略的选择,一般网站都不会局限于某一个,而是通过组合形成最佳的推荐引擎,关于如何组合各个推荐机制,以下是几种比较流行的组合方法:
- 加权的混合(Weighted Hybridization): 用线性公式(linear formula)将几种不同的推荐按照一定权重组合起来,具体权重的值需要在测试数据集上反复实验,从而达到最好的推荐效果。
- 切换的混合(Switching Hybridization):前面也讲到,其实对于不同的情况(数据量,系统运行状况,用户和物品的数目等),推荐策略可能有很大的不同,那么切换的混合方式,就是允许在不同的情况下,选择最为合适的推荐机制计算推荐。
- 分区的混合(Mixed Hybridization):采用多种推荐机制,并将不同的推荐结果分不同的区显示给用户。其实,Amazon,当当网等很多电子商务网站都是采用这样的方式,用户可以得到很全面的推荐,也更容易找到他们想要的东西。
- 分层的混合(Meta-Level Hybridization): 采用多种推荐机制,并将一个推荐机制的结果作为另一个的输入,从而综合各个推荐机制的优缺点,得到更加准确的推荐。
另外,在网站上执行推荐,一般都是针对不同的场景来使用不同的推荐策略从而达到最好的推荐效果,例如Amazon的推荐,它将基于用户本身历史购买数据的推荐,和基于用户当前浏览的物品的推荐,以及基于大众喜好的当下比较流行的物品都在不同的区域推荐给用户,让用户可以从全方位的推荐中找到自己真正感兴趣的物品,这样就大大提高了推荐的有效性。