推荐系统算法(一文搞定推荐系统及算法)

2022年 5月 1日23:09:15创业资讯评论66字数 8008阅读模式

引言

近年来,深度学习技术的快速发展,大大加速了人工智能在传统和互联网领域的商业化落地。现如今,人工智能的应用已如雨后春笋般渗透到我们衣食住行的方方面面。比如无人超市的面世、无人驾驶汽车的正式上路、智能手机刷脸识别模式、医疗图像技术等。

与此同时,面对时间的碎片化、信息的同质化/海量化、用户选择项的增多和用户耐心的减退,如何满足用户需求、拓展用户需求、驱动业务增长、优化行业生态等,成了各个行业亟待解决的问题。因此,个性化推荐系统便应运而生了。

推荐系统数据架构

在推荐系统搭建过程中,数据是非常重要的资产,也是驱动决策的燃料。这里提及的数据,主要指的是基本信息、显式反馈、隐式反馈这三种。

基本信息:主要指用户的性别/年龄/地区、物品的分类/款式/重量等。

显式反馈:一般指用户对物品的真实评分,这类数据的特点是用户操作成本高,数据量小,更真实。

隐式反馈:一般指除直接评分以外的若干用户行为数据,包括点击、加购、收藏、购买、浏览时长等,这类数据特点是用户操作成本低、数据量大、具有一定的不真实性。用户行为数据还可以进一步通过聚合、梳理形成用户的行为表现数据(如活跃度、回访、复购情况等)。

而个性化推荐的过程,其实就是先对基本数据和反馈数据进行加工,再利用加工结果进行决策的过程。在数据流转的过程中,个性化推荐体系被划分为数据采集层、数据加工层、数据决策层、效用评价层这 4 层。

推荐系统算法(一文搞定推荐系统及算法)

从上图可知,在数据采集阶段,主要工作是全面了解产品和用户。在数据加工阶段,主要工作是对用户和物品分门别类。在数据决策阶段,主要工作是驱动分发方案和产品优化,这也是搜索和推荐等产品的工程和算法能力输出阶段。在效用评价阶段,主要工作是评估流量分发的效果并形成数据反馈。

推荐系统算法架构

推荐系统的算法架构,通常分为离线架构和在线架构这两种

1.离线架构
离线架构主要用来构建物品画像用户画像,因为数据是算法的基础,底层数据的丰富程度决定了推荐能力的天花板。

比如系统通常不了解未登录用户的行踪,通过合适的引导,可以让访问推荐系统的用户未登录占比更低,从而大幅提升推荐系统的掌控力。再比如参考更丰富的用户行为(曝光、点击、点赞、停留时长、下载时长等等)和更多的用户特征(用户年龄、性别、地域、商品店铺、价格、类目等),也能大幅增强推荐系统的掌控力,而且这些参考因素越多越好。

从本质上来讲,算法系统是用来预测未来,但是如果过去什么都没有发生,预测出来的结果也就可想而知了。

2.在线架构
在线架构主要用来从海量物品池中选择合适的推荐的对象匹配给对应用户。在这个架构中,我们主要依靠检索技术(如协同过滤、内容过滤、用户偏好等)建立索引,然后根据索引生成第一步的结果。其中涉及的工程技术主要是用来提升系统整体的响应速度、吞吐效率等,使得整个推荐系统能一次性查得更多、更快。

下面我们以 58 同城本地服务推荐流程和算法架构为例,如下图所示。

推荐系统算法(一文搞定推荐系统及算法)

从图中可知,在线架构主要分为召回层、粗排层、精排层、融合和重排层这四大部分。

召回层:从物品库中根据多个维度筛选出潜在物品候选集,并将候选集传递给排序环节。在召回供给池中,我们可以看到多个召回集,整个召回环节的输出量往往以万为单位。

粗排层:利用规则或者简单模型对召回的物品进行排序,并根据配额进行截断,截取出 Top N 条数据输出给精排层,配额一般分业务场景,例如对 58 同城本地服务推荐分品类进行配额,整个粗排环节的输出量往往以千为单位。

精排层:利用大量特征的复杂模型,对物品进行更精准的排序,然后输出给重排层(融合层),整个精排环节的输出量往往以百为单位。

融合和重排层:以产品策略为导向进行融合和重排,例如 将商品、SKU、帖子、标签等不同展示元素融合在一个列表中,并且经过去除已曝光、去重、打散等策略,并根据点击回退在列表中插入新的信息来提升体验,最后生成用户可见的推荐列表,整个融合和重排环节的输出量往往以几十为单位。

标签与画像

用户标签是用户的结构化基础,物品标签是物品的结构化基础,为后续用户画像和物品画像的产出提供必要的材料和关联基础。推荐算法依据结构化数据对用户和物品进行理解,从而提高流量分发的精度。

用户结构化基础:用户标签

因为用户标签面向各个业务,所以用户标签被应用到实际业务之前,我们需要先深刻理解各个业务,再通过标签加工的方式找到该业务体系下有区分度的标签,这里所说的有区分度的标签指的就是用户标签。

一般来说,用户标签分为基本信息、统计标签、偏好标签、分类标签这四类。

基本信息:比如用户 ID、注册时间、设备类型等标签,这些标签都是通过线上系统或其他方式直接获取的,不需要任何加工。

统计标签:指的是基于事实数据的直接统计结果,比如超市最近三个月日均支付金额、最近三个月登录次数、历史累计好评数等标签通过汇总历史数据即可生成。

偏好标签:指通过汇总用户一段时间内的相关行为,并按行为加权生成的标签。这类标签主要根据用户行为计算而得,反应了用户一段时间内的兴趣点,比如用户的品牌偏好、各级类目偏好等。这些标签并不涉及复杂的机器学习算法,但是不同标签的加工过程存在差异化和个性化。

分类标签:比如预测性别、预测是否有车有房、预测是否已婚已育等标签,它们的每个类别都有明确的定义。因为这类标签的生成一般涉及复杂的算法逻辑,所以常常需要借助机器学习算法。

物品结构化基础:物品标签

在浏览信息时,用户往往希望看到自己钟爱的标签,然后挑选钟爱标签对应的商品,再进入烙印了自己钟爱标签的店铺。在这个过程中,用户不断沉淀了个人的行为标签。

而物品标签就是通过标签这个维度将商品清单等泛内容、 C 端/B 端等泛用户及前台导购投放等运营手段串联起来,再利用标签能力实现对不同商品圈集、不同 B 端圈集、不同 C 端圈集。

物品标签结构

物品标签的标签结构按照标签的组合粒度可以分成基础标签、合成标签、概念标签

(1)基础标签

基础标签分成内容标签、用户标签、卖家标签、商品标签、业务标签等。

以商品标签为例,商品标签的基础标签指的是文本类标签,主要取自商品的标题、属性等各种用于描述商品的文本信息,类似于属性-属性值。为了方便管理和应用,我们需要对属性进行优化,最终沉淀出一套在整个标签体系中不可再分、最基础的标签。

因此,基础标签是平台最重要、最核心的资产,我们通过基础标签实现了商品——>B 端——>C 端——>内容的串联。

(2)合成标签

合成标签是对基础标签进一步加工的产物。以商品为例,合成标签定义为相似商品的集合,比如欧美高领毛衣、高腰碎花连衣裙等,它们各自由三个基础标签构成(注意:它们是相似商品集,并不仅仅是一条短文本)。

对于商品而言,使用多个标签描述这批商品时,其优点在于可理解、可编辑,因为它是一个中间产物。就像一个积木,我们基于它搭出更多好玩的应用。

虽然合成标签是相似商品的集合,不过也同样适用于用户身上,因此我们也可以使用合成标签对用户进行更细粒度的切分。

(3)概念标签

概念标签的定义范围比较宽,指的是跨品类、跨类目商品的合理组合。

目前,概念标签主要应用在商品上,用来强调商品的合理性。概念标签可以通过基础标签的交并集关系聚合而成,也可以由多个合成标签聚合而成。比如“青春学院风”这个概念标签包含了破洞牛仔裤、韩版T恤、帆布鞋以及斜挎帆布包等商品。

在实际业务中,概念标签的最大价值在于将行业的经验、用户群体的购物偏好等统统沉淀下来,从而为更多用户服务,真正做到了知识的沉淀和复用。

构建用户画像

用户画像说白了就是一个人的标签集合

构建用户画像需要从用户基础信息和动机信息出发,再从不同类型用户中抽取出一个典型特征来还原一个用户的特征,而这个特征抽取的过程就是用户画像构建的过程。

1)用户动机

在选择和使用媒体时,用户往往具备很强的主动权和目的性,因此用户动机其实指的就是用户使用互联网的目的,它通常分为社交、消磨时间、查找信息、分享、表达、娱乐……这几种。

2)特征

用户画像由大量的特征组成,比如基本特征、统计特征、偏好特征等,而特征的特点分为以下三点,也可参考下图进行理解。

特征最直观的一个属性是有特征值,而这个特征值可以是单值,也可以是多值,它具有具体数据类型、数据分布,比如枚举范围、日期类、真实值等。

同时,特征还有生成逻辑,它主要通过规则或者算法模型产生,且在不同条件下它还会产生新的特征。

除此之外,特征还能区分类目城市。

推荐系统算法(一文搞定推荐系统及算法)

构建物品画像

物品画像同用户画像一样,我们可以把物品画像构建简单地理解为物品信息标签化的过程。

在这个过程中,我们首先需要挖掘物品结构化标签,再通过各个维度把结构化标签进行有序组织,最终形成物品画像。

物品画像主要分为基本信息、供给侧信息、存储侧信息、消费侧信息这 4 个层面,下面我们以 58 同城到家精选服务画像为例,

基本信息包括类目属性、价格信息、店铺信息、商家信息等;

供给侧信息包括商家供给数、商家服务能力分等;

存储侧信息包括库存数、库存金额等;

消费侧信息包括订单数、下单用户数、销量信息、优惠券金额、实付金额等,这些信息经过不同维度提取后,最终构成了完整的物品画像。

简单推荐算法

在个性化推荐系统中,简单推荐策略主要分为:基于热门推荐推荐、基于基本信息推荐、基于内容推荐、基于关联规则推荐这几种。

1.基于热门推荐

热门推荐,顾名思义就是使用统计的方法将最热门的物品进行推荐,越热门的物品被点击的可能性越大。这个比较容易理解,因此我们就不过多赘述了。

2.基于基本信息推荐

基于基本信息推荐是根据用户的基本信息如:领域、职位、工作年龄、性别和所在地等给用户推荐感兴趣或者相关的内容,比如年龄-关联电影表、收入-关联商品类型表,性别-文章关联表等等。

因为基于热门推荐与基于基本信息推荐使用比较简单,所以这两个推荐策略应用比较广泛。

3.基于内容推荐

基于内容推荐是指(Content Based Recommandation)利用用户和物品的相关信息,例如前述用户和物品画像信息及用户对物品的行为构建的模型,例如浏览、点击、打电话、收藏、评论、下单等。内容推荐算法根据用户行为推断用户偏好,并为用户推荐相同偏好的物品。

基于内容推荐的计算过程一般分为四个步骤:

找到用户历史感兴趣的物品集合;

找到物品集合的具化属性;

抽象具化属性的共性属性;

由这些共性属性查找其他物品,并实施推荐。

4.基于关联规则推荐

基于关联规则推荐(Association Rules)是通过数据挖掘的方法找到物品之间的相关关系,再进行标签推荐,比如大家所熟知的“啤酒”和“尿布”,就是某超市工作人员通过对顾客的购物清单进行分析后,才发现了啤酒和尿布之间的共现关系。

而衡量物品之间的关联性时,主要看支持度、置信度和提升度这三大指标

传统机器学习推荐算法

推荐算法本质上是一一种信息处理方法,它将用户信息和物品信息处理后,最终输出了推荐结果。基于热门推荐、基于内容推荐、基于关联规则推荐等方法比较粗放,所以推荐结果往往不够精准。如果我们想打造一个千人千面、真正符合用户个性化推荐需求的推荐系统,就需要使用到更为复杂的运算逻辑——推荐算法

推荐算法又分为传统机器学习算法和深度学习算法,本章节主要介绍传统机器学习算法

传统机器学习算法分为了基于邻域的方法和基于特征的方法这两类

基于邻域的推荐算法——协同过滤算法

把用户编号作为纵坐标,帖子编号作为横坐标,并通过将用户与帖子是否存在交互过程进行标记,然后填写到如下所示表格中。这时,一个用户与物品的行为矩阵就这样搭建成功了。

推荐系统算法(一文搞定推荐系统及算法)

针对上表中的内容,如果我们对行为分类进行打分(比如点击浏览 1 分、打电话 3 分、 微聊 3 分、收藏 5分等),再把对应分数填充到矩阵中,就可以得到一个评分矩阵,具体细节这里不作描述。

如果我们需要对用户 A 进行推荐,根据如下所示表格,我们发现用户 A、用户 B 与用户 C 都对帖子 1、帖子 2、帖子 3 感兴趣,因此我们认为用户 A、用户 B、用户 C 比较相似。

同时,我们还发现用户 B 还看过帖子 4,用户 C 还看过帖子 5,而这 2 个帖子用户 A 都没看过。基于相似性原则,我们认为用户 A 很大概率上会对帖子 4 和帖子 5 感兴趣。因此,生成推荐时,我们也会向用户 A 推荐帖子 4 和帖子 5。

以上就是协同过滤算法的基本思想

协同过滤算法分类

在互联网应用场景中,存在大量用户看了又看、买了又买、买过还买等情况,因此,我们需要利用集体智慧将用户和物品的所有交互行为实现个性化推荐,此时就可以考虑使用协同过滤算法。

协同过滤算法(Collaborative Filtering,简称 CF)是推荐算法中最成熟、应用最广的一种算法。根据模型相似度计算的对象,我们把协同过滤算法(CF)分为了 UserCF、ItemCF 、ModelCF 这 3 种,下面我们逐一展开说明。

1. 基于用户的协同过滤算法(UserCF)

通过分析用户喜欢的物品,我们发现如果两个用户(用户A 和用户 B)喜欢过的物品差不多,则这两个用户相似。此时,我们可以将用户 A 喜欢过但是用户 B 没有看过的物品推荐给用户 B。

基于用户的协同过滤算法(UserCF)的具体实现思路如下:

(1)计算用户之间的相似度;

(2)根据用户的相似度,找到这个集合中用户未见过但是喜欢的物品(即目标用户兴趣相似的用户有过的行为)进行推荐。

2. 基于物品的协同过滤算法(ItemCF)

通过分析用户喜欢的物品,我们发现如果两个物品被一拨人喜欢,则这两个物品相似。此时,我们就会将用户喜欢相似物品中某个大概率物品推荐给这群用户。

基于物品的协同过滤算法的具体实现思路如下:

(1)计算物品之间的相似度;

(2)根据物品的相似度和用户的历史行为进行推荐。

3. 基于模型的协同过滤算法(ModelCF)

基于模型的协同过滤算法也叫基于学习的方法,通过定义一个参数模型,我们可以描述用户和物品、用户和用户、物品和物品之间的关系,然后将已有的用户与物品评分矩阵(例如矩阵分解、隐语义模型 LFM 等)作为样本优化求解,最终得到模型参数。

基于特征的机器学习算法

协同过滤(CF)算法通过用户行为构建用户物品共现矩阵,然后通过 CF 算法预测结果实现个性化推荐。其实,除了利用用户行为特征之外,我们还可以利用用户、物品自身特征等辅助信息进行结果预测。

基于物品特征的推荐问题,我们一般通过回归模型进行实现。首先,回归模型会通过算法预测出一个介于 0~1 之间的连续值,这个值代表一种可能性,然后推荐系统将得到的可能性通过排序的方式推荐给用户,最终实现个性化推荐。基于特征的机器学习模型相比协同过滤模型而言,它不单单考虑了用户的行为特征,还加入了年龄、性别等用户特征和时间、地点等物品特征,从而大大提升了模型表达能力。

此类模型比如:LR,SVM,随机森林,GDBT,Random forest,Xgboost,Catboost等算法模型都可用于推荐算法,此外还可以利用复杂模型如GDBT,Xgboost等模型 自动进行特征筛选和组合,进而生成新的离散特征向量,然后我们将该特征向量当作逻辑回归(LR)模型的输入,最终产出预测结果。

此时,我们看到了端到端训练及隐向量技术等深度学习模型的影子,也就是说 GBDT+LR 开启了特征工程模型化的趋势。

深度学习推荐算法

深度学习在推荐算法中的应用与深度学习在图像处理、NLP中的应用是类似,主要是应用深度学习算法特征提取功能。具体应用形式有以下两种:

1、利用深度网络范式进行用户和物品的表征或者高阶交互特征提取(双塔模型),再将隐向量表征集成到推荐系统模型当中,这里集成方式又分为以下两种。

松耦合:信息呈单向流动,将隐向量表征作为推荐模型的输入。

紧耦合:将深度学习部分作为单独的组件接入模型,再加上其他传统或者深度模型组件,同时进行学习和预测。这种情况下,隐向量表征是跟随模型学习而变化的。

2、利用深度网络范式直接拟合效用函数,这种方式直接利用一个或多个深度网络范式,产出预测结果。

具体的应用框架简单介绍如下几个:

深度矩阵分解(DMF)模型

该模型的输入层为交互矩阵 Y,其行、列分别对应为对用户和对物品的打分,并采用 multi-hot 形式分别表征用户和物品

推荐系统算法(一文搞定推荐系统及算法)

Yi* 指的是交互矩阵 Y 中的第 i 行,表示用户 i 对所有物品的评分,即用户 i 的表征;

Y*j指的是交互矩阵 Y 中的第 j 列,表示所有用户对物品 j 的评分,即物品 j 的表征。

然后,我们将用户表征 Yi* 和物品表征 Y*j 分别送入 MLP 双塔结构,生成用户隐向量表征 Pi 和物品隐向量表征 qj;

最后,对二者使用余弦点积匹配分数。

Tips:实际上,DMF 模型是由 MF+MLP 双塔串联而成的一种模型,其中 MF 主要负责线性部分,MLP 主要负责非线性部分。它主要以学习用户和物品的高阶表征向量为目标。

神经网络协同过滤(NFC)模型

传统 MF 模型相当于把稀疏的用户和物品 ID 向量转化为了稠密的隐向量表征,模拟了浅层神经网络的作用。其中,p 代表用户的隐因子矩阵,q 代表物品的隐因子矩阵。通过这两个矩阵,我们就可以预测用户对物品的评分。

了解了传统的 MF 模型后,下面我们再来看看 NCF 模型,框架如下图所示:

推荐系统算法(一文搞定推荐系统及算法)

广深(Wide&Deep)模型

广深(Wide&Deep)模型最早由 Google 提出,自工业界诞生后,便为在范式组合方式基础上产生模型打开了一扇大门。因此,我们与其说广深(Wide&Deep)模型是一种模型,倒不如说是一套通用的范式框架。

通过名字我们就知道,Wide&Deep 模型是由 Wide 和 Deep 两大部分组成,它的框架图如下所示:

推荐系统算法(一文搞定推荐系统及算法)

Wide

属于广义线性部分,它对用户或者物品 ID 这类高频低阶特征使用少量参数即可学习,故记忆能力好;但是对没有见过的 ID 学习能力较差,故泛化能力差。这是因为特征从输入到输出比较通透,保留了大量的原始信息,因此模型捕捉的特征更加具体。

Deep

属于神经网络 MLP 部分,它主要用于学习样本中的长尾部分,因为它对出现较少或者没有出现过的特征组合都能够做出预测,所以需要的人工参与较少,且泛化能力强。

总结:Wide&Deep 模型由 LR+MLP 两部分并联组成,综合了传统机器学习和深度学习的长处。

Wide 部分根据历史行为数据推荐与用户已有行为直接相关的物品;

Deep 部分负责捕捉新的特征组合,从而提高推荐的多样性。

深度因子分解机(DeepFM)模型

深度因子分解机(Deep Factorization Machine,DeepFM)模型是从广深(Wide&Deep)框架中演化出来的一种模型。

因为 Wide&Deep 模型的广义线性部分,挖掘到的用户兴趣对交叉信息仍然需要人工特征工程来人为构建特征和特征间的组合,所以过程相当繁琐且需要依赖人工经验。使用 FM 模型替换掉了 LR 部分,从而形成了 FM&Deep 结构。

推荐系统算法(一文搞定推荐系统及算法)

与 Wide&Deep 模型异曲同工,DeepFM 模型分为 FM 部分和 Deep 部分。

FM 部分:它可以自动提取特征交叉信息,其中包含了加权求和的一阶信息和向量内积的二阶信息。相比 Wide&Deep 模型而言,它在低层特征的使用上更合理。

Deep 部分:DeepFM 模型与 Wide&Deep 模型的 Deep 部分本质上并无区别,然而,Wide&Deep 模型中的 Embedding 层是为 Deep 部分专门设计的,而 DeepFM 模型中的Embedding 层由 Deep 部分与 FM 部分共享输出。

算法演化趋势

同深度学习在计算机视觉以及NLP领域的算法演化方向一样,更深,更专注,同深度学习在计算机视觉方面的应用一样,基于现有的Embedding + MLP范式,进行一些网络结构的变化就得到了一些新的算法和模型框架,具体如下:

仅对 Embedding 部分改造:FNN 模型

借用 ResNet:Deep Crossing 模型

结合注意力机制:注意力因子分解机(AFM)模型

使用注意力机制:深度兴趣网络(DIN)模型

添加兴趣提取层与兴趣进化层:深度兴趣进化网络(DIEN)模型

引入会话概念:深度会话兴趣网络(DSIN)模型

  • 版权声明:
  • 本文内容由互联网用户自发贡献,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 295052769@qq.com 举报,一经查实,本站将立刻删除。