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

猜你喜欢

转载自blog.csdn.net/weixin_44099072/article/details/134090577