当前位置: 首页 > news >正文

CCF-BDCI大数据与计算智能大赛TOP4-京东生鲜

2023 CCF 大数据与计算智能大赛《线上线下全场景生鲜超市库存履约一体化决策》top4南山论剑

  • 摘要
  • 1 数据预处理
    • 1.1 数据整合
    • 1.2 数据划分
  • 2 特征工程
    • 2.1 静态特征
    • 2.2 动态特征
  • 3 方案设计
    • 3.1 数据构造
    • 3.2 模型训练
    • 3.3 模型融合
    • 3.4库存分配
    • 3.5 方案对比

摘要

在中国拥有万亿市场规模的生鲜商品,已成为全场景多业态零售商的引流明星。生鲜商品货架期短、易损耗、价格变化频繁,同时多业态销售又增加了新的不确定性。
全场景多业态生鲜超市订单有线上和线下两个来源,门店备货也采用前场(超市门店)+后场(门店仓库)的布局。门店日常经营中,每天经常面临两个重要决策:1)总备货量:根据商品销售历史和最新信息,预估商品未来销量,决定每日备货总量。2)前后场库存分配:根据线上线下订单分布来决策商品库存在前后场的分配。前后场库存分配不好会增加履约成本,降低履约效率。
该任务的难点主要体现在两个方面。1)多目标时序预测:有12家门店,各门店有1000种商品,结合起来就需要预测12000个目标。2)多步长时序预测:要预测8月31号后未来两周内每日的线上线下备货数量。
多目标方面,对于12000个目标将每个目标细分为一个具体的样本,基于历史数据构造特征,预测第i天的线上线下销量。多步长方面,分别将后14天的线上线下销量作为标签进行回归预测,尝试了滑动窗口、14个单步长预测、多步长预测等方案。为了保证训练数据的质量,需要按时间截取历史数据并进行缺失值填充。充分利用官方提供的5类数据集,结合实际业务提取商品类别、销售状况、售价、折扣和天气状况的组合特征。分别尝试xgb、lgbm、catboost等机器学习模型,lstm、多头注意力机制、transformer等深度学习模型。并按照不同的数据构造方法,不同的数据划分方法,构造数据集训练模型。结合不同的特征组合、模型类型和训练方案,尽可能实现模型融合的差异化。
关键词
电商零售、多目标时序预测、多步长时序预测

1 数据预处理

1.1 数据整合

整合商品类别、销售状况、售价、折扣和天气状况5类数据集。因为预测指标是销量,所以我们需要将销售状况作为主表,以门店id,商品id作为主键,拼接其他4张表。
1.主表的处理:因为需要将每个目标当作一个具体的样本,针对销售状况表需要以门店id商品id为行,时间为列将其展开,方便在时间维度上截取每个样本的销量数据。
2.商品类别和天气状况表:商品类别根据商品id,天气状况截取一段时间数据根据门店id,拼接在主表后面。
3.售价和折扣表:和销售状况表类似,以门店id商品id为行,时间为列展开,根据预测日期的时间节点动态的截取时间窗口内的数据拼接在主表后面。

1.2 数据划分

赛题需要预测9/1-9/14号的数据,可以将时间节点8/18后14天的数据作为训练集的标签,时间节点依次向前滑动一周,每滑动一次就会有12000个样本,滑动10次训练集的样本量就有120000个。预测线下线上销量,需要根据下单渠道将数据集分为线上线下单独预测。

在这里插入图片描述

图1:各月份销量数据商品种类
时间越早销量数据信息越少,为了尽可能的减少缺失数据,我们根据数据的缺失情况,截取了23/1/1到23/8/31的数据。

在这里插入图片描述

图2:数据预处理流程图

2 特征工程

2.1 静态特征

1.商品各级类别对商品销量,商品价格,商品折扣的平均值,最大最小值进行统计。
2.促销编号对商品销量,商品价格,商品折扣的平均值,最大最小值进行统计。
3.促销类型编号对商品销量,商品价格,商品折扣的平均值,最大最小值进行统计。
在这里插入图片描述

图3:静态特征提取

2.2 动态特征

1.截取预测时间段的天气类型、气温最大最小值、商品价格和商品销售和剩余库存状况数据。
2.截取预测时间段的天气类型、促销编号、商品类别拼接后的数据。
3.截取预测时间段的商品促销编号、促销类型编号、促销折扣率、促销条件阈值等折扣信息。
4.统计销售状况、售价、折扣在标签时间节点前的3、7、14、30、60、140天数据的平均值,最大最小值。
5.统计星期i的销售状况、售价、折扣在标签时间节点前的3、7、14、30、60、140天数据的平均值,最大最小值。
6.统计售价折扣、售价折扣*销量在标签时间节点前的3、7、14、30、60、140天数据的平均值,最大最小值。
在这里插入图片描述

图4:动态特征提取

3 方案设计

3.1 数据构造

1.构造门店商品数据集。以具体的门店商品构造样本,门店id商品id为行 ,每天的销量为列,根据时间节点滑窗构造更多的数据。

在这里插入图片描述

图5:数据构造
2.直接拼接商品销售表,以商品门店在每一天的数据构造样本,门店id商品id日期为行 当天销量为列,构造单条数据的数据集。

3.2 模型训练

按照构造的两种不同数据集,提取静态特征、动态特征,分成线上线下两个标签进行优化,模型训练可以是基于全部数据也可以基于门店或商品类别细分的数据,分别使用xgb、lgb、catboost进行回归预测。
在这里插入图片描述

图6:模型训练

3.3 模型融合

在这里插入图片描述

图7:模型融合
基于特征工程构造3类差异性大的特征组合,分别以单个门店商品作为样本和以门店商品每天的数据作为样本构造数据集,模型使用xgb、lgb、catboost三类机器学习模型,分别按门店划分,商品类别划分和所有数据训练模型。
在特征、数据构造、模型选择和模型训练这四个方面进行差异性构造,以便对三类预测结果进行加权融合。

3.4库存分配

在这里插入图片描述

图8:库存分配
1.销售状况表中会缺失100多个门店商品,导致缺失的商品无法通过上述方案预测。在其他4张表中并不会缺失这100多个门店商品,所以需要根据其他4张表构建特征,在销售状况表中抽取销量数据作为标签重新训练一个模型,用来预测.销售状况表中缺失100多个门店商品。
2.赛题在后场分配上做了限制:1000 种目标商品中当日该门店后场最多备货 200 种商品。需要对每个商品的后场预测销量进行降序排序取top200,其余的填充为0。
3.所有商品中,有些商品是按个数交易的,如:馒头、鸡腿、螃蟹,需要精确到个位数。有些商品是按斤两交易的,如:牛肉、西瓜、西红柿,需要精确到小数点后两位。要根据历史数据找出需要保留到小数点后两位的商品,再对这些商品的预测数据进行处理。

3.5 方案对比

方案 A榜成绩
数据拼接+lgb 173W
静态特征+lgb 195W
静态动态特征+lgb 214W
静态动态特征+xgb 221W
分门店训练xgb 228W
分商品类型训练xgb 226W
三种训练方案+xgb融合 236W
构造数据+三种训练方案+xgb融合 252W
特征组+构造数据+三种训练方案+xgb/lgb/cat融合 261W

在这里插入图片描述

表1:方案结果对比

致谢
感谢datafountain、CCF能够为我们提供这样一个优秀的平台,让我们学习磨练技术。感谢胡峰老师和王进老师的悉心指导。感谢本次大赛的所有工作人员。

参考
[1] CHEN,T.&C.Guestrin.Xgboost:A scalable tree boosting system[C].In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining,2016,15(6):785-794.
[2] Ke,Meng,Finley et al.Lightgbm:a highly efficient gradient boosting decision tree[C].31ST Annual Conference on Neural information Processing Systems,2017:3149-3157.
[3] 微软亚洲研究院《开源:LightGBM:三天内收获GitHub1000+星》[EB/OL].https://www.sohu.com/a/123480446_133098.
[4] Kaggle,M5ForecastingAccuracy,top1.https://www.kaggle.com/
competitions/m5-forecasting-accuracy/discussion/163684.
[5] Kaggle,Corporación Favorita Grocery Sales Forecasting,top1.
https://www.kaggle.com/c/favorita-grocery-sales-forecasting/
discussion/47582.


http://www.mrgr.cn/news/55533.html

相关文章:

  • 关于Qt中进行输出的方式及对比分析
  • PHP中的ReflectionClass常见用法
  • STM32嵌入式移植GmSSL库
  • Java全栈经典面试题剖析2】JavaSE面向对象1
  • 004-按照指定功能模块名称分组
  • Java入门知识点
  • 同济子豪兄--随机游走的艺术-图嵌入表示学习【斯坦福CS224W图机器学习】
  • 梦熊十三连测题解
  • 英语语法学习框架(考研)
  • STM32启动文件浅析
  • JavaScript 中的防抖和节流(简易版)
  • VSCode编译器改为中文
  • C语言中的内存函数
  • 没有网络限制!超简单本地部署 Llama3 的方法
  • MySQL-30.索引-介绍
  • Rat工具:vshell 4.9.3简单使用介绍
  • C++实现循环队列和链式队列操作(实验5--作业)
  • J1:ResNet-50算法实战与解析(鸟类识别)
  • webpack 老项目升级记录:node-sass 规定的 node v8 提升至支持 node v22
  • Selenium自动化测试全攻略:从入门到精通
  • Anchor DETR论文笔记
  • Telink 2.4G proprietary protocol 泰凌2.4G私有协议
  • Windows下安装并使用 NVM(Node Version Manager)
  • 材料研究与应用
  • 高级sql技巧
  • git配置以及如何删除git