AB两题的难度分析
赛道A:台风的分类与预测
赛道A要求参赛者利用大数据分析方法解决台风分类与预测的问题。具体任务包括分析台风特征参数(强度、等级、风速等)与气温、气压、季风的关系,建立分类模型,并进行台风路径预测及分析台风登陆后的风速和降水量变化。
赛道B:电商品类货量预测及品类分仓规划
赛道B的任务是预测电商仓储网络中350个品类在未来三个月的库存量和销量,并根据预测结果制定合理的品类分仓方案,包括一品一仓方案和允许多仓方案。
比较分析
- 数据需求:两个赛道都需要大量的历史数据,赛道A的数据涉及气象参数,而赛道B的数据则涉及销售记录和仓库信息。
- 技能要求:赛道A需要较强的气象学知识和对非线性系统的理解能力;赛道B则需要对供应链管理和库存控制有一定的了解。
- 模型复杂度:赛道A的模型可能更为复杂,因为它涉及到自然现象的预测,而自然现象往往具有高度的不确定性和复杂性;赛道B虽然也需要复杂的预测模型,但更多的是围绕商业数据展开。
- 实践应用:赛道A的应用更广泛,可以用于灾害预警和应急准备;赛道B的应用则更加聚焦于提高电商企业的运营效率。
哪个题目比较简单?
从表面上看,赛道B的题目可能相对简单一些,因为它更多依赖于历史销售数据进行预测,而且这些数据通常较为可靠和结构化。此外,分仓规划虽然也需要复杂的计算,但是它的问题定义较为清晰,目标明确。相比之下,赛道A需要处理的是自然界的不可控因素,其模型构建和验证可能会更加困难。
赛题B
问题 1:建立货量预测模型
1.1 库存量预测模型
- 数据准备:
- 整理附件1中的历史库存量数据,确保数据的完整性、准确性和一致性。
- 对缺失数据进行处理,如使用插值法填补空缺值。
- 特征工程:
- 提取时间特征(如季节性、趋势)。
- 识别节假日和促销活动的影响。
- 从数据中发现周期性模式或趋势。
- 模型选择:
- 可以选用时间序列分析方法(如ARIMA、SARIMA)来捕捉季节性趋势。
- 也可以使用机器学习方法(如XGBoost、LSTM)来处理非线性关系。
- 模型训练:
- 使用历史数据训练模型,并通过交叉验证选择最佳参数配置。
- 确保模型在测试集上有良好的泛化能力。
- 预测:
- 使用训练好的模型对未来三个月(7月、8月、9月)的库存量进行预测,并将结果填写在表格中。
1.2 销量预测模型
- 数据准备:
- 整理附件2中的历史销量数据,确保数据的完整性、准确性和一致性。
- 对缺失数据进行处理,如使用插值法填补空缺值。
- 特征工程:
- 提取时间特征(如季节性、趋势)。
- 识别节假日和促销活动的影响。
- 从数据中发现周期性模式或趋势。
- 模型选择:
- 可以选用时间序列分析方法(如ARIMA、SARIMA)来捕捉季节性趋势。
- 也可以使用机器学习方法(如XGBoost、LSTM)来处理非线性关系。
- 模型训练:
- 使用历史数据训练模型,并通过交叉验证选择最佳参数配置。
- 确保模型在测试集上有良好的泛化能力。
- 预测:
- 使用训练好的模型对未来每天的销量进行预测,并将结果填写在表格中。
问题 2:一品一仓分仓规划模型
2.1 建立规划模型
- 定义变量:
- 设定二元变量表示某个品类是否放置在某个仓库中。
- 目标函数:
- 定义目标函数以最小化总仓租成本,同时最大化品类关联度。
- 约束条件:
- 根据附件3中的仓容上限、产能上限设定约束条件。
- 根据附件4中的品类关联度设定约束条件。
- 求解:
- 使用线性规划或混合整数规划求解器(如CPLEX、GUROBI)求解最优解。
2.2 分仓方案生成
- 求解结果解析:
- 从求解器获取结果,解析出每个品类的最佳存放仓库。
- 结果填写:
- 将求解结果按照表格格式填写,并放入论文正文。
问题 3:一品多仓分仓规划模型
3.1 建立规划模型
- 定义变量:
- 设定二元变量表示某个品类是否放置在某个仓库中。
- 设定一个额外的变量来表示品类在不同仓库中的分布比例。
- 目标函数:
- 定义目标函数以最大化品类关联度,同时考虑仓容利用率、产能利用率等因素。
- 约束条件:
- 根据附件3中的仓容上限、产能上限设定约束条件。
- 根据附件4中的品类关联度设定约束条件。
- 同件型、同高级品类尽量放在一个仓库中。
- 求解:
- 使用启发式算法(如遗传算法、粒子群优化)或混合整数规划求解器求解最优解。
3.2 分仓方案生成
- 求解结果解析:
- 从求解器获取结果,解析出每个品类的最佳存放仓库及其比例。
- 结果填写:
- 将求解结果按照表格格式填写,并放入论文正文。
- 业务指标分析:
- 对不同方案中的业务指标(如仓容利用率、产能利用率、总仓租成本等)进行比较分析,总结出最优方案。
数据预处理方法
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和附件2中的历史库存量和销量数据。
- 执行上述步骤:按照上述步骤逐一实施数据清洗、特征提取、特征工程、数据集成和数据分割。
- 数据检验:确保预处理后的数据集没有缺失值、异常值,并且特征丰富、一致。