网易严选时序预测算法实践
导读: 时序预测算法在电商场景中有着大量的应用场景,基于严选的实际业务需求,我们开发沉淀了一套时序预测算法系统,实现了“数据-模型-服务”的完整链路,并落地于网易严选的补货、调拨、投放、搜索、推荐等多个业务场景。
1 背景
我们把不同时间收到的,描述一个或多种特征随时间发生变化的数据称为时间序列数据,例如商品的每天的销量,股价每天的涨跌等等。对于这类数据,我们往往会希望通过算法去预测其未来的走势,这类算法统称为时序预测算法。
时序预测算法在电商场景中有着大量的应用场景,例如我们需要预测商品未来的销量,来决定补多少货;需要预测APP未来的流量,来决定具体的搜推策略等等。
基于上述需求背景,我们开发沉淀了一套时序预测算法系统,实现了“数据-模型-服务 ”的完整链路,并落地于网易严选的补货、调拨、投放、搜索、推荐等多个业务场景。
2 严选应用
时序预测算法再严选主要有以下应用场景:
2.1 商品销量预测
- 支持严选10万多SKU预测未来360天销量,准确率业内领先;
- 落地于采购补货、营销策略等多种场景。
供应链采购补货系统
2.2 仓间商品调拨量预测
- 支持按省份、按仓库的预测;
- 实现全国仓库的库存均衡,商品就近发货。
仓间调拨业务
2.3 仓库单量预测
- 支持严选2000多仓库未来60天的各仓库日维度单量预测,包含新仓的冷启动预测,准确率业内领先;
- 支撑业务侧进行仓库产能评估和安排、物流车辆资源储备和调度等决策。
2.4 广告流量预测
- 严选自建DSP广告投放平台,平台接入流量每天百亿级,对接上千家媒体,广告位十万级;
- 实现了小时级的大规模预测,预测每个广告位在未来两天每小时的流量,准确率业内领先。
DSP后台系统
2.5 App流量预测
- 预测严选APP内7大流量入口包括搜索页、推荐页、类目页、商详页、个人页等关键流量入口的流量。
(相关技术已发表专利7篇)
3 时序预测算法实践
要让时序预测的算法在严选场景中更好的落地,产生业务价值,主要需要解决以下几个问题:
- 特征数据的构建、收集、落地;
- 算法模型的设计、实现;
- 算法服务的整合、开发。
围绕上述问题,我们开发了一套完整的算法服务系统,一方面对外提供统一的预测服务接口,助力算法落地应用;另一方面给算法开发提供了标准化的范式和便利的工具,提升了迭代开发效率。
3.1 整体架构
算法系统的整体架构如下图所示:
预测系统整体架构
3.2 数据特征
时序预测算法的基础是大量的数据,特别是历史时序数据。在网易严选,一方面围绕着用户对严选商品的浏览、购买等各种行为,每天可以产生海量的用户行为数据;另一方面严选自身的经营运作也沉淀了大量的商品数据以及业务数据。这些在严选产生的数据可以通过数仓、后端的基建方便的收集到。此外,我们还收集了许多外部数据,与严选数据汇总到一起,主要包括:
-
用户数据
- 用户属性:性别、年龄、地区、手机型号、消费水平、社会身份、类目偏好、社交关系……
- 用户行为:浏览、点击、加购、购买、评论、分享……
-
商品数据
- 商品特性:类目、迭代关系、相似性、价格、毛利、文案……
- 商品销售:销量、折扣、促销、好评、复购、退货、地域、履约……
-
业务数据
- 后端仓配:选址、容量、人力、配送……
- 前端营销:预算、计划、竞争关系、渠道属性、经营模式、市场计划……
-
外部数据
- 行业相关:节假日、自然气候、原材料……
- 流量媒体:属性、类型、规模……
通过从严选内部及外部收集了上述数据,我们进行了初步的清洗以及特征抽取,构建了预测算法的基础数据特征库。并且,基于预测算法的实际取数特点,抽象出了一套专用的数据模型用于特征数据的结构化,并最终基于ES集群和Redis集群,实现了数据的存储落地。
3.3 算法模型
在严选的实践中,用到了很多不同的时序预测算法模型。我们基于具体的应用场景,会使用不同的一种或多种具体模型。总的来说,这些算法模型可以分为以下三种类型:
3.3.1 经典统计学时序模型
这类模型具有悠久的历史,是时序预测领域最经典、最常见的一类模型,普遍应用于传统零售、制造业。这类模型往往基于一定的先验假设,通过相对简洁、直观的计算公式给出预测结果。
- 优点:预测结果具有较好的可解释性,计算效率高。
- 缺点:算法本身处理复杂场景能力有限,需要额外的预处理、后处理环节,通过一些策略规则对预测数据进行补充优化,需要引入大量的专家经验。
- 应用模型:Linear-Regression、ARIMA、Holt-Winters、Prophet……
Prophet模型对历史时序数据的分解
3.3.2 传统机器学习模型
这类模型随着机器学习算法的发展而逐步运用于大型企业的复杂预测场景当中。这类模型算法通过“特征-样本点”的形式对预测问题进行建模,通过在大量数据上进行训练,模型可以学习到繁杂历史特征之间的复杂关系,找出其中规律并将其推广到未来,以实现时序数的预测。传统机器学习模型也是目前电商行业使用最广泛的一种算法模型。
-
优点:可以处理复杂的业务场景,较为方便的考虑时序或非时序的各种特征数据,目前在大部分实际应用中有更高的预测准确率。
使用传统机器学习模型预测结果包含了更多细节
-
缺点:预测结果的可解释性较差,同样需要一定的专家经验来进行特征工程,对训练用的历史数据有一定要求,数据量(数量&质量)不够时很难学到有效的预测模型
-
应用模型:XGBoost、LightGBM……
对商品销量预测问题样本点建模
3.3.3 深度学习模型
近几年来,深度学习算法在各个领域大放异彩。我们在严选的时序预测场景中同样也开始引入了深度学习算法。这类模型是在传统机器学习模型基础上演变而来,具有更加复杂的模型结构。
- 优点:可以处理更加复杂的情况,对人工经验、特征工程的依赖更少,具有较高的自由度,可以端到端的解决各种预测问题。
基于深度模型实现时间序列的概率分布预测
- 缺点:预测结果的可解释性最差,对历史数据的要求最高,并且训练过程计算量最大,效率较低。
- 应用模型:DeepTCN、MASS、DeepAR、LSTNet、TFT、Informer……
基于Seq2Seq思想,包含多模态Attention机制的的MASS模型结构
需要特别说明的是,我们在长期的时序预测实践中发现,预测效果的好坏并不会随着模型复杂度的上升而变好。特别是深度学习模型,在NLP、CV领域带来了革命性效果提升的同时,在时序预测应用中却并没有体现出显著优势。近期学术界的一些研究也提出并验证了这一观点。在实际应用中,目前取得最好预测效果的依然是诸如XGBoost等传统机器学习模型。此外,对于严选的大部分落地场景,算法预测的可解释性几乎和准确性同等重要,因此,具体预测模型一定是结合业务需求选择最适合的,不能盲目追求“高大上”的算法。
3.4 算法服务
由于Python对各类算法模型的友好性以及数据处理的易用性,因此我们基于Tornado框架开发了预测算法的服务框架。为各种不同的算法模型定义了统一的输入输出接口标准,不同的算法模型可以以插件的形式灵活接入服务,大大提升了开发效率,保障算法模型的敏捷迭代上线。
与此同时,定义了预测任务的标准范式,支持了预测任务的自动拆解,进而实现了大型预测任务的分布式计算。例如当执行一次全量商品的销量预测任务时,会自动按SKU将预测拆分成多个子任务,分发到多个服务实例上并行的执行预测计算,大大提升了预测服务性能。
算法服务框架
此外,通过一系列的工程优化,这套服务框架还支持了算法参数的配置化与热更新、算法热插拔、横向可拓展等特性,并且以Tornado为基础,抽象封装出了一套更适合线上算法服务的Python服务SDK——Typhoon,并开源发布。
Typhoon SDK
4 后记
在大部分用到时序预测的应用场景中,提升预测的准确率似乎是解决业务痛点的最佳手段。例如在供应链补货场景中,如果能把未来的销量预测的十分准确,那么所有滞销、缺货的问题一下子都能迎刃而解。然而,预测的准确率并不能无限制的提升,几乎所有的预测场景,都会在几轮迭代后快速的到达瓶颈。本质上来看,存在两方面原因:
-
未来与历史的差异性
所有的预测算法都是基于“历史与未来的规律一致”这一假设前提才得以成立的。然而在实际场景中,规律本身也是在不断变化的,未来发生的事情并不一定能在历史上找到参考。例如当下流行的带货直播,这一形式在早几年的数据中并没有可供参考的样本,同时也一定程度的改变了当下用户的消费习惯,这对于商品销量预测带来了很大的挑战。
-
未知事件影响
实际业务场景中产生的时序数据,都是在各种“事件”的综合影响下产生的。时间时序预测算法可以预测时序数据的走势、时序数据在不同“事件”下的变化表现,却无法预测“事件”本身的发生。大到疫情的发生,小到某次促销活动,这些“事件”本身并不具备可预测性,却对数据影响巨大。
综上所述,对于各种时序预测场景来说,需要理性看待预测算法的价值和边界,不能沉迷于算法的迭代优化乃至准确率的提升,应当更多从全盘业务的角度,用更全面的手段来解决实际问题。
以采购补货为例,基于概率分布预测,在相同准确率下对成本的TRADE OFF
本文由作者授权严选技术团队发布