推荐系统总结

316 阅读7分钟

推荐系统是一个偏业务的系统,具有极高的商业价值。一套好的推荐系统除了需要良好的架构设计之外还需需要有更加适合业务场景的推荐算法支持。

下图为推荐系统的技术架构图,其分为两部分,上面为数据部分,主要功能是采集数据,提取数据特征,为模型提供数据支持。下面为模型部分,是推荐执行的主体。

image.png

推荐算法的业务流程

推荐的业务流程简单来说就是收集数据,处理数据,输出结果。下面展示具体步骤:

  1. 数据收集

构建推荐算法模型的数据主要就是在这一部分获取,包括用户的行为数据,信息数据,物品数据,物品信息数据,场景数据等等。

  1. ETL与特征工程

数据收集阶段的数据是杂乱的,不能直接利用的,对于某些数据我们还需要进行清洗,提取里面有用的关键字段,并将其转换为结构化的数据进行存储。这就是ETL,简单来说,其保证数据的质量。特征工程主要是用于提取数据的特征,一般是以向量的形式,以便于这些数据能够被数学模型所理解和处理,就能够使用机器学习算法来学习用户偏好,为用户做推荐。

  1. 构建推荐模型

推荐模型是推荐系统的核心之一,关键之处在于根据具体业务及可利用的数据设计一套精准的、工程化、可以处理大规模数据额分布式机器学习算法。推荐模型一般涉及到模型训练、预测两个核心模块。模型训练主要就是让模型能够通过历史用户行为数据中捕捉用户兴趣和物品特征,通过调参以最大限度的预测用户的行为。模型预测也就是指的个性化推荐,将训练好的模型应用于实际的推荐任务中,为用户请求生成推荐列表。

  1. 推荐预测

构建好推荐算法模型后,就可以用该模型进行预测了,对于不同的业务场景有不同的预测方法。对于实时性要求不高的场景,可以采用T + 1的推荐模型,每天为用户生成一次推荐内容,循环为所有用户生成推荐内容。这种预测方法的好处就是用空间换时间,保证用户请求的及时响应。

  1. 离线评估与在线评估

评估模块在于评估整个推荐系统的质量和价值产出。也是模型训练过程中的调参依据。

离线评估是在构建模型阶段就要评估构建好的模型有多大的预测误差。在线评估是在模型上线过程中评估一些真实用户的体验指标、转化指标;比如转化率、购买率、点击率等等。并且一般都会对多个模型做不同的评估对比。

推荐算法的分类:

  1. 基于内容的推荐算法

挖掘用户曾经喜欢的物品,去推荐类似的物品。本质上就是利用已知的历史偏好和兴跟物品特征去匹配。简而言之,就是系统不知道你喜欢什么,只能根据历史信息推荐

优点是:简单、高效,适用于冷启动(不是指的新用户,而是用户刚打开APP);缺点是:基于特征,死于特征,没有新颖性;

  1. 协同过滤算法

协同过滤算法的核心就是找相似,秉持人以群分、物以类聚的理念来做推荐,是一种经典的推荐算法。协同过滤算法又分为基于邻域的模型算法、隐语分析以及基于图的算法。

基于领域的模型

基于用户的协同过滤:简单来说,就是兴趣相似的用户喜欢的东西,并且你没有见过的,那么我认为你也会喜欢。

基于物品的协同过滤:简单来说,就是和你喜欢的物品特征相似的东西,我也认为你是喜欢的。

隐语义模型算法

通过分析文本的隐含语义去联系用户的兴趣和物品,主要是用于文本挖掘。比如,你在某物点击了名为白色的秋衣的商品,那么隐含的语义就是你在找衣服而不是裤子,并且是秋衣,还得是白色。那么当你退出这个页面后,它就能根据你的操作,给你推荐一堆的白色秋衣。

基于图的模型

。。。。。。基于领域的模型看作是基于图模型的简单形式。

  1. 基于知识的推荐

用户指定需求,系统设法给出推荐方案的过程。简单来说,就是用户明确输入只要车,那么我们就只能推荐车,也叫做基于约束的推荐系统。个人资料卡就是这种推荐方式,会明确推荐的规则,对数据进行过滤,然后返回推荐结果。

  1. 混合推荐

将上面三种算法组合应用,只是各种算法根据实际场景的不同,所占的结果比重也不同。

总结:要形象的说明推荐算法,其实就三种:

第一种,系统知道你喜欢什么,就给你推什么,这就是基于知识的推荐;

第二种,系统不知道你喜欢什么,那么就根据历史数据去找,然后基于历史特征去再推这些类型的物品,特征性非常明显,这就是基于内容的推荐,内容性要求很强;

第三种,通过社交圈,认为朋友喜欢的东西你会喜欢,你喜欢的东西的朋友,你也喜欢;主打一个物以类聚,人以群分,对应的就是协同过滤算法;

推荐模型中的算法

  1. 召回算法

召回算法的作用是从海量数据中快速的获取一批候选数据,要求尽可能快和准。召回的算法非常多,但都是站在不同的维度进行数据召回,因此我们不能单单选择某一种召回算法去解决问题。

比如,基于算法的复杂度分类,可以分为:基于规则策略召回(明确指定规则召回)、基于简单算法的召回(直接根据用户画像召回)、基于复杂算法的召回(深度学习、强化学习等现代算法)。

也可以基于数据维度分类:基于用户数据召回(用户画像)、基于物品数据召回(描述、标签、分类、价格、颜色)、基于行为数据召回(自己的行为或者群体行为,群体行为就包含协同过滤)、基于场景数据的召回(时间、地点、天气、页面、上下文,比如早上美团主推早餐、晚上主推晚餐)

还可以基于个性化分类:非个性化推荐(统一召回热门物品)、个性化推荐(根据用户数据召回)

总的来说,召回算法又很多,我们需要根据自己的业务场景选择适合自己的召回算法。比如,资料卡的数据召回就是基于规则策略的召回,保证了数据在进行推荐的时候不会做无用功,所有推荐数据都是符合要求的,对于同一批数据,不会进行二次推荐;但是在电商的场景下,我们可能会对物品数据和用户数据要求很高,可能会优先选择基于用户数据和物品数据的召回;

  1. 排序算法

排序算法有:规则策略排序算法、简单排序算法、高阶排序算法等。

规则排序算法指的是不是利用机器学习模型来排序,而是利用人工的经验对数据执行排序;

简单排序指的是算法本身结构十分简单,算法复杂度较低,比如,logistics回归、分解机、树模型。

高阶排序算法:深度学习相关算法~~~~

排序算法并非所有场景都要用到,通常只在运用了多种召回算法的场景下需要。