2024MathorCup大数据竞赛 B题基本思路

news/2024/10/26 23:20:19/

AB两题的难度分析

赛道A:台风的分类与预测

赛道A要求参赛者利用大数据分析方法解决台风分类与预测的问题。具体任务包括分析台风特征参数(强度、等级、风速等)与气温、气压、季风的关系,建立分类模型,并进行台风路径预测及分析台风登陆后的风速和降水量变化。

赛道B:电商品类货量预测及品类分仓规划

赛道B的任务是预测电商仓储网络中350个品类在未来三个月的库存量和销量,并根据预测结果制定合理的品类分仓方案,包括一品一仓方案和允许多仓方案。

比较分析

  • 数据需求:两个赛道都需要大量的历史数据,赛道A的数据涉及气象参数,而赛道B的数据则涉及销售记录和仓库信息。
  • 技能要求:赛道A需要较强的气象学知识和对非线性系统的理解能力;赛道B则需要对供应链管理和库存控制有一定的了解。
  • 模型复杂度:赛道A的模型可能更为复杂,因为它涉及到自然现象的预测,而自然现象往往具有高度的不确定性和复杂性;赛道B虽然也需要复杂的预测模型,但更多的是围绕商业数据展开。
  • 实践应用:赛道A的应用更广泛,可以用于灾害预警和应急准备;赛道B的应用则更加聚焦于提高电商企业的运营效率。

哪个题目比较简单?

从表面上看,赛道B的题目可能相对简单一些,因为它更多依赖于历史销售数据进行预测,而且这些数据通常较为可靠和结构化。此外,分仓规划虽然也需要复杂的计算,但是它的问题定义较为清晰,目标明确。相比之下,赛道A需要处理的是自然界的不可控因素,其模型构建和验证可能会更加困难。

赛题B

问题 1:建立货量预测模型

1.1 库存量预测模型
  1. 数据准备
    • 整理附件1中的历史库存量数据,确保数据的完整性、准确性和一致性。
    • 对缺失数据进行处理,如使用插值法填补空缺值。
  2. 特征工程
    • 提取时间特征(如季节性、趋势)。
    • 识别节假日和促销活动的影响。
    • 从数据中发现周期性模式或趋势。
  3. 模型选择
    • 可以选用时间序列分析方法(如ARIMA、SARIMA)来捕捉季节性趋势。
    • 也可以使用机器学习方法(如XGBoost、LSTM)来处理非线性关系。
  4. 模型训练
    • 使用历史数据训练模型,并通过交叉验证选择最佳参数配置。
    • 确保模型在测试集上有良好的泛化能力。
  5. 预测
    • 使用训练好的模型对未来三个月(7月、8月、9月)的库存量进行预测,并将结果填写在表格中。
1.2 销量预测模型
  1. 数据准备
    • 整理附件2中的历史销量数据,确保数据的完整性、准确性和一致性。
    • 对缺失数据进行处理,如使用插值法填补空缺值。
  2. 特征工程
    • 提取时间特征(如季节性、趋势)。
    • 识别节假日和促销活动的影响。
    • 从数据中发现周期性模式或趋势。
  3. 模型选择
    • 可以选用时间序列分析方法(如ARIMA、SARIMA)来捕捉季节性趋势。
    • 也可以使用机器学习方法(如XGBoost、LSTM)来处理非线性关系。
  4. 模型训练
    • 使用历史数据训练模型,并通过交叉验证选择最佳参数配置。
    • 确保模型在测试集上有良好的泛化能力。
  5. 预测
    • 使用训练好的模型对未来每天的销量进行预测,并将结果填写在表格中。

问题 2:一品一仓分仓规划模型

2.1 建立规划模型
  1. 定义变量
    • 设定二元变量表示某个品类是否放置在某个仓库中。
  2. 目标函数
    • 定义目标函数以最小化总仓租成本,同时最大化品类关联度。
  3. 约束条件
    • 根据附件3中的仓容上限、产能上限设定约束条件。
    • 根据附件4中的品类关联度设定约束条件。
  4. 求解
    • 使用线性规划或混合整数规划求解器(如CPLEX、GUROBI)求解最优解。
2.2 分仓方案生成
  1. 求解结果解析
    • 从求解器获取结果,解析出每个品类的最佳存放仓库。
  2. 结果填写
    • 将求解结果按照表格格式填写,并放入论文正文。

问题 3:一品多仓分仓规划模型

3.1 建立规划模型
  1. 定义变量
    • 设定二元变量表示某个品类是否放置在某个仓库中。
    • 设定一个额外的变量来表示品类在不同仓库中的分布比例。
  2. 目标函数
    • 定义目标函数以最大化品类关联度,同时考虑仓容利用率、产能利用率等因素。
  3. 约束条件
    • 根据附件3中的仓容上限、产能上限设定约束条件。
    • 根据附件4中的品类关联度设定约束条件。
    • 同件型、同高级品类尽量放在一个仓库中。
  4. 求解
    • 使用启发式算法(如遗传算法、粒子群优化)或混合整数规划求解器求解最优解。
3.2 分仓方案生成
  1. 求解结果解析
    • 从求解器获取结果,解析出每个品类的最佳存放仓库及其比例。
  2. 结果填写
    • 将求解结果按照表格格式填写,并放入论文正文。
  3. 业务指标分析
    • 对不同方案中的业务指标(如仓容利用率、产能利用率、总仓租成本等)进行比较分析,总结出最优方案。

数据预处理方法

1. 数据清洗
1.1 缺失值处理
  • 检查缺失值:首先,需要检查历史库存量和销量数据中是否存在缺失值。
  • 填充缺失值:如果存在缺失值,可以使用以下方法填充:
    • 时间序列方法:使用前后相邻的时间点数据进行插值,例如线性插值。
    • 平均值/中位数:对于某些时间段的缺失,可以用前后时段的平均值或中位数来代替。
    • 预测填充:使用时间序列预测方法(如ARIMA)来预测缺失值。
1.2 异常值检测
  • 检测异常值:通过绘制时间序列图或箱线图来检测异常值。
  • 处理异常值:可以采用删除、修正或平滑的方法处理异常值,以保持数据的一致性。
1.3 数据标准化
  • 数据标准化:如果数据范围相差很大,可以使用z-score标准化或min-max缩放等方法对数据进行标准化处理,以便于后续分析。
2. 时间序列特征提取
2.1 季节性分解
  • 使用STL分解:对库存量和销量数据进行季节性、趋势和残差成分的分解,以提取季节性特征。
  • 周期性检测:检测数据中是否存在明显的周期性模式,如周、月、季度等周期。
2.2 时间窗口特征
  • 滑动窗口:创建滑动窗口,提取前n天的平均值、标准差等统计特征,以反映数据的变化趋势。
  • 滞后特征:构造滞后特征,比如t-1时刻的库存量或销量,以捕捉时间序列的动态变化。
3. 特征工程
3.1日历特征
  • 日期特征:提取日期特征,如星期几、月份、季度等,以捕捉日期对销量的影响。
4. 数据集成
4.1 数据合并
  • 合并数据集:将处理后的库存量和销量数据与外部特征(如节假日、促销活动等)进行合并,形成可用于建模的数据集。
5. 数据分割
5.1 训练集与测试集
  • 时间序列分割:按照时间顺序将数据划分为训练集和测试集,确保模型能够在未知数据上进行验证。

实施步骤

  1. 加载数据:首先加载附件1和附件2中的历史库存量和销量数据。
  2. 执行上述步骤:按照上述步骤逐一实施数据清洗、特征提取、特征工程、数据集成和数据分割。
  3. 数据检验:确保预处理后的数据集没有缺失值、异常值,并且特征丰富、一致。

http://www.ppmy.cn/news/1542225.html

相关文章

[项目详解][boost搜索引擎#1] 概述 | 去标签 | 数据清洗 | scp

目录 一、前言 二、项目的相关背景 三、搜索引擎的宏观原理 四、搜索引擎技术栈和项目环境 五、正排索引 VS 倒排索引--原理 正排索引 分词 倒排索引 六、编写数据去除标签和数据清洗模块 Parser 1.数据准备 parser 编码 1.枚举文件 EnumFile 2.去标签ParseHtml(…

入侵检测算法平台部署LiteAIServer视频智能分析平台行人入侵检测算法

在当今科技日新月异的时代,行人入侵检测技术作为安全防护的重要组成部分,正经历着前所未有的发展。入侵检测算法平台部署LiteAIServer作为这一领域的佼佼者,凭借其卓越的技术实力与广泛的应用价值,正逐步成为守护公共安全的新利器…

Bitcoin全节点搭建

1. wget https://bitcoincore.org/bin/bitcoin-core-0.20.1/bitcoin-0.20.1-x86_64-linux-gnu.tar.gz 2.tar -xzvf bitcoin-0.20.1-x86_64-linux-gnu.tar.gz mv bitcoin-0.20.1 bitcoin 3.创建配置文件(bitcoin.conf) mkdir -p /btc_data mkdir ~/.b…

linux中myshell的实现

目录 引言 全局信息 核心代码 核心函数 引言 随着计算机技术的飞速发展,操作系统在人们日常工作和生活中扮演着越来越重要的角色。Linux作为一款开源、自由且功能强大的操作系统,已经成为了众多服务器和开发者的首选平台。Shell作为Linux系统的用户界…

线程安全-同步与互斥/死锁

目录 前言 一、线程安全 1.互斥 2、死锁 3、同步 前言 提示:这里可以添加本文要记录的大概内容: 临界资源—同时只能被一个线程/进程进行安全访问的资源,如共享内存、文件、硬件设备、全局变量等 提示:以下是本篇文章正文内…

jmeter学习(6)逻辑控制器-循环

循环执行 1、循环读取csv文件的值 2、foreach 读取变量,变量数字后缀有序递增,通过counter实现 ${__V(typeId${typeIdNum})} beansell断言 String typeIdNum vars.get("typeIdNum"); String response prev.getResponseDataAsString(); …

verilog实现一个5bit序列检测器

以下是用 Verilog 实现一个 5bit 序列检测器的代码: module five_bit_sequence_detector(input clk,input reset,input [4:0] in,output reg detected );// 定义状态参数localparam IDLE 4b0000;localparam STATE1 4b0001;localparam STATE2 4b0010;localparam …

Java项目实战II基于微信小程序的原创音乐平台{UNIAPP+SSM+MySQL+Vue}(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在数字音乐…