2023MathorCup高校数模挑战赛B题完整解题代码教程
赛道 B: 电商零售商家需求预测及库存优化问题
问题背景:
电商平台存在着上千个商家,他们会将商品货物放在电商配套的仓库, 电商平台会对这些货物进行统一管理。通过科学的管理手段和智能决策, 大数据智能驱动的供应链可以显著降低库存成本,同时保证商品的按时履约。一般来说,以上供应链优化问题会包含以下方面:
现有一张电商零售商家的历史出货量表(附件 1),给出了历史 6 个月 各商家存放在电商不同仓库的商品每天的出货量。假设该出货量即为历史 各商品在各仓库的需求量。同时,还可以取到各商品、商家、仓库的信息 (附件 2-4),例如分类、品牌、生效日期等,这些信息的选择和引入会帮助更好的预测并管理供应链中的库存。
初赛问题:
问题一 :使用附件 1-4 中的数据 ,预测出各商家在各仓库的商品
2023-05- 16 至 2023-05-30 的需求量,请将预测结果填写在结果表 1 并上传竞赛平台,并对你们模型的预测性能进行评价。另外请讨论:根据数据 分析及建模过程,这些由商家、仓库、商品形成的时间序列如何分类,使同一类别在需求上的特征最为相似?
思路:
问题1大致可以分为2类解题的思路:
第一种就是基于附件1,用附件2~4的数据生成特征来形容附件1的(商家+仓库+ 商品维度),因为附件1商家+仓库+ 商品维度是文本标签,提取特征的唯一方法是独热编码,但是由于去重数太多了,所以直接独热编码不现实,但是这种思路准确率会非常不靠谱,因为很难拟合,我原先在做此类需求预测建模时,用此方法经常欠拟合。
第二种方法就是把商家+仓库+ 商品维度进行合并主键,一共是有1996个去除值,也就是分开建立1996个模型,然后分开预测,具体的解法如下:
step1:读取附件1数据,并按商家+仓库+ 商品维度进行合并主键
step2:以主键seller_16product_1187wh_33为例,筛选出该数据
step3:将数据按15天为一个周期进行合并,首先需要计算最近的日期与2023-05-15的差值,然后从这个差值开始合, 合并数据窗口大小为15,根据差值筛选出合并后的数据,生成对应的时间周期
step4:构建时序特征,这里我用的的典型的时序机器学习预测方法.时序数据滑窗转换用于将时间序列数据转为回归数据,简单地说,就是把一个单序列的数据变为X->Y的回归数据。如下图所示,步阶为2代表2个X(步阶多少就有多少个X),简单地说,就是用第1,2天的数据预测第3天,用第2,3天的数据预测第4天,以此类推。此种形式的数据进行回归就是时间序列预测问题。
step5:拆分训练集和测试集,创建多个模型并训练
step5:选择最好的那个模型对应的评价值(1-wmape),用最后一个周期的数据预测各商家在各仓库的商品2023-05- 16 至 2023-05-30 的需求量
step6:重复这个过程,分开对1996个主键进行预测与训练
step7:将结果整理输出
第二个小问我放到Q2进行一起求解
问题二:现有一些新出现的商家+仓库+ 商品维度(附件 5),导致这种 情况出现的原因可能是新上市的商品,或是改变了某些商品所存放的仓库。 请讨论这些新出现的预测维度如何通过历史附件 1 中的数据进行参考,找 到相似序列并完成这些维度在 2023-05- 16 至 2023-05-30 的预测值。请把预测结果填写在结果表 2 ,并上传至竞赛平台。
思路:
问题二其实就是要根据附件五的主键去找到在附件一最为相似的主键,那么直接去求这一个相关性,实际上数据维度是很大的,一种做法就是先进行聚类,聚类后。聚类后可以根据聚类的标签,然后在附件一的数据进行筛选,这个时候只需要计算筛选中的对应聚类的相关度就可以了,这样计算量会少很多,具体做法如下:
step1:附件1和附件5合并主键后,创建其对应需求量的时序特征
step2:附件1和附件5数据进行合并
step3:使用聚类分析,划分标签,这里我用了三种聚类方法,层次聚类、k-means、DBSCAN
step4:针对附件5第一个主键,与附件1数据筛选出共同聚类标签后,求相关系数,得到相关系数最大的主键即为附件5该数据与附件1数据最为相似的主键
step5:重复上面的过程,为附件5每一个主键找到对应在附件1中最为相似的主键
step6:找回前面的结果1数据,根据主键关联出附件5的需求预测量即可
问题三:每年 6 月会出现规律性的大型促销,为需求量的精准预测以 及履约带来了很大的挑战。附件 6 给出了附件 1 对应的商家+仓库+ 商品维 度在去年双十一期间的需求量数据,请参考这些数据,给出 2023-06-01 2023-06-20 的预测值。请把预测结果填写在结果表 3 ,并上传至竞赛平台。
思路:问题3与附件1类似,只不是要做更复杂的数据处理,需要构建以20为周期的时序数据特征,然后可以对每个主键求非促销时间与促销时间的需求量的比率作为促销系数,预测出 2023-06-01 至2023-06-20 的预测值后乘上这个系数即可,具体求解如下:
step1:构建时序数据,以seller_16product_1187wh_33举例
step2:保留后5天,即2023-05-10~2023-05-15的数据,加上结果1中的预测销量做为一个时序特征,2023-05-10前面的需求量按20为周期求取,
step3:与问题1一样,求取构建模型,选取最优模型得到 2023-06-01 至2023-06-20 的预测值
step4:然后乘以一个促销系数b即可得到预测时间段的需求量
step5:重复这个过程,为每一个主键求取预测时间段的需求量,并进行保存,耗时7分钟
step6:将结果整理输出
本次将全程提供B题题完整解题思路及代码,同时共享一些论文模板等资料,需要的小伙伴可以关注一下,持续更新!完整解题代码可查看B站哦
2023mathorcup大数据赛 B题 完整代码解题教程_哔哩哔哩_bilibili
相关文章:

2023MathorCup高校数模挑战赛B题完整解题代码教程
赛道 B: 电商零售商家需求预测及库存优化问题 问题背景: 电商平台存在着上千个商家,他们会将商品货物放在电商配套的仓库, 电商平台会对这些货物进行统一管理。通过科学的管理手段和智能决策, 大数据智能驱动的供应链…...

《动手学深度学习 Pytorch版》 10.7 Transformer
自注意力同时具有并行计算和最短的最大路径长度这两个优势。Transformer 模型完全基于注意力机制,没有任何卷积层或循环神经网络层。尽管 Transformer 最初是应用于在文本数据上的序列到序列学习,但现在已经推广到各种现代的深度学习中,例如语…...

ORACLE-递归查询、树操作
1. 数据准备 -- 测试数据准备 DROP TABLE untifa_test;CREATE TABLE untifa_test(child_id NUMBER(10) NOT NULL, --子idtitle VARCHAR2(50), --标题relation_type VARCHAR(10) --关系,parent_id NUMBER(10) --父id );insert into untifa_test (CHILD_ID, TITLE, RELATION_TYP…...
MySQL篇---第四篇
系列文章目录 文章目录 系列文章目录一、并发事务带来哪些问题?二、事务隔离级别有哪些?MySQL的默认隔离级别是?三、大表如何优化?一、并发事务带来哪些问题? 在典型的应用程序中,多个事务并发运行,经常会操作相同的数据来完成各自的任务(多个用户对 同一数据进行操作…...
em/px/rem/vh/vw单位的区别
一、绝对长度单位 1.px 表示像素,显示器上每个像素点大小都是相同的 二、相对长度单位 2.em 相对于当前对象内文本的字体尺寸,如未设置对行内文本字体的尺寸,则相对于浏览器的默认字体(1em16px) em值不是固定的&…...

【C++】多态 ③ ( “ 多态 “ 实现需要满足的三个条件 | “ 多态 “ 的应用场景 | “ 多态 “ 的思想 | “ 多态 “ 代码示例 )
文章目录 一、" 多态 " 实现条件1、" 多态 " 实现需要满足的三个条件2、" 多态 " 的应用场景3、" 多态 " 的思想 二、" 多态 " 代码示例 一、" 多态 " 实现条件 1、" 多态 " 实现需要满足的三个条件 &q…...

创建一个Keil项目
1、创建项目 2、选择存放的文件夹,还有设置项目名 3、选择型号(因为没有STC,用下面这个替代,功能差不多) 4、选择不用启动文件 5、就会得到下面这个,可以在Source Group 1下面编写代码了 6、右键source Group 1,添加c语…...

Xray的简单使用
xray 简介 xray 是一款功能强大的安全评估工具,由多名经验丰富的一线安全从业者呕心打造而成,主要特性有: 检测速度快。发包速度快; 漏洞检测算法效率高。支持范围广。大至 OWASP Top 10 通用漏洞检测,小至各种 CMS 框架 POC,均…...
Linux Ubunto Nginx安装
一 安装前 环境准备 gcc $ sudo apt-get install gcc zlib $ sudo apt-get install zlib1g-dev pcre $ sudo apt-get install libpcre3 libpcre3-dev openssl $ sudo apt-get install openssl libssl-dev‘ ubuntu 安装 libssl-dev失败的解决方案 1.安装aptitude sudo apt-g…...
深度学习中的epoch, batch 和 iteration
名词定义epoch使用训练集的全部数据进行一次完整的训练,称为“一代训练”batch使用训练集中的一小部分样本对模型权重进行一次反向传播的参数更新,这样的一部分样本称为:“一批数据”iteration使用一个batch的数据对模型进行一次参数更新的过…...
unity开发安卓视频文件适配手机和平板
using UnityEngine; using UnityEngine.UI;public class VideoResize : MonoBehaviour {private RawImage rawImage;private VideoPlayer videoPlayer;private void Start(){rawImage GetComponent<RawImage();videoPlayer GetComponent<VideoPlayer>();// 播放视频…...
NLP之RNN的原理讲解(python示例)
目录 代码示例代码解读知识点介绍 代码示例 import numpy as np import tensorflow as tf from tensorflow.keras.layers import SimpleRNNCell# 第t时刻要训练的数据 xt tf.Variable(np.random.randint(2, 3, size[1, 1]), dtypetf.float32) print(xt) # https://www.cnblog…...

yo!这里是进程间通信
目录 前言 进程间通信简介 目的 分类 匿名通道 介绍 举例(进程池) 命名管道 介绍 举例 共享内存 介绍 共享内存函数 1.shmget 2.shmat 3.shmdt 4.shmctl 举例 1.框架 2.通信逻辑 消息队列 信号量 同步与互斥 理解信号量 后记…...
使用docker安装MySQL,Redis,Nacos,Consul教程
文章目录 安装MySQL安装Redis安装Nacos安装Consul 如未安装docker,参考教程: https://blog.csdn.net/m0_63230155/article/details/134090090 安装MySQL #拉取镜像 sudo docker pull mysql:latestsudo docker run --name mysql \-p 3306:3306 \-e MYSQ…...
python和Springboot如何交互?
Python和Spring Boot可以通过RESTful API进行交互。Spring Boot通常用于后端开发,提供了快速构建RESTful API的工具,而Python则可以用于编写前端或与后端交互的代码。 要实现Python和Spring Boot的交互,可以按照以下步骤进行: 在…...
Qt实现json解析
前提要点 json文件,可通过键值的方式存储你所需要的数据,斌且支持多种类型存储,类似于一种结构化的数据库,在读取json文件时可通过相对应的关键字精准获取。他是一种树状结构,我们可以自己设定叶子的数量以及他所代表…...

Ajax、Json深入浅出,及原生Ajax及简化版Ajax
Ajax 1.路径介绍 1.1 JavaWeb中的路径 在JavaWeb中,路径分为相对路径和绝对路径两种: 相对路径: ./ 表示当前目录(可省略) ../ 表示当前文件所在目录的上一级目录 绝对路径: http://ip:port/工程名/资源路径 2.2 在JavaWeb中…...
前端第一阶段测试
前端第一阶段测试 选择问答 如果觉得有用请给我点个赞⑧~ 选择 1、【单选】下列哪个是子代选择器 A A、p>b B、p b C、pb D、p.b 2、【单选】下述有关css属性position的属性值的描述,说法错误的是?B A、static:没有定位,元素出…...
openlayers+vue的bug
使用addInteraction添加交互draw绘制,预期removeInteraction删除交互draw绘制时不再绘制,但是删除绘制不起作用,各种找原因,结果把data中的map变量注释掉即可,原因未知。 <template><div><div id"…...

实时数仓-Hologres介绍与架构
本文是向大家介绍Hologres是一款实时HSAP产品,隶属阿里自研大数据品牌MaxCompute,兼容 PostgreSQL 生态、支持MaxCompute数据直接查询,支持实时写入实时查询,实时离线联邦分析,低成本、高时效、快速构筑企业实时数据仓…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...

【Java多线程从青铜到王者】单例设计模式(八)
wait和sleep的区别 我们的wait也是提供了一个还有超时时间的版本,sleep也是可以指定时间的,也就是说时间一到就会解除阻塞,继续执行 wait和sleep都能被提前唤醒(虽然时间还没有到也可以提前唤醒),wait能被notify提前唤醒…...

react更新页面数据,操作页面,双向数据绑定
// 路由不是组件的直接跳转use client,useEffect,useRouter,需3个结合, use client表示客户端 use client; import { Button,Card, Space,Tag,Table,message,Input } from antd; import { useEffect,useState } from react; impor…...
CentOS 7.9安装Nginx1.24.0时报 checking for LuaJIT 2.x ... not found
Nginx1.24编译时,报LuaJIT2.x错误, configuring additional modules adding module in /www/server/nginx/src/ngx_devel_kit ngx_devel_kit was configured adding module in /www/server/nginx/src/lua_nginx_module checking for LuaJIT 2.x ... not…...