在当今信息化高速倒退的时代,举荐零碎是一个热门的话题和技术畛域,一些云厂商也提供了举荐零碎的 SaaS 服务比方亚马逊云科技的 Amazon Personalize 来解决客户从无到有迅速构建举荐零碎的痛点和难点。在咱们的日常生活中,举荐零碎随处可见,比方咱们常常应用的亚马逊电商购物,爱奇艺视频,美团外卖,抖音短视频以及今日头条新闻,主播直播平台等等。我依据这几年参加的举荐零碎和计算广告我的项目总结了一些实践经验并以举荐零碎系列文章的模式分享给大家,心愿大家看后对举荐零碎有更全新更粗浅的了解。这个系列文章包含:举荐零碎概览,举荐零碎中的召回阶段深入探讨,排序工作的样本工程,排序模型调优实际。更多细节以及更具体的内容能够参考我的 github repo。
亚马逊云科技开发者社区为开发者们提供寰球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、流动与比赛等。帮忙中国开发者对接世界最前沿技术,观点,和我的项目,并将中国优良开发者或技术举荐给寰球云社区。如果你还没有关注 / 珍藏,看到这里请肯定不要匆匆划过,点这里让它成为你的技术宝库! |
咱们先介绍举荐零碎概览,大抵内容如下:
- 举荐零碎简介
- 举荐零碎中常见概念
- 举荐零碎中罕用的评估指标
- 首页举荐场景的通用召回策略
- 详情页举荐场景的召回策略
- 排序阶段罕用的排序模型
- 重排阶段
- 举荐零碎的冷启动问题
- 举荐零碎架构
举荐零碎简介
举荐零碎能够分为狭义举荐零碎和广义举荐零碎(咱们在今后的探讨只是关注广义的举荐零碎),参考下表:
举荐零碎就是依据用户的历史行为、社交关系、趣味点、所处上下文环境等信息去判断用户以后须要或感兴趣的物品 / 服务的一类利用。举荐零碎自身是一种信息过滤的办法,与搜寻和类目导航组成三大支流的信息过滤办法。咱们能够从不同的角度看举荐零碎的用途:对用户而言,举荐零碎能帮忙用户找到喜爱的物品 / 服务,帮忙进行决策;对服务提供方而言,举荐零碎能够给用户提供个性化的服务,进步用户信任度和粘性,减少营收。据说,Netflix 有 2 /3 被观看的电影来自举荐零碎,Google 新闻有 38% 的点击量来自举荐零碎;Amazon 电商有 35% 的销量来自举荐零碎的举荐。
对于很多人(包含已经的我)常犯的一个观点谬误是,举荐零碎的工程实现与计算广告的工程实现是相似的,其实两者的实现差异很大,见下表:
举荐零碎中常见概念
举荐零碎常见的场景:首页举荐(更强调以用户为核心)和详情页举荐(更强调以物品为核心)。
个性化举荐与非个性化举荐: 个性化举荐简直是以后支流的,是针对每个用户做不同的举荐即千人千面。首页举荐都会思考个性化,详情页举荐也越来越思考个性化了。非个性化举荐的常见办法有:整个大盘历史排行榜举荐(比方 1 年内的,1 个月内的,1 个星期内的);每个类目历史排行榜举荐(比方 1 年内的,1 个月内的,1 个星期内的);周期性与节日无关的举荐(比方国庆黄金周和圣诞假期的物品举荐);突发事件相干的举荐(比方与突发传染疾病相关的物品举荐);最新公布的物品的举荐(比方 1 周内)。
举荐零碎的产品状态:物品即 item 的曝光模式(比方高低翻页,左右翻页以及他们的混合办法);曝光分区的编排(就一种举荐办法,比方个性化 TOP- N 举荐,能够思考把其余办法作为召回策略纳入个性化 TOP- N 举荐的召回阶段;多种举荐办法,Netflix 的首页举荐每一行对应一个举荐办法(它的每一行都能够左右翻页来浏览电影 item),这个也叫分区混合举荐。比方一行是独家播放举荐,一行是热门举荐,一行是新品举荐,一行是个性化 TOP- N 举荐)。为了行文不便,咱们对前面的探讨做个假如:只用个性化举荐办法,其余办法都作为个性化举荐的召回策略。
召回阶段,排序阶段和重排阶段:他们是个性化 Top- N 举荐整个流程的三个细分阶段。不同的场景下(比方是首页举荐还是详情页举荐),针对不同品种的用户(即是否是长尾和冷启动用户)并不是三个阶段都须要,具体探讨咱们会在这个系列文章的另一篇《举荐零碎中的召回阶段深入探讨》中波及。重排阶段有很多叫法,比方模型后处理阶段或者业务经营干涉阶段。
摸索与利用:摸索指的是想开掘用户的一些从行为上无奈反馈的一些喜好相干的物品;利用指的是举荐零碎依据用户历史行为学习到的常识并预测出概率高的用户可能感兴趣的物品。对于冷启动的物品和长尾的物品,在重排阶段做摸索是一种常见的办法。实际中,常常会有一些固定的曝光地位专门留给冷启动的物品和长尾的物品。
离线举荐与线上举荐:所谓的离线举荐,指的是举荐的后果列表是离线的时候就预计算好并存储在某个 memory-based 的 NoSQL(比方 Amazon ElastiCache for Redis)中,当用户申请来的时候间接从 NoSQL 中取出;所谓的线上举荐,指的是当用户申请来的时候零碎依据规定,策略或者模型的组合来长期生成举荐列表。
离线召回与线上实时召回:所谓的离线召回,指的是离线的时候提前把须要召回的 item 候选汇合预计算好并存储在某个 memory-based 的 NoSQL 中;所谓的线上实时召回,指的是当用户申请来的时候,召回服务长期依据某种逻辑(比方走模型失去一个实时的用户趣味向量,而后用这个用户趣味向量去向量检索库找到 topK 类似的 item 向量)来失去的召回候选集。
电商付费类举荐零碎与新闻 / 电影 / 视频等内容消费类举荐零碎的召回策略是有区别的。对于首页举荐的场景,他们的召回策略或者举荐办法可能区别不大。对于详情页举荐的场景,他们的召回策略有很大区别,新闻 / 电影 / 视频等内容消费类举荐零碎,可能把基于物品示意向量类似度的举荐办法失去的列表放在更无利的曝光地位或者给予基于物品示意向量类似度的召回策略最高优先级会更好(因为对于内容消费类的场景,用户更偏好的是物品内容自身的类似);而对于电商付费类举荐零碎来说,可能须要比内容消费类举荐零碎更多的举荐办法或者召回策略,比方基于物品的关联举荐办法或者召回策略可能在电商详情页举荐中就是必须有的,然而在内容消费类举荐零碎中就是可选项,比方“常常一起购买的商品”的关联举荐,和 / 或者“浏览此物品的用户也同时浏览”的关联举荐(因为在这个场景下,以后用户除了关注详情页物品,接下来可能还感兴趣与该物品常常一起呈现的其余物品)。
电商付费类举荐零碎,可能还会有购物车页面举荐以及付费实现页面举荐这样的场景。对于这样的场景,可能把用关联举荐办法失去的列表放在更无利的曝光地位或者给予关联举荐召回策略最高优先级会更好,而基于物品 item 示意向量类似度的召回策略或者举荐办法可能在这个场景下就不太适合了,也就是说在以后购买用意很确定的状况下,用户更偏好的是物品之间的共现,因为用户很可能并不想马上再买一个物品内容很类似的物品。
举荐零碎中罕用的评估指标
评估指标次要分两种: 线上业务评估指标和离线评估指标。一般来讲, 线上业务评估指标更重要(常常须要多个指标一起看),它包含转化类指标(比方转化率,点击率, GMV 成交总额等等)和内容生产满意度指标(比方留存率,停留时长,观看时长等等)
离线评估指标中,最罕用的指标是 AUC 以及 GAUC,尤其是 AUC。AUC 细分为 AUC-ROC 和 AUC-PR,AUC-ROC 可能更罕用。AUC-ROC 是指随机给定一个正样本和一个负样本,分类器输入该正样本为正的那个概率值比分类器输入该负样本为正的那个概率值要大的可能性。GAUC (Group AUC)是计算每个用户的 AUC,而后加权均匀,最初失去 Group AUC,理论解决时权重个别能够设为每个用户 view 或 click 的次数,而且须要过滤掉单个用户全是正样本或负样本的状况,具体公式参考如下:
离线的时候,AUC 和 GAUC 两个指标最好都关注。实际中,不要太刻意追求离线验证集的很高的 AUC,太高的验证集的 AUC 可能示意模型过拟合到这个验证集了,线上成果可能会很差。个别离线的 AUC 可能在 0.7~0.85 之间就能够上线。
首页举荐场景的通用召回策略
基于热度 / 风行度 / 排行榜的召回策略
能够从两个维度来组合:统计周期和物品 item 的顶级类目。比方统计一段时间内同类目标所有 Item 的评估次数以及该 Item 的均匀评分,依据评分来进行排序,因为不同 Item 的评估次数可能差异很大,间接基于均匀评分来排序成果不好。为了偏心起见,采纳加权的评分更正当,能够参考如下的公式:
v 是某 Item 参加评分的用户的个数,m 是筛选的评分用户个数阈值,即如果某个 item 评分的用户个数低于阈值则该 item 将被疏忽(比方采纳评分用户个数的 20% 分位数来决定该阈值),R 是该 item 的评分均分,C 是所有 item 的平均分。
基于物品画像的召回策略
所谓的物品画像指的是对物品自身的某一方面的刻画。比方物品的品牌,物品的价格,物品所属的类目等这些都称为物品的画像,这些画像有显著的物理含意,咱们把它们称作显式画像;如果通过某个模型把物品 item id 的“黑常识”学习到,这个黑常识咱们称为 embedding,这个 embedding 是不可解释的,咱们把它称作隐式画像。从显式画像和隐式画像角度来看,基于物品画像的召回策略自然而然分为:基于物品内容的召回和基于物品的整体 embedding 的召回。
在首页举荐场景中的基于物品画像的召回是基于以后用户的浓密行为(浓密行为的意思就是用户对很多物品而不只是 3,4 个物品都有过行为)来做的,这个与前面将要介绍的详情页举荐场景中常见的基于物品 item 示意向量类似度的召回不必思考以后用户的浓密行为有很大区别。对于基于物品内容的召回过程,物品 item 的结构化示意和非结构化示意不要间接拼接并用来计算向量间的类似度,因为它们不是来自同一个空间的表白。如果要计算示意向量的类似度的话,最好作为 item 的两个不同的示意并作为两路不同的召回策略;如果是基于监督模型来对用户爱好进行分类建模,结构化示意和非结构化示意能够一起作为特色建模到模型中。
基于协同过滤的召回策略
这个办法是仅仅基于用户行为数据设计的,即基于 User-Item 矩阵或者由 user 和 item 形成的图,不包含任何的其余特色。实质上是矩阵补全的思路,也正是因为基于矩阵的解决,只有用户或者 Item 有变动,甚至 action 有变动,可能须要从新计算或者从新训练(业界以后有一些办法做增量协同过滤或者近实时协同过滤)。基于协同过滤的召回策略,细分为如下三种形式:基于用户的协同过滤 /UserCF;基于物品的协同过滤 /ItemCF;基于模型的协同过滤。
- 基于用户 (user-based) 的协同过滤,核心思想是首先依据类似度计算出指标用户的街坊汇合,而后用街坊用户评分 / 交互的加权组合来为指标用户作举荐。通常分为三步:首先应用所有用户的 item 评分 / 交互矩阵来计算指标用户与其余用户之间的类似度(利用 Pearson 相关系数、余弦类似度等办法);而后抉择与指标用户类似度最高的 K 个用户;最初通过对街坊用户的评分 / 交互的加权求和来预测指标用户对每个他本人没有评过分 / 交互的 Item 的评分 / 感兴趣水平。这里的加权指的是用用户之间的类似度作为评分 / 交互的权重,如下图公式中的 sim(u,ui)。
下面公式中的 U 示意的是指标用户 u 的街坊用户汇合(即 topK 类似的用户汇合),s 示意的是用户 - 物品交互矩阵中呈现过的 item 并且被街坊用户交互过且没被指标用户交互过的 item。score(ui,s)是用户 ui 对物品 s 的爱好度,对于隐式反馈为 1(只有不是用户间接评分的操作行为都算隐式反馈,包含浏览、点击、播放、珍藏、评论、点赞、转发等等),而对于非隐式反馈,该值为用户对物品的评分。
UserCF 的次要毛病是随着网站的用户数目越来越大,其运算的工夫复杂度和空间复杂度随着用户的增长而爆炸性增长。新闻 / 资讯 / 常识类网站个别会应用 user-based 的 CF 来召回,因为这些类网站的文章更新太快太多,可能不适宜用 item-based 的 CF。
- 基于物品 (item-based) 的协同过滤,外围是基于 Item-Item 共现矩阵通过某种类似度度量来计算两个 Item 的类似度,区别于基于内容的举荐办法,这里不须要对 Item 的特色自身建模,齐全是基于用户对 Item 的行为历史数据。办法次要分三步:首先须要结构 item-item 共现矩阵,遍历训练数据,计算出喜爱两两物品的用户数,填入矩阵中。而后计算物品之间的类似度,须要惩办热门物品以及惩办沉闷用户,公式如下:
依据物品的类似度和用户的历史行为给用户生成举荐列表:
上式中的 S 示意的是训练集中呈现的物品汇合;i 是用户 u 产生过行为且呈现在训练集中的物品;
指的是指标用户 u 对物品 i 的评分(显式反馈就是用户的具体评分,隐式反馈的话这个值就是 1)。
ItemCF 它可能是目前业界利用最多的一种召回策略。比方 Amazon 电商,Netflix 在线视频等网站,他们的首页举荐中常常会应用 ItemCF 作为其中一路召回。
- 基于模型 (model-based) 的协同过滤,区别于下面两种基于邻域的办法,基于模型的 CF 应用传统机器学习进行建模。比方 SVD 及其变体,图模型比方 SimRank 等。SVD 及其变体是基于 user-item 矩阵来进行矩阵合成的,它们把 User-Item 评分矩阵合成为两个低秩矩阵的乘积,这两个低秩矩阵别离为 User 和 Item 的隐向量汇合,通过 User 和 Item 隐向量的点积来预测用户对未见过的物品的趣味,从这个角度来说,矩阵合成也是生成 embedding 示意的一种办法。
基于用户画像的召回策略
简略讲,用户画像就是为用户打标签 tag。打标签的重要目标之一是为了让人可能了解并且不便计算机解决。基于用户画像的召回是个性化举荐中的精华,因为个性化就是通过用户画像来体现的。用户画像包含如下的三大类:
用户画像的大抵实现思路参考如下:
总结
举荐零碎概览的第一讲到此结束。本文首先介绍了举荐零碎的常见概念和罕用的评估指标,接着具体介绍了首页举荐场景的四种通用召回策略即基于热度 / 风行度 / 排行榜的召回策略,基于物品画像的召回策略,基于协同过滤的召回策略和基于用户画像的召回策略。置信当初大家对举荐零碎有了更深刻理解,接下来第二讲咱们会持续介绍举荐零碎概览的其余内容,感激大家的浏览。
梁宇辉
亚马逊云科技机器学习产品技术专家,负责基于亚马逊云科技的机器学习计划的征询与设计,专一于机器学习的推广与利用,深度参加了很多实在客户的机器学习我的项目的构建以及优化。对于深度学习模型分布式训练,举荐零碎和计算广告等畛域具备丰盛教训。
文章起源:https://dev.amazoncloud.cn/column/article/630b3545269604139cb…