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 方案对比

链接: CCFBDCI-线上线下全场景生鲜超市库存履约一体化决策

摘要

在中国拥有万亿市场规模的生鲜商品,已成为全场景多业态零售商的引流明星。生鲜商品货架期短、易损耗、价格变化频繁,同时多业态销售又增加了新的不确定性。
全场景多业态生鲜超市订单有线上和线下两个来源,门店备货也采用前场(超市门店)+后场(门店仓库)的布局。门店日常经营中,每天经常面临两个重要决策: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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/897321.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

对BSV区块链下一代节点Teranode的答疑解惑(上篇)

​​发表时间:2024年8月7日 2024年初BSV区块链研发团队揭晓了即将到来的Teranode更新的突破性特性,这些特性将显著提升网络的效率和处理速度,使BSV区块链能够达到百万级TPS。 Teranode的项目主管Siggi Oskarsson强调:“当你阅读这…

uniapp项目结构基本了解

基本结构的解释 App.vue:应用的根组件,定义全局布局和逻辑。pages/:存放各个页面的 .vue 文件,定义应用的具体页面和功能模块。main.js:应用入口文件,初始化应用,挂载 App.vue。manifest.json&…

[Linux进程概念]命令行参数|环境变量

目录 一、命令行参数 1.什么是命令行参数 2.为什么要有命令行参数 (1)书写的代码段 (2)实际的代码段 3.Linux中的命令行参数 二、环境变量 1.什么是环境变量? 2.获取环境变量 (1)指令…

基于Multisim电子配料秤电路设计(含仿真和报告)

【全套资料.zip】电子配料秤电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 电子配料秤仿真功能: 准确测量物体重量,精确度0.1Kg使用两位数码管显示重量信息 使用拨码…

深度学习 基本函数01

np.dot 是 NumPy 库中的一个函数,用于计算两个数组的点积(也称为内积或数量积)。点积是两个向量的对应元素乘积之和。 np.random.normal 是 NumPy 库中的一个函数,用于生成符合正态分布(也称为高斯分布)的…

jmeter用csv data set config做参数化1

在jmeter中,csv data set config的作用非常强大,用它来做批量测试和参数化非常好用。 csv data set config的常用配置项如下: Variable Names处,写上源文件中的参数名,用于后续接口发送请求时引用 Ignore first line…

Mybatis多对一查询的配置及两种方法的使用示例对比以及Mybatis一对多查询两种方法使用示例及对比

一、Mybatis多对一查询的配置及两种方法的使用示例对比 为了试验Mybatis多对一的查询,我们先在数据库中建两个表,一个城市表,一个市区表,一个城市有多个区是一个一对多的关系;多个区对应一个城市是一个多对一的关系。建…

spring源码拓展点3之addBeanPostProcesser

概述 在refresh方法中的prepareBeanFactory方法中,有一个拓展点:addBeanPostProcessor。即通过注入Aware对象从而将容器中的某些值设置到某个bean中。 beanFactory.addBeanPostProcessor(new ApplicationContextAwareProcessor(this));aware接口调用 …

ThinkPad T480拆机屏幕改装:便携式显示器DIY指南

ThinkPad T480拆机屏幕改装:便携式显示器DIY指南 本文记录了将旧笔记本电脑 T480 拆机屏幕改装为便携式显示器的全过程。作者在决定升级设备后,选择通过 DIY 方式利用原有的屏幕资源。文章详细介绍了屏幕驱动板的安装、螺丝孔的剪裁、排线连接及固定的步…

[DB] NSM

Database Workloads(数据库工作负载) 数据库工作负载指的是数据库在执行不同类型任务时所需的资源和计算方式,主要包括以下几种类型: 1. On-Line Transaction Processing (OLTP) 中文:联机事务处理解释:…

hive初体验

1.首先,确保启动了Metastore服务。 runjar就是metastore进程 2.进入hive客户端: 命令:hive 3.操作:没有指定数据库时默认在default 一:创建表:CREATE TABLE test(id INT, name STRING, gender STRING); 完成,show tables看一下 也可以通过hdfs文件系统查看,默认路径…

go多线程

1.仅加go 在一个golang编写的程序,主函数运行完毕后,程序就结束了 package mainimport ("fmt""time" )func main() {// 如果这样写go 要加在上面的函数,因为如果只单独加在下面的函数或者都加上,程序就会直接…

Leetcode 柱状图中最大的矩形

h 是右边界&#xff0c;连续多个高度递增的柱子&#xff0c;如果遇到下一个 h < 栈顶元素(是最大的元素&#xff0c;单调递增栈)&#xff0c;那么会不断出栈来更新计算最大面积。 并非是一次性计算出最大面积的&#xff0c;很重要的一点是while (!stack.isEmpty()这一部分的…

Vivado自定义IP修改顶层后Port and Interface不更新解决方案

问题描述 在整个项目工程中&#xff0c;对自定义IP进行一个比较大的改动&#xff0c;新增了不少端口(这里具体的就是bram的读写端口)&#xff0c;修改是在block design中右击IP编辑在IP编辑工程中进行的。 在修改完所有代码后&#xff08;顶层新增了需要新加的输入输出端口&…

【计算机网络 - 基础问题】每日 3 题(四十九)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞…

字节流写入文件

一、创建输出流对象表示的文件三种方式 方法一&#xff1a; FileOutputStream fos new FileOutputStream("fos.txt",true);//最简便方法二&#xff1a; FileOutputStream fos new FileOutputStream(new File("fos.txt"));方法三&#xff1b; File f ne…

HCIP-HarmonyOS Application Developer 习题(十四)

&#xff08;多选&#xff09;1、HarmonyOs为应用提供丰富的Al(Artificial Intelligence)能力&#xff0c;支持开箱即用。下列哪些是它拥有的AI能力? A、通用文字识别 B、词性标注 C、实体识别 D、语音播报 答案&#xff1a;ABCD 分析&#xff1a; AI能力简介二维码生成根据开…

软考高级系统分析师,快背,都是精华知识点!

19、需求变更控制 需求变更控制过程&#xff1a; &#xff08;1&#xff09;变更申请。应记录变更的提出人、日期、申请变更的内容等信息。 &#xff08;2&#xff09;变更评估。对变更的影响范围、严重程度、经济和技术可行性进行系统分析。 &#xff08;3&#xff09;变更…

qt/c++中成员函数返回成员变量并且可以赋值

#创作灵感 最近在做仪表项目&#xff0c;由于客户提供的仪表故障指示灯只有10个固定位置&#xff0c;而故障指示灯却有80多个。为了解决这个问题&#xff0c;进过我的设计&#xff0c;项目中需要返回类的成员变量。并且还可以赋值给它。于是就产生了下面的代码。 class Foo { …

基于Multisim三极管B放大系数放大倍数测量电路设计(含仿真和报告)

【全套资料.zip】三极管B放大系数放大倍数测量电路电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 1.用三个数码管显示B的大小&#xff0c;分别显示个位、十位和百位。 2.显示范围…