注:Mercado Libre 链接
https://www.mercadolibre.com/
简介
早期的产品提交页面无需提供尺寸或重量信息
Mercado Libre 属于综合的线上平台,其中的产品既可能是新款手机(重量介于 7 至 14 盎司,大小约为 5 x 5 x 2 英寸),也可能是重达 175 磅、大小为 24 x 24 x 35 英寸的二手洗碗机。
起初,我们实现了一种基于查询的预测方法:先过滤异常订单,然后根据过往订单中的产品尺寸确定尺寸和重量。这些数据源于我们的运营中心、转运流程以及第三方物流。当然,此方法适用范围较小(已测量过尺寸的产品占比较低)。
之后,在第二种方法中,我们根据单个产品特征(如类别和品牌/型号)的统计汇总构建简单模型,并使用产品相似性指标建立新产品到旧产品的映射。这种预测的准确率普遍较低,而且在许多情况下会因样本量不足而无法进行预测。
因此我们需要建立回归模型,以便通过产品名称、描述、类别和一些其他属性等信息推测产品的尺寸和重量。重要的是,这些属性既包括结构化数据,也包括非结构化数据,因此我们很难使用传统统计方法构建模型。该模型在 1 分钟内预测并保存 3000 个结果(一天 400 万次),其 API 每分钟响应 20 万次请求(一天 2.88 亿次,主要为预保存请求)。
数据和特征
当准备下一版预测方法时,我们在回顾商品清单发布流程后,确定模型的关键特征至少需包含:产品名称、产品描述(自由文本)、类别和品牌。当然,这些数据需经清洗和整理才能用于我们的项目。项目 ETL (抽取转化加载。即 Extract, Transform and Load)部分的软件栈基于 scipy、pandas、numpy 和 scikit-learn。在确定特征后,下面我们对数据进行矢量化。
模型的特征联合
为了对文本的两个主要特征进行编码,我们将所有字词转化为 token 并统一为小写格式。接下来,我们需要找到合适的矢量表示法。在项目的首次迭代中,我们决定通过使用关键字和 TF-idf 的方法进行实验(未来我们将探索使用 LSTM 的方法)。TF-idf 是一种向量化手段, 将其应用至文本数据, 便可把它们从转化了的token文档变换为矩阵。
关于模型
我们使用的模型是一个用 TensorFlow Keras 实现的多层感知机(TensorFlow 作为后端)。此外,通过对学习率、丢弃率、层数、内核数和内核大小执行网格搜索,我们找到了最优的模型结构和超参数(现在来看,随机搜索是一种更好的方法)。
至于损失函数,我们则通过多次实验来了解哪一种更为合适:
mean_squared_error 提供一种可过拟合异常值的测量方法,即便错误惩罚严重时也不例外。
mean_absolute_percentage_error 可以对小件产品与异常值进行很好的区分( 约有 50%的物品重量低于 1 kg)。
mean_absolute_error 适用于对所有产品类别进行大量常规优化。
不同损失函数类型的权重误差分布
神经网络模型的整体结构
(título 标题,descripción 产品描述, marca 品牌, otros 其他)
提供预测服务
目前,我们在产品提交页面和物流中心包装计算器使用了该模型,以便预测货架占用率,并在产品包装的最终阶段使用合适的包装。
现在, API 每分钟可提供 3000 次预测(即一天 400 万次预测)。对于配备 6 核 64G RAM 的实例(包含 13 个约 900MB 的 worker),此模型的推理时间为 30 毫秒。
以下是 JSON 响应示例:
1{
2 “dimensions”: {
3 “height”: 9,
4 “length”: 30,
5 “weight”: 555,
6 “width”: 24
7 },
8 “source”: {
9 “identifier”: “MLM633066627”,
10 “origin”: “high_coverage”
11 }
12}
我们计划日后进行更多实验,以便提高模型质量,并根据物流中心提供的反馈优化预测结果。借助 TensorFlow,我们能够快速设计、迭代模型,并将其部署至生产环境。
致谢
Pymes 团队全体成员,尤其是 Mirko Panozzo、Conrado García Berrotarán、Kevin Clemoveki、Diego Piloni、Martín Ciruzzi 和 Esteban Tundidor。
感谢 Francisco Ingham 在语法、样式和内容方面提供的帮助。
感谢 Joaquin Verdinelli 帮助协调与 Google 的编校和沟通。
感谢 Constanza Stahl 在图形方面提供的帮助。
感谢 Cynthia Bustamante 帮助协调整个研究过程
更多案例:
(点击 “阅读原文“,提交案例,我们将尽快和你联系)