2019种子杯 回顾及总结



  • 2019种子杯 回顾及总结

    赛题回顾

    • 赛题简介

      ​ 对于各大电商平台而言,良好的物流体验是提升用户满意度的一个重要手段。而准确预估订单的送达时间,不仅可以为用户下单提供有效决策,也可以让用户提前感知,合理规划收货时间。我们把如何准确预估每笔订单的送达时间,定义为订单物流时效预测问题。

      ​ 该问题的主要挑战是整个订单的履约流程较长,不仅涉及到下单-发货-揽件-走件-签收等多个环节,而且每个环节影响的因素也截然不同。同时,由于订单天然存在密度差异性,因此无论是从商家还是物流公司还是消费者(收货地)角度看,数据都不可避免地存在不平衡问题。 因此本次大赛需要选手综合运用数学建模,模型设计,数据挖掘等多种技术手段,从而构建出高精度的算法模型,提升订单物流时效预测的精度。

    • 评价标准 Metrics:

      • 误差率 rankScore(精确到小时)
        • 预期签收时间和实际签收时间的MSE值(均方根误差)
        • rankScore = MSE(real_signed_time ,pred_signed_time)
      • 准时率 OnTimePercent (精确到天)
        • onTimePercent = Count(pred_singed_date <= real_signed_date)
        • 要求准时率 ≥ 0.98
      • 解释:本次评分考虑两个因子,一方面考虑到货时间均方根误差,另外一个就是考虑是否有天级别延迟。排名首先要求准时率 ≥ 0.98,在此基础上对误差率进行排名。

    数据集

    • 训练、测试数据集的格式如下,所有字段间用Tab健(‘\t’)分隔,Utf-8编码。以下标注*的字段为测试集时不可用字段。数据进行过按比例抽样和脱敏操作。
    字段 数据类型 备注
    uid 买家id int
    plat_form 交易平台 int 贝贝/贝店/贝仓...
    biz_type 业务来源 int 不同业务线售卖
    create_time 订单创建时间 string yyyy-MM-dd hh:mm:ss
    payed_time 订单支付时间 string yyyy-MM-dd hh:mm:ss
    product_id 商品id int
    cate1_id 商品类目1级 int
    cate2_id 商品类目2级 int
    cate3_id 商品类目3级 int
    preselling_shipped_time 预售发货时间 string yyyy-MM-dd hh:mm:ss 存在噪声数据
    seller_uid 商家id int
    company_name 商家公司id int
    *lgst_company 物流公司id int
    *warehouse_id 仓库id int
    *shipped_prov_id 发货省份id int
    *shipped_city_id 发货城市id int
    rvcr_prov_name 收货省份id int
    rvcr_city_name 收货城市id int
    *shipped_time 发货时间 string yyyy-MM-dd hh:mm:ss 取决于商家填写(可能存在延迟)
    *got_time 揽件时间 string yyyy-MM-dd hh:mm:ss 取决于物流公司信息(可能存在延迟)
    *dlved_time 走件时间 string yyyy-MM-dd hh:mm:ss
    *signed_time 签收时间 string yyyy-MM-dd hh:mm:ss

    Baseline

    • github repo

    • 模型设计

      • 对离散特征做embedding(如嵌入为100维向量)

      • 将所有embedding后的向量做concatenate,即拼接成一个一维向量

      • 将concatenate后的高维向量分别过2个3层全连接网络(Fully Connected Network)

        • 其中一个FC网络预测天级时间(签收-发货的天数)
          • 用于控制天级准时率
        • 另一个FC网络预测小时级的时间(收获当天的时间)
          • 精确的预测时间
      • 自行设计loss函数

        • 增大对预期签收时间晚于实际签收时间情况的惩罚

    选手模型/方法汇总

    • 传统机器学习模型
      • 贝叶斯模型,随机森林模型
      • 提升树算法:xgboost / lightgbm / catboost / Extraboost
    • 基于baseline的方法
      • 保留embedding层,修改后续网络结构
      • 使用新的特征,如支付时间
      • 修改Loss函数
      • 修改激活函数
        • 尝试tanh / relu / leakyrelu等激活函数
      • 修改网络初始化方式
        • 尝试xavier_normal / kaiming_normal
      • baseline with convolution
        • 将特征embedding后的向量拼成feature map,再进行卷积
    • Transformer
      • 网络结构:embedding + Transformer + FC
    • CNN
      • 网络结构:embedding + CNN + FC
    • 图神经网络
      • 暂无选手跑出不错的效果
    • Tricks
      • early stopping
      • 五折验证法(充分使用数据集)
      • 设置学习率策略,如指数衰减+平滑
      • 人为制定规则 / 数据调整
        • 有效提高准时率,但同时大概率提高了误差率
      • 考虑快递员的工作时间(如上午8-12点,下午2-6点)
      • 模型融合

    关键点

    • 离散特征和非离散特征的处理

      • 离散特征 embedding / one-hot
      • 非离散特征,先离散化后再处理
    • 数据分析、特征工程与理解赛题

      • 通过数据分析发现数据集的一些潜在规律
        • 如特征之间的关系系数及数据不平衡现象等
          • 如计算特征之间的Pearson系数
      • 找到冷数据或冷特征
      • 设计出新的特征
        • 如日期所在一周中的星期数等
      • 可将赛题理解为回归问题或分类问题
        • 回归问题预测总时间,如精确的小时和天数
        • 分类问题预测小时数或者天数,如0 - 23的小时数
        • 对赛题的理解对准时率有较大影响
          • 理解为回归问题对控制准时率有较大帮助
    • Loss function / cost function设计

      • 设计组合型loss,通过设置loss不同部分的权重来调整准时率
      • 涉及到权重超参数的搜索或根据经验来设置
    • 找准发力点

      • 在时间有限,计算资源有限的情况下,如何找准发力点,是取得好效果的关键

    总结

    ​ 今年种子杯的题目非常贴近生活,赞助商贝贝集团给本次比赛提供了一份优质的数据集,但不得不说本次种子杯是贝贝集团赞助种子杯三年以来难度最高的一次,要求参赛选手对赛题理解透彻且做足数据分析的功课,不迷信于学术界最新最好的模型,自己设计的模型也可以达到不错的效果,本次比赛也彰显了参赛选手的想象力和创造力,很多选手是在传统机器学习模型或者baseline的基础上进行改进和创新,取得了不错的效果。

    ​ 据说,比赛的相关数据集不久后会开源,各位感兴趣的同学可自行探索。

    附:相关参考论文连接


 

Copyright © 2018 bbs.dian.org.cn All rights reserved.

与 Dian 的连接断开,我们正在尝试重连,请耐心等待