推荐算法概述:基于内容的推荐算法、协同过滤推荐算法和基于知识的推荐算法

“无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。”

所谓推荐算法就是利用用户的一些行为,通过一些数学算法,推测出用户可能喜欢的东西。推荐算法主要分为两种

1. 基于内容的推荐

     基于内容的信息推荐方法的理论依据主要来自于信息检索和信息过滤,所谓的基于内容的推荐方法就是根据用户过去的浏览记录来向用户推荐用户没有接触过的推荐项。主要是从两个方法来描述基于内容的推荐方法:启发式的方法和基于模型的方法。启发式的方法就是用户凭借经验来定义相关的计算公式,然后再根据公式的计算结果和实际的结果进行验证,然后再不断修改公式以达到最终目的。而对于模型的方法就是根据以往的数据作为数据集,然后根据这个数据集来学习出一个模型。一般的推荐系统中运用到的启发式的方法就是使用tf-idf的方法来计算,跟还有tf-idf的方法计算出这个文档中出现权重比较高的关键字作为描述用户特征,并使用这些关键字作为描述用户特征的向量;然后再根据被推荐项中的权重高的关键字来作为推荐项的属性特征,然后再将这个两个向量最相近的(与用户特征的向量计算得分最高)的项推荐给用户。在计算用户特征向量和被推荐项的特征向量的相似性时,一般使用的是cosine方法,计算两个向量之间夹角的cosine值。

 

2.基于协同过滤的推荐

    基于协同过滤的推荐算法理论上可以推荐世界上的任何一种东西。图片、音乐、样样可以。 协同过滤算法主要是通过对未评分项进行评分 预测来实现的。不同的协同过滤之间也有很大的不同。

    基于用户的协同过滤算法: 基于一个这样的假设“跟你喜好相似的人喜欢的东西你也很有可能喜欢。”所以基于用户的协同过滤主要的任务就是找出用户的最近邻居,从而根据最近邻 居的喜好做出未知项的评分预测。这种算法主要分为3个步骤:

     一,用户评分。可以分为显性评分和隐形评分两种。显性评分就是直接给项目评分(例如给百度里的用户评分),隐形评分就是通过评价或是购买的行为给项目评分 (例如在有啊购买了什么东西)。

    二,寻找最近邻居。这一步就是寻找与你距离最近的用户,测算距离一般采用以下三种算法: 1.皮尔森相关系数。 2.余弦相似性。 3调整余弦相似性。 调整余弦 相似性似乎效果会好一些。

    三,推荐。产生了最近邻居集合后,就根据这个集合对未知项进行评分预测。把评分最高的N个项推荐给用户。 这种算法存在性能上的瓶颈,当用户数越来越多的时候,寻找最近邻居的复杂度也会大幅度的增长。

     因而这种算法无法满足及时推荐的要求。基于项的协同过滤解决了这个问题。 基于项的协同过滤算法 根基于用户的算法相似,只不过第二步改为计算项之间的相似度。由于项之间的相似度比较稳定可以在线下进行,所以解决了基于用户的协同过滤算法存在的性能瓶 颈。

 

3.基于关联规则推荐

     基于关联规则的推荐(Association Rule-based Recommendation)是以关联规则为基础,把已购商品作为规则头,规则体为推荐对象。关联规则挖掘可以发现不同商品在销售过程中的相关性,在零售业中已经得到了成功的应用。管理规则就是在一个交易数据库中统计购买了商品集X的交易中有多大比例的交易同时购买了商品集Y,其直观的意义就是用户在购买某些商品的时候有多大倾向去购买另外一些商品。比如购买牛奶的同时很多人会同时购买面包。

算法的第一步关联规则的发现最为关键且最耗时,是算法的瓶颈,但可以离线进行。其次,商品名称的同义性问题也是关联规则的一个难点。

 

4.基于效用推荐

    基于效用的推荐(Utility-based Recommendation)是建立在对用户使用项目的效用情况上计算的,其核心问题是怎么样为每一个用户去创建一个效用函数,因此,用户资料模型很大程度上是由系统所采用的效用函数决定的。基于效用推荐的好处是它能把非产品的属性,如提供商的可靠性(Vendor Reliability)和产品的可得性(Product Availability)等考虑到效用计算中。

 

5.基于知识的推荐

    基于知识的推荐(Knowledge-based Recommendation)在某种程度是可以看成是一种推理(Inference)技术,它不是建立在用户需要和偏好基础上推荐的。基于知识的方法因它们所用的功能知识不同而有明显区别。效用知识(Functional Knowledge)是一种关于一个项目如何满足某一特定用户的知识,因此能解释需要和推荐的关系,所以用户资料可以是任何能支持推理的知识结构,它可以是用户已经规范化的查询,也可以是一个更详细的用户需要的表示。

6.组合推荐

   由于各种推荐方法都有优缺点,所以在实际中,组合推荐(Hybrid Recommendation)经常被采用。研究和应用最多的是内容推荐和协同过滤推荐的组合。最简单的做法就是分别用基于内容的方法和协同过滤推荐方法去产生一个推荐预测结果,然后用某方法组合其结果。尽管从理论上有很多种推荐组合方法,但在某一具体问题中并不见得都有效,组合推荐一个最重要原则就是通过组合后要能避免或弥补各自推荐技术的弱点。

在组合方式上,有研究人员提出了七种组合思路:
   1)加权(Weight):加权多种推荐技术结果。
2)变换(Switch):根据问题背景和实际情况或要求决定变换采用不同的推荐技术。
3)混合(Mixed):同时采用多种推荐技术给出多种推荐结果为用户提供参考。
4)特征组合(Feature combination):组合来自不同推荐数据源的特征被另一种推荐算法所采用。
5)层叠(Cascade):先用一种推荐技术产生一种粗糙的推荐结果,第二种推荐技术在此推荐结果的基础上进一步作出更精确的推荐。
6)特征扩充(Feature augmentation):一种技术产生附加的特征信息嵌入到另一种推荐技术的特征输入中。
7)元级别(Meta-level):用一种推荐方法产生的模型作为另一种推荐方法的输入。

 

主要推荐方法的对比

各种推荐方法都有其各自的优点和缺点,见表1。

表1 主要推荐方法对比

推荐方法 优点 缺点
基于内容推荐        推荐结果直观,容易解释;                 

 

不需要领域知识

新用户问题;                         

 

复杂属性不好处理;

要有足够数据构造分类器

协同过滤推荐 新异兴趣发现、不需要领域知识;

 

随着时间推移性能提高;

推荐个性化、自动化程度高;

能处理复杂的非结构化对象

稀疏问题;

 

可扩展性问题;

新用户问题;

质量取决于历史数据集;

系统开始时推荐质量差;

基于规则推荐 能发现新兴趣点;

 

不要领域知识

规则抽取难、耗时;

 

产品名同义性问题;

个性化程度低;

基于效用推荐 无冷开始和稀疏问题;

 

对用户偏好变化敏感;

能考虑非产品特性

用户必须输入效用函数;

 

推荐是静态的,灵活性差;

属性重叠问题;

基于知识推荐 能把用户需求映射到产品上;

 

能考虑非产品属性

知识难获得;

 

推荐是静态的

你可能感兴趣的:(机器学习)