淘宝如何拥抱短视频时代?视频推荐算法实战

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本文就目前推荐算法的巨大潜力空间下,先是分析了整个行业短视频业务和淘宝段视频业务现状。而后就视频推荐算法框架以及基于视频的召回和视频排序做了详细的讲解。最后说明了业务策略的几个要点。

1.jpg

1.前言

1.1 迅猛发展的短视频业务

短视频一般指长度在5分钟以内的视频内容。由于用户时间碎片化、移动互联网和智能手机的快速普及、制作门槛低等原因,短视频最近几年引起广泛关注。从2011年的萌芽,到2015年快手、美拍等异军突起,到2016年抖音、火山小视频等迅猛发展,短视频正在抢占越来越多的用户注意力和流量,重塑着用户的信息获取习惯。

截止目前,短视频月活用户已经达到了4亿左右,人均日观看时长超过了60min,覆盖用户类型广泛,粘性强,明显挤占了用户在社交、影音、游戏、新闻等应用上的花费的时间。
2.jpg
1.2 淘宝短视频现状

目前淘宝内的视频量已达2.6亿+。大量淘宝/天猫的商品头图展示从静态图片换成了短视频,全方位展示商品的使用方式和细节;大量买家秀采用了视频形式,给予用户更可靠更直观的购买参考;直播视频里的大主播,吸粉和带货能力惊人;达人视频制作精美、形式多样,给用户更愉悦的浏览体验。视频量和用户需求都急剧增大的现状,对视频推荐算法提出了更高的挑战。

本文主要简述近半年来,在哇哦视频和首页猜你喜欢视频这两个场景上,对视频推荐算法做的一些实践。
3.jpg
哇哦视频是针对时尚年轻、购买力中上的用户群的视频产品,涵盖了穿搭、美妆、美食、萌娃、萌宠、数码、健身等领域。投放内容池由数十万达人视频和数十万商品视频组成,全部经过质量筛选和人审,风格多样,制作精美,期望用户多逛多停留,进而引导下单。

猜你喜欢视频是云主题的重要组成部分,在猜你喜欢瀑布流中会根据用户偏好以一定频次投放视频。投放内容池主要是数百万商品视频,同样经过质量规则筛选,主要承担引导用户下单的功能。

在以上两个场景的瀑布流里,点击视频都会跳转到全屏承接页,在该页面可以完成浏览相关商品、进入达人页面、点赞、评论、转发、下滑继续浏览等动作。

1.3 视频推荐算法框架

视频推荐算法的大框架与商品推荐基本相似,都是由以下几部分组成:

  1. 召回,即根据用户近期行为,获取几千个左右的候选集。
  2. 排序,一般分初排和精排。初排即较粗略的排序模型,会对候选集进行初步打分,之后截断成为几百个。精排即复杂度较高的排序模型,可能是多个不同目标模型的融合,会对候选集进行较精细的打分,之后截断成为一百个左右。
  3. 业务策略,即基于用户体验的一些去重与打散策略。

本文将先介绍视频特征体系,然后按这个框架来分块介绍视频推荐,重点陈述视频推荐不同于商品推荐的部分。

2. 视频特征体系

我们构建的视频特征体系主要由id类特征、商品泛化特征、视频统计类特征、视频内容特征、标签特征等。

  1. id类特征,由视频id、作者id等组成。
  2. 商品泛化特征,主要来自于视频挂载的商品性质。例如,商品id、类目id、虚拟类目id、店铺id、品牌id、商品所属性别、商品所属购买力、商品标签等等。
  3. 视频统计类特征,即视频在不同场景、类目、作者等维度下,统计的播放率、平均播放时长、有效播放率等等指标。
  4. 视频内容特征,即关键帧图像特征、音频特征,可以对视频内容/风格进行更精细的刻画
  5. 视频标签特征,即基于多分类模型的、可扩展的网状型的标签体系结构,覆盖视频所属的体感类目与泛内容维度的相关标签,这些标签的组合就是对视频内容的浓缩描述。目前主要产出了服饰领域的标签体系,正在不断完善中。
    4.jpg

3. 基于视频的召回

3.1 RankI2V Recall

淘宝视频的特点是,绝大多数视频是挂靠有相关商品的。因此,视频推荐的最初版召回,就是直接利用商品推荐中的i2i召回,扩展为i2i2v召回,即:以用户最近点击/收藏/购买/加购的商品集作为trigger item set,找到与其相似的candidate item set,再根据视频挂靠商品的关系,找到candidate video set,优先召回热度较高的video。同理,也可以将c2i扩展为c2i2v,seller2i扩展为seller2i2v等等。这个版本的优点是可以充分利用已有框架和数据,快速上线。但缺点也很明显:同个商品可能挂靠许多视频,无法评估这些视频对于特定用户的价值;对商品感兴趣不代表对相关视频感兴趣,这其中有很大的gap;用户对视频的行为信息完全没有加以利用,比如观看时长、点赞、关注等,而这些信息才是最有价值的。

因此,我们实现了RankI2V召回方式,直接从商品来召回视频。主要思路是:以全屏承接页播放日志构造sample,以停留时长作为label,结合trigger item、video相关商品、video本身的特征,使用gbdt模型,直接对item到video的关系进行打分。

1)构造样本:

  • 在前述的i2i2v召回的基础上,可以从日志中获取每次用户观看视频时的trigger item、所观看video、以及观看时长
  • 清洗掉异常数据后,以时长很短的观看作为负样本(相当于没有看),时长较长的播放时长作为正样本,实际播放时长作为正样本权重
  • 重采样,保证对于同一个user和同一个trigger item,样本集中同时存在正样本和负样本

2)构造特征集,主要有三部分特征:

  • trigger item的特征,如类目、价格、热度、动态评分等自然属性,以及其在全站的不同时间切片内的曝光点击指标,所属卖家、类目等维度的曝光点击指标等等
  • video的特征,分别统计在全站/哇哦视频场景内的,按类目、发布者、不同时间维度的,曝光、点击、有效播放率、完播率、次均/人均播放时长等指标
  • item与video的相似关系,如是否属于同一类目、是否属于同一卖家,该item与视频相关item的相似分数等等

3)model:

  • 采用gbdt模型,pairwise loss来训练

在两个场景的线上实验中,RankI2V都显著优于初版中的基于商品的召回方式(i2i2v等)。实验数据如下:

在哇哦视频的瀑布流页上线,次均播放时长上涨接近10%,人均播放时长上涨超过5%,pctr上升超过5%,uctr上升显著,正向效果明显。

在全屏承接页上线,次均播放时长提高显著,人均播放时长提高显著,正向效果较明显(全屏页场景不关注ctr,只关注播放时长)

在猜你喜欢视频上线,ctr上涨接近10%,正向效果明显。
5.jpg

3.2 RankV2V Recall

以商品召回视频的优点在于,用户在商品上的行为丰富且多样,可以获取较好的trigger set。然而,对于视频而言更自然的方式是以视频来召回视频,毕竟用户在商品上的偏好,不一定与对视频的偏好一致。参考RankI2V的思路,我们也实现了RankV2V召回算法。

首先,为了获取trigger video和召回video的关系,先上线了一版基于全网视频播放日志、目标为有效观看时长的、以协同过滤计算的cf v2v召回模型。上线一段时间后,积累了足够的播放行为,以此开始训练rankv2v模型。主要思路是:以全屏承接页播放日志构造sample,以停留时长作为label,结合trigger video、召回video的特征,使用gbdt模型,对video到video的关系进行打分。
1)构造样本:

  • 在前述的cf v2v召回的基础上,可以从日志中获取每次用户观看视频时的trigger video、所观看video、以及观看时长
  • 清洗掉异常数据后,以时长很短的观看作为负样本(相当于没有看),时长较长的播放时长作为正样本,实际播放时长作为正样本权重
  • 重采样,保证对于同一个user和同一个trigger video,样本集中同时存在正样本和负样本

2)构造特征集,主要有三部分特征:

  • trigger video的特征,分别统计在全站/哇哦视频场景内的,按类目、发布者、不同时间维度的,曝光、点击、有效播放率、完播率、次均/人均播放时长等指标
  • 召回video的特征,与trigger video类似
  • trigger与召回video的相似关系,如是否属于同一类目、是否属于同一卖家等

3)model:

  • 采用gbdt模型,pairwise loss来训练

线上实验中,RankV2V召回结果虽然数量上比RankI2V少一些(原因是用户在视频上的行为远少于在商品上的行为,因此trigger set小得多),但指标上明显优于RankI2V。随着视频在全网的透出量增加,用户的视频行为进一步丰富,可以预期rankV2V的性能也会随之上升。

在猜你喜欢视频上线,ctr大涨接近15%。其中单看rankV2V的点击率,比基准桶总体高了接近50%,正向效果显著。

3.3 Realtime-based Interest

相对于商品推荐而言,实时性对于视频推荐更为重要。尤其是全屏承接页这样的场景,用户一次只沉浸在一个视频中,一旦连续下滑两三个视频都无法抓住用户兴趣,就极易使其流失。针对这种心理,我们在全屏承接页上引入了以下四种实时trigger:

  1. 在瀑布流中,用户通过点击某视频进入全屏页,该视频强烈地体现了用户此刻的浏览意图,将这个video加入trigger set。
  2. 在瀑布流中点击的视频,同时具有挂靠商品信息。该商品大概率也是用户此刻感兴趣的商品,将这个item加入trigger set。
  3. 在全屏页下滑浏览进入下一页时,用户对于上一页推荐的视频已经产生过了播放、点赞、评论、关注等行为,可以体现用户当前浏览兴趣,以及对下一页展现结果的期望。将用户有过正向行为的video加入trigger set。这是实时性相对最强的一种方式。
  4. 基于实时日志收集用户在全网的视频播放行为(延迟为几十秒到几分钟),将有过正向行为的video加入trigger set。

经实验,最终的召回优先级定为:四种Realtime-based Interest召回方式相等,同时大于其他召回方式。

在全屏承接页上线,次均观看时长上升超过10%,人均观看时长上升接近15%,正向效果显著。

在哇哦视频瀑布流上线,pctr上升明显,uctr持平,次均停留时长上升明显,人均停留时长上升明显,正向效果明显。

从实验效果来看,沉浸式的全屏页效果显著高于瀑布流页,因为瀑布流一次展现的数量较多,用户选择余地较大,而全屏页一次一个展示,对于时刻命中用户兴趣要求更高。同时,在4种实时召回方式中,上述第3种召回方式的指标优于其他,说明时效性越强的召回效率越好,与我们最初的假设是一致的。

6.jpg

4. 视频排序

4.1 粗排模型

经过多路召回,系统可以获取用户潜在感兴趣的视频集合。同时为了进一步提高召回的精准性,需要将多路召回的视频统一排序,以精简召回的视频集合。这一过程通过精简特征的模型在BE多路召回后进行。

视频粗排模型以ctr或停留时长为目标,进行模型训练和预测。模型为pointwise或pairewise的GBDT。

  • 以ctr为主要优化目标的GBDT模型,将用户对视频是否点击作为标签,pointwise方式训练。特征主要有上下文特征,用户类特征,视频属性类特征,视频的反馈统计特征等维度。其中视频反馈统计特征里,通过时间信息计算得到的点击率特征权重较高。
  • 以停留时长为目标的视频粗排模型,将停留时长离散后作为训练为目标,pairewise方式训练,特征中添加更多停留时长类的统计特征。

实验效果

  • 猜你喜欢视频接入ctr的GBDT模型替换ctr的LR模型,ctr提升超过10%
  • 猜你喜欢沉浸页接入停留时长的GBDT模型,PV播放时长提升接近30%,UV播放时长提升超过30%。
  • 哇哦视频全屏页接入停留时长的GBDT模型,次均播放时长提升接近10%,人均播放时长提升明显

4.2 精排模型

精排通过不同目标的模型对视频进行打分。精排相对粗排在特征上更加丰富完善,同时也将不同目标的同种模型,或同目标的不同模型组合,共同计算得分。

视频精排模型主要包含以ctr为目标的XFTRL与GBDT,以及以停留时长为目标的GBDT三种模型,最终得分综合了三种模型的预测。

  • ctr优化目标的XFTRL模型,特征主要包含上下文维度特征,用户维度,商品维度,视频维度的ID类和离散属性类特征,以及这几种维度的组合交叉特征。其中,用户ID、视频ID,用户最近x天喜欢的类目IDtop3与视频所对应商品的类目ID进行组合形成的特征,在模型中有较好的效果。
  • 以优化CTR为目标的GBDT模型,特征方面除了在粗排中已有的上下文特征,用户特征,视频属性特征,视频的反馈统计特征外,添加视频在全场景最近x天,分作者/类目的统计特征,同时对视频的反馈统计特征进行更多分天统计的特征补充。特征集中,场景内视频的ctr类权重较高,可见该模型偏向于推荐本场景内热度较高的视频。
  • 以优化停留时长为目标的GBDT模型,特征相较CTR模型增加了视频停留时长最近x天,分作者/类目的统计特征,label为离散化的停留时长。特征集中,本场景视频的播放热度、视频作者的平均播放热度在模型中权重较高。

实验效果

  • 猜你喜欢视频,ctr的XFTRL模型进行优化后,ctr提升明显。接入ranki2v后,提升接近10%,合计提升接近15%;
  • 猜你喜欢视频ctr的GBDT模型优化后,ctr提升明显;
  • 猜你喜欢视频接入停留时长的GBDT模型,停留时长增加超过10%
    7.jpg

5. 业务策略

推荐系统在算法对点击率与停留时长优化的同时,也需要保证良好的用户体验与流量可调控。

5.1 体验优化

为了达到良好的用户体验,视频推荐做了丰富的体验优化。同时加入集中度,相似性,以及视频发现性三个维度作为体验优化观测指标,其中集中性与相似性主要衡量页内体验,视频发现性衡量页间体验。

页内rematch:每次请求在页面内对虚拟类目,叶子类目,视频标签进行rematch,保证页面内不会连续出现同一虚拟类目/叶子类目/标签下的视频。接入页面rematch后,pv略降,点击率提升,视频集中度和相似性提升明显,用户的观感多样化得到明显提升。

页间抑制:采集视频实时曝光与点击,将最近x天内未点击的虚拟类目/叶子类目/标签适当过滤。接入页间抑制后,pv与ctr基本持平,曝光发现性提升,同类视频多天曝光现象减少。

实时黑名单过滤:针对舆情反馈与自体验较差的视频,作者,标题加入黑名单,在线上实时过滤。接入后体验提升,相关舆情较少。

购买过滤:将用户已购商品同类目下的视频过滤。接入购买过滤后pv与ctr略跌,用户体验多样化得到进一步提升。

曝光过滤:由于真实曝光收集可能出现几分钟的延时,利用实时数据库记录了伪曝光日志,同时使用真实曝光和伪曝光共同对视频过滤。接入后ctr略跌,连续的重复曝光现象明显消除。

6. 结语

相对于商品推荐而言,视频推荐算法的发展空间还很大,比如目前尝试中的multi-tag classification,利用图像、音频特征的multimodal video embedding以及RealTime Exploration Interest的模型化。欢迎有兴趣的同学与我们多多交流、多加指正。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
21天前
|
存储 缓存 算法
前端算法:优化与实战技巧的深度探索
【10月更文挑战第21天】前端算法:优化与实战技巧的深度探索
18 1
|
2月前
|
大数据 UED 开发者
实战演练:利用Python的Trie树优化搜索算法,性能飙升不是梦!
在数据密集型应用中,高效搜索算法至关重要。Trie树(前缀树/字典树)通过优化字符串处理和搜索效率成为理想选择。本文通过Python实战演示Trie树构建与应用,显著提升搜索性能。Trie树利用公共前缀减少查询时间,支持快速插入、删除和搜索。以下为简单示例代码,展示如何构建及使用Trie树进行搜索与前缀匹配,适用于自动补全、拼写检查等场景,助力提升应用性能与用户体验。
54 2
|
2月前
|
算法 搜索推荐 开发者
别再让复杂度拖你后腿!Python 算法设计与分析实战,教你如何精准评估与优化!
在 Python 编程中,算法的性能至关重要。本文将带您深入了解算法复杂度的概念,包括时间复杂度和空间复杂度。通过具体的例子,如冒泡排序算法 (`O(n^2)` 时间复杂度,`O(1)` 空间复杂度),我们将展示如何评估算法的性能。同时,我们还会介绍如何优化算法,例如使用 Python 的内置函数 `max` 来提高查找最大值的效率,或利用哈希表将查找时间从 `O(n)` 降至 `O(1)`。此外,还将介绍使用 `timeit` 模块等工具来评估算法性能的方法。通过不断实践,您将能更高效地优化 Python 程序。
54 4
|
3月前
|
算法 安全 数据安全/隐私保护
Android经典实战之常见的移动端加密算法和用kotlin进行AES-256加密和解密
本文介绍了移动端开发中常用的数据加密算法,包括对称加密(如 AES 和 DES)、非对称加密(如 RSA)、散列算法(如 SHA-256 和 MD5)及消息认证码(如 HMAC)。重点讲解了如何使用 Kotlin 实现 AES-256 的加密和解密,并提供了详细的代码示例。通过生成密钥、加密和解密数据等步骤,展示了如何在 Kotlin 项目中实现数据的安全加密。
126 1
|
3月前
|
机器学习/深度学习 存储 算法
强化学习实战:基于 PyTorch 的环境搭建与算法实现
【8月更文第29天】强化学习是机器学习的一个重要分支,它让智能体通过与环境交互来学习策略,以最大化长期奖励。本文将介绍如何使用PyTorch实现两种经典的强化学习算法——Deep Q-Network (DQN) 和 Actor-Critic Algorithm with Asynchronous Advantage (A3C)。我们将从环境搭建开始,逐步实现算法的核心部分,并给出完整的代码示例。
247 1
|
3月前
|
算法 安全 数据安全/隐私保护
Android经典实战之常见的移动端加密算法和用kotlin进行AES-256加密和解密
本文介绍了移动端开发中常用的数据加密算法,包括对称加密(如 AES 和 DES)、非对称加密(如 RSA)、散列算法(如 SHA-256 和 MD5)及消息认证码(如 HMAC)。重点展示了如何使用 Kotlin 实现 AES-256 的加密和解密,提供了详细的代码示例。
74 2
|
3月前
|
机器学习/深度学习 算法 数据挖掘
【白话机器学习】算法理论+实战之决策树
【白话机器学习】算法理论+实战之决策树
|
3月前
|
消息中间件 存储 算法
这些年背过的面试题——实战算法篇
本文是技术人面试系列实战算法篇,面试中关于实战算法都需要了解哪些内容?一文带你详细了解,欢迎收藏!
|
3月前
|
存储 NoSQL 算法
实战算法篇:设计短域名系统,将长URL转化成短的URL.
小米介绍了一种实用的短域名系统设计,用于将冗长的URL转化为简短链接。短链接不仅节省空间,便于分享,还能支持数据分析。系统通过唯一编号结合62进制转换生成短标识,并利用如Redis这样的数据库存储长链接与短标识的映射关系。最后,通过302重定向实现用户访问时的长链接恢复。这一方案适用于多种场景,有效提升用户体验与数据追踪能力。
92 9
|
3月前
|
算法 搜索推荐 Java
算法实战:手写归并排序,让复杂排序变简单!
归并排序是一种基于“分治法”的经典算法,通过递归分割和合并数组,实现O(n log n)的高效排序。本文将通过Java手写代码,详细讲解归并排序的原理及实现,帮助你快速掌握这一实用算法。
41 0