菜鸟—需求预测与分仓规划亚军——“天亮”团队赛后总结

简介: 在菜鸟—需求预测与分仓规划比赛上,“天亮”团队获得了亚军。“天亮”团队主要分享了团队的特征分析以及方案实现过程。

在菜鸟—需求预测与分仓规划比赛上,“天亮”团队获得了亚军。“天亮”团队主要分享了团队的特征分析以及方案实现过程。

背景介绍

此次比赛希望选手利用大数据技术预测商品的未来需求来优化整个菜鸟物流的供应链。比赛给出的数据包括商品的销量、价格品牌等信息,预测后两个星期的销量。

特征分析

通过观察一件商品的时序图,我们可以发现一件商品有上架时间,在双十一、双十二会有销量的突增,这些突增在时序的最后端,会对接下来两周的预测产生干扰。此次,训练样本采用滑窗法,主要有13个窗口,每个窗口有14天(不重叠)。第一个窗口作为线上预测的样本,第二个窗口作为线下评测系统的评价,后面的窗口作为线下模型的训练样本。

在特征提取过程中,赛方给出的数据包括label型的特征和数字型的特征。label型的数据,比如一些品牌有些类目型的数据,经典的处理方式是One-Hot编码,但是没有太大的意义。所以我们应该对其进行统计获得该品牌在整个历史时期的统计特征,包括总和、方差、均值。同样的,对数字型特征也会进行同样的处理。此外,还会加入一些先验知识补充规则特征,涉及一些业务特征。有一个比较明显的特征是某个商品在一段时间内的销量占所有产品销量的百分比。

通过观察数字型特征,我们可以发现一个很严重的常规效应:很多商品的销量很少但是有少部分商品的销量特别大。这有很明显的一个区分性,可以用于分类。但是并不适合回归,所以需要进行Log平滑处理。

在数据清洗方面,直接剔除了双十一、双十二的销量数据。细节方面,对这两个时序进行遍历,根据某个销量大于阈值的情况进行替换。

方案设计

有了线下评测和特征之后,就可以设计方案了。为了提升建模的效果,额外增加了两个过程:样本选择,特征选择。样本选择是通过训练模型继续对训练样本进行预测,剔除训练误差较大的一些样本。特征选择是用xgboost训练出一些特征的重要性,选取了top 50的特征放入线性模型。

针对此次比赛设定了两条显著的规则:统计预测时间点前两周的销量均值,取其最小值乘以14作为后期的一个预测,这是因为在双十一之后销量会出现下滑,如果不引入人为的先验知识,模型效果较差;基于权重加权的滑窗技术,首先剔除促销数据,假设销量是大于均值的三个标准差的话用均值替换,寻找与预测实际窗比较接近的时间窗,将这几个时间窗均值进行加权,权值参数是根据时间长度和标准化的和进行倒数。

除此之外,基于官方的评价函数进行模型自定制,“天亮”团队自定制了一个线性模型。由于传统模型用的是RMSE,与官方函数不同,所以采用了SGD随机梯度下降法进行优化训练,但由于平台的约束(可能是安全性问题),导致MapReduce无法不断迭代。这个平台只允许调用一次MapReduce过程,所以把模型的训练迭代放在Reduce中实现,但是可以用Map做一个具体分发的过程。将数据分为10份,每份数据中训练出一个线性模型,最终将权重均值加权。

GBDT的窗口框架每次迭代分为三个步骤:对损失函数求梯度,用决策树去拟合函数梯度,再用一维线性搜索寻找最优步长。用决策树去拟合函数梯度时,关键是优化树模型、叶子节点的结构参数。假设训练样本用到某个节点的样本,样本形成一个集合,对其进行目标值的排序,在过程中可以消除评价函数中Max符号,最终对进行求导,根据公式做临界值的选择,即从负号到正号的两个临界点,取损失较小的临界点作为叶子节点的T值。融合规则和模型的过程中需要进行微调,调整模型融合的权重。

总结和展望

充分利用模型的差异性和融合会产生比最优单模型最好的效果。基于特征选择和样本选择的过程实际上能进一步提升机器学习的效果。

如果菜鸟提供更多业务知识,能够设计出更多稳定的物流规则、先验知识,效果会变得更好。
相关文章
|
机器学习/深度学习 数据采集 监控
大模型开发:描述一个典型的机器学习项目流程。
机器学习项目涉及问题定义、数据收集、预处理、特征工程、模型选择、训练、评估、优化、部署和监控。每个阶段都是确保模型有效可靠的关键,需要细致操作。
214 0
|
Prometheus 监控 Cloud Native
夜莺自定义告警模板
夜莺自定义告警模板
|
网络协议 Python
python中socket客户端发送和接收数据
【4月更文挑战第7天】本教程聚焦TCP客户端数据发送与接收。使用Python的`socket`模块,通过`send()`发送字节串至服务器,如`client_socket.send(message_bytes)`;用`recv()`接收数据,如`received_data = client_socket.recv(buffer_size)`。异常处理确保网络错误时程序健壮性,例如`try-except`捕获`socket.error`。理解和掌握这些基础操作对于构建稳定的TCP客户端至关重要。
2404 1
|
2月前
|
人工智能 NoSQL Java
LangChain4j 项目概览
LangChain4j 是一个专为 Java 开发者设计的大语言模型 (LLM) 集成框架,旨在简化 Java 应用程序与各种 LLM 提供商的集成过程。该项目受到 Python 的 LangChain、Haystack、LlamaIndex 等框架的启发,为 Java 生态系统提供了强大而统一的 LLM 工具链。
|
11月前
|
机器学习/深度学习 供应链 搜索推荐
深度学习之需求预测
基于深度学习的需求预测在商业、物流、医疗、能源等多个行业中发挥着重要作用,帮助优化资源分配、提升效率、降低成本。
1019 0
|
安全 搜索推荐 SEO
如何完整搭建一个独立站?
如何完整搭建一个独立站?没有建站基础和经验、能不能自己建站?
1217 14
|
12月前
|
数据挖掘 Python
Pandas实战(2):电商购物用户行为数据分析
Pandas实战(2):电商购物用户行为数据分析
215 1
|
12月前
|
数据挖掘 Python
Pandas实战(3):电商购物用户行为数据分析
Pandas实战(3):电商购物用户行为数据分析
323 1
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能仓储管理系统
使用Python实现智能仓储管理系统
344 4
|
11月前
|
供应链 监控 数据挖掘
淘宝商品详情数据接口:解锁电商数据分析新密码
在数字化时代,电商竞争激烈,精准的数据分析成为制胜关键。淘宝商品详情数据接口如同一把神奇的钥匙,为商家提供商品名称、价格、销量、评价等详细信息,助力洞察市场趋势、优化商品策略、提升运营效率。通过实时更新的数据,商家可以及时调整定价、促销和库存管理,增强竞争力。未来,该接口将带来更多智能化的数据分析工具和精准的市场预测模型,助力电商从业者在竞争中脱颖而出。