首页 > 技术文章 > 推荐系统

leeyuxin 2019-03-10 15:21 原文

一、概念:

  个性化推荐系统通过建立用户与信息产品之间的二元关系,利用已有的选择过程或相似性关系挖掘每个用户潜在感兴趣的对象,进而进行个性化推荐,其本质就是信息过滤。推荐算法主要有:协同过滤算法、基于内容的推荐系统、混合推荐系统、基于用户——产品二部图网络结构的推荐系统。一个完整的推荐系统由3个部分组成:收集用户信息的行为记录模块、分析用户喜好的分析模块、推荐算法模块。关键技术为:用户建模、推荐对象建模和推荐算法。

 

二、背景:

  传统的搜索算法只能呈现给所有的用户一样的排序结果,无法针对不同的用户的兴趣爱好提供相应的服务,信息的爆炸使得信息的利用率反而下降,这种现象被称为信息超载。在信息过载的时代,无论是信息消费者还是信息生产者都遇到了很大的挑战:作为信息消费者,如何从大量的信息中找到自己感兴趣的信息是一件非常困难的事情;作为信息生产者,如何让自己生产的信息脱颖而出,受到广大用户的关注,也是一件非常困难的事情。解决信息超载问题的办法有分类目录和以搜索引擎为代表的信息检索系统和个性化推荐系统。从某种意义上讲,推荐系统和搜索引擎对于用户来说是两个互补的工具。搜索引擎满足了用户明确目的的主动查找需求,而推荐系统能够在用户没有明确目的的时候帮助他们发现感兴趣的新内容。

  个性化推荐的成功应用需要两个条件。第一是存在信息过载,因为如果用户可以很容易地从所有物品中找到喜欢的物品,就不需要个性化推荐了。第二是用户大部分时候没有特别明确的需求,因为用户如果有明确的需求,可以直接通过搜索引擎找到感兴趣的物品。

  推荐系统已经不仅仅是一种商业营销手段,更重要的是可以增进用户的黏着性。推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢。暗信息:在同样的用户喜好程度下,推荐冷门的产品要比推荐热门的产品意义更大,以电影为例,好的电影即使没有推荐,用户也可以通过广播、电视、网络等途径,也能够知道。但是对于冷门的信息,没有宣传,没有推荐,用户就无从得知。

 

三、推荐系统实验方法

  在推荐系统中,主要有3种评测推荐效果的实验方法,即离线实验、用户调查和在线实验。

  1. 离线实验的步骤

    (1) 通过日志系统获得用户行为数据,并按照一定格式生成一个标准的数据集;
    (2) 将数据集按照一定的规则分成训练集和测试集;
    (3) 在训练集上训练用户兴趣模型,在测试集上进行预测;
    (4) 通过事先定义的离线指标评测算法在测试集上的预测结果。

    推荐系统的离线实验都是在数据集上完成的,也就是说它不需要一个实际的系统来供它实验,而只要有一个从实际系统日志中提取的数据集即可。这种实验方法的好处是不需要真实用户参与,可以直接快速地计算出来,从而方便、快速地测试大量不同的算法。它的主要缺点是无法获得很多商业上关注的指标,如点击率、转化率等,离线实验的指标和实际的商业指标存在差距,比如预测准确率和用户满意度之间就存在很大差别,高预测准确率不等于高用户满意度。

  2. 用户调查

    用户调查是推荐系统评测的一个重要工具,很多离线时没有办法评测的与用户主观感受有关的指标都可以通过用户调查获得。 

    它的优点是可以获得很多体现用户主观感受的指标,相对在线实验风险很低,出现错误后很容易弥补。缺点是招募测试用户代价较大,很难组织大规模的测试用户,因此会使测试结果的统计意义不足。此外,在很多时候设计双盲实验非常困难,而且用户在测试环境下的行为和真实环境下的行为可能有所不同,因而在测试环境下收集的测试指标可能在真实环境下无法重现。

  3. 在线实验

   AB测试是一种很常用的在线评测算法的实验方法。它通过一定的规则将用户随机分成几组,并对不同组的用户采用不同的算法,然后通过统计不同组用户的各种不同的评测指标比较不同算法。

  AB测试的优点是可以公平获得不同算法实际在线时的性能指标,包括商业上关注的指标。AB测试的缺点主要是周期比较长,必须进行长期的实验才能得到可靠的结果。因此一般不会用AB测试测试所有的算法,而只是用它测试那些在离线实验和用户调查中表现很好的算法。

  一般来说,一个新的推荐算法最终上线,需要完成上面所说的3个实验。

  (1) 需要通过离线实验证明它在很多离线指标上优于现有的算法。

  (2) 需要通过用户调查确定它的用户满意度不低于现有的算法。

  (3) 通过在线的AB测试确定它在我们关心的指标上优于现有的算法。

 

四、推荐系统实验评测指标

  1. 用户满意度

  用户调查获得用户满意度主要是通过调查问卷的形式。在在线系统中,用户满意度主要通过一些对用户行为的统计得到。

  2. 预测准确度

  预测准确度度量一个推荐系统或者推荐算法预测用户行为的能力。这个指标是最重要的推荐系统离线评测指标,方便了很多学术界的研究人员研究推荐算法。

  在计算该指标时需要有一个离线的数据集,该数据集包含用户的历史行为记录。然后,将该数据集通过时间分成训练集和测试集。最后,通过在训练集上建立用户的行为和兴趣模型预测用户在测试集上的行为,并计算预测行为和测试集上实际行为的重合度作为预测准确度。

  预测准确度指标:

  (1) 评分预测:预测用户对物品评分的行为称为评分预测。

  (2) TopN推荐:网站在提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐叫做TopN推荐。TopN推荐的预测准确率一般通过准确率(precision)/召回率(recall)度量。

  3. 覆盖率

   覆盖率(coverage)描述一个推荐系统对物品长尾的发掘能力。覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。

  4. 多样性

  多样性描述了推荐列表中物品两两之间的不相似性。

  5. 新颖性

  新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。

  6. 惊喜度

  如果推荐结果和用户的历史兴趣不相似,但却让用户觉得满意,那么就可以说推荐结果的惊喜度很高,而推荐的新颖性仅仅取决于用户是否听说过这个推荐结果。

  7. 信任度

  提高推荐系统的信任度主要有两种方法。首先需要增加推荐系统的透明度,而增加推荐系统透明度的主要办法是提供推荐解释。只有让用户了解推荐系统的运行机制,让用户认同推荐系统的运行机制,才会提高用户对推荐系统的信任度。其次是考虑用户的社交网络信息,利用用户的好友信息给用户做推荐,并且用好友进行推荐解释。这是因为用户对他们的好友一般都比较信任,因此如果推荐的商品是好友购买过的,那么他们对推荐结果就会相对比较信任。

  8. 实时性

  推荐系统的实时性包括两个方面。首先,推荐系统需要实时地更新推荐列表来满足用户新的行为变化。实时性的第二个方面是推荐系统需要能够将新加入系统的物品推荐给用户。

  9. 健壮性

  健壮性指标衡量了一个推荐系统抗击作弊的能力。

  10. 商业目标

  商业目标和网站的盈利模式是息息相关的。一般来说,最本质的商业目标就是平均一个用户给公司带来的盈利

  

  

  

  

  

  

  

    

    

    

 

三、用户建模模块:

  该模型能获取、表示、存储和修改用户兴趣偏好,能进行推理,对用户进行分类和识别,帮助系统更好地理解用户特征和类别,理解用户的需求和任务,从而更好地实现用户所需要的功能,推荐系统根据用户的模型进行推荐。

  用户模型需要考虑:

    1. 模型的输入数据,如何获取模型的输入数据

    2. 如何考虑用户的兴趣及需求的变化

    3. 建模的对象

    4. 如何建模

    5. 模型的输出

  1. 模型的输入:

    (1) 用户属性:这是用户最基本的信息,包括社会属性和自然属性,比如用户的姓名、年龄、职业和学历等

    (2) 用户手工输入的信息:这部分是用户主动提供给系统的信息,包括用户在搜索引擎中输入的关键词,用户输入的感兴趣的主题、频道。还有用户标注的是否感兴趣以及是否喜欢。

    (3) 用户的浏览行为和浏览内容:收藏、保存和复制

    (4) 推荐对象的属性特征

    获取模型的输入方式有显示获取、隐式获取和启发式获取三种方式。

  2. 用户的兴趣和需求

    用户的兴趣和需求会随着时间和情景发生变化,用户建模时要考虑到用户长期兴趣和短期兴趣偏好,还要考虑兴趣的变化。

  3. 建模的对象

    建模的对象有单用户建模和群组用户建模

  4. 如何建模

    用户模型的建模方法主要有遗传算法、基于机器学习的算法,例如TF-IDF、自动聚类、贝叶斯分类器、决策树归纳和神经网络方法。

 

四、推荐对象的建模:

  推荐对象需要考虑的问题:

    1. 提取推荐对象的什么特征,如何提取,提取的特征用于什么目的

    2. 对象的特征描述和用户文件描述之间有关联

    3. 提取到的每个对象特征对推荐结果会有什么影响

    4. 对象的特征描述文件是否自动更新

 

 

 五、推荐算法主要有:

  1.协同过滤系统

  核心思想分为两部分:首先,利用用户的历史信息计算用户之间的相似性;然后,利用与目标用户相似性较高的邻居对其他产品的评价来预测目标用户对特定产品的喜好程度,系统根据这一喜好程度来对目标用户 进行推荐。协同过滤推荐系统最大的优点是对推荐对象没有特殊的要求,能处理音乐、电影等难以进行文本结构化表示的对象。在产品的数量相对稳定的系统中,这种方法是很有效的,但是对于产品数量不断增加的系统,这种方法是不适用的。协同过滤推荐系统面临新用户、新产品、打分稀疏性和算法可扩展性的问题。解决稀疏性是使用配置文件。

  协同过滤推荐系统的算法可以分为两类:基于记忆的和基于模型的算法。

  (1) 基于记忆的算法根据系统中所有被打过分的产品信息进行预测。

  (2) 基于模型的算法收集打分数据进行学习并推断用户行为模型,进而对某个产品进行预测打分。基于模型的协同过滤算法和基于记忆的算法的不同在于,基于模型的方法不是基于一些启发规则进行预测计算,而是基于对已有数据应用统计和机器学习得到的模型进行预测。

 

  2.基于内容的推荐系统

  它不需要依据用户对项目的评价意见,而是依据用户已经选择的产品内容信息计算用户之间的相似性,进而进行相应的推荐。随着机器学习等技术的完善,当前的基于内容的推荐系统可以分别对用户和产品建立配置文件,通过分析已经购买过的内容,建立或更新用户的配置文件,系统可以比较用户与产品配置文件的相似度,并直接向用户推荐与其配置文件最相似的产品。基于内容的推荐算法的根本在于信息获取和信息过滤。基于内容的推荐系统不可避免的受到信息获取技术的约束,例如自动提取多媒体数据(图形、视频流、声音流)的内容特征具有技术上的困难。

  优点:

  (1) 可以处理新用户和新产品问题(冷启动)。由于新用户没有选择信息,新产品没有被选信息,因此协同过滤推荐系统无法处理这类问题,但是基于内容的推荐系统可以根据用户和产品的配置文件进行相应的推荐。

  (2) 实际系统中用户对产品的打分信息非常少,协同过滤推荐系统由于打分稀疏性的问题,受到很大的限制。基于内容的推荐系统可以不受打分稀疏性问题的约束。

  (3) 能推荐新出现的产品和非流行的产品,能够发现隐藏的“暗信息”。

  (4) 通过列表推荐项目的内容特征,可以解释为什么推荐这种产品,是用户在使用系统的时候具有很好的用户体验。

 

  3.基于网络结构的推荐算法

  基于网络结构的推荐算法不考虑用户和产品的内容特征,而仅仅把它们看成抽象的节点,所有算法利用的信息都藏在用户和产品的选择关系之中。缺点:受到新用户和新产品等问题的制约。

 

  4.混合推荐算法

  (1) 在协同过滤系统中加入基于内容的算法

  利用用户的配置文件进行传统的协同过滤计算。用户的相似度通过基于内容的配置文件计算而得到,而非共同打过分的产品的信息。这样可以克服协同过滤系统中的稀疏性问题。

 

  5.关联规则

  关联规则关注用户的行为的关联模式,例如,购买香烟的人都会购买打火机。

 

  

  

推荐阅读