『 天池竞赛』O2O优惠券使用预测思路总结

简介:

解决方案概述

本赛题提供了用户线下消费和优惠券领取核销行为的纪录表,用户线上点击/消费和优惠券领取核销行为的纪录表,记录的时间区间是2016.01.01至2016.06.30,需要预测的是2016年7月份用户领取优惠劵后是否核销。根据这两份数据表,我们首先对数据集进行划分,然后提取了用户相关的特征、商家相关的特征,优惠劵相关的特征,用户与商家之间的交互特征,以及利用本赛题的leakage得到的其它特征(这部分特征在实际业务中是不可能获取到的)。最后训练了XGBoost,GBDT,RandomForest进行模型融合。

数据集划分

可以采用滑窗的方法得到多份训练数据集,特征区间越小,得到的训练数据集越多。以下是一种划分方式: split_dataset.png

划取多份训练集,一方面可以增加训练样本,另一方面可以做交叉验证实验,方便调参。

特征工程

赛题提供了online和offline两份数据集,online数据集可以提取到与用户相关的特征,offline数据集可以提取到更加丰富的特征:用户相关的特征,商家相关的特征,优惠劵相关的特征,用户-商家交互特征。

另外需要指出的是,赛题提供的预测集中,包含了同一个用户在整个7月份里的优惠券领取情况,这实际上是一种leakage,比如存在这种情况:某一个用户在7月10日领取了某优惠券,然后在7月12日和7月15日又领取了相同的优惠券,那么7月10日领取的优惠券被核销的可能性就很大了。我们在做特征工程时也注意到了这一点,提取了一些相关的特征。加入这部分特征后,AUC提升了10个百分点,相信大多数队伍都利用了这一leakage,但这些特征在实际业务中是无法获取到的。

以下简要地说明各部分特征:

  • 用户线下相关的特征

    • 用户领取优惠券次数
    • 用户获得优惠券但没有消费的次数
    • 用户获得优惠券并核销次数
    • 用户领取优惠券后进行核销率
    • 用户满050/50200/200~500 减的优惠券核销率
    • 用户核销满050/50200/200~500减的优惠券占所有核销优惠券的比重
    • 用户核销优惠券的平均/最低/最高消费折率
    • 用户核销过优惠券的不同商家数量,及其占所有不同商家的比重
    • 用户核销过的不同优惠券数量,及其占所有不同优惠券的比重
    • 用户平均核销每个商家多少张优惠券
    • 用户核销优惠券中的平均/最大/最小用户-商家距离
  • 用户线上相关的特征

    • 用户线上操作次数
    • 用户线上点击率
    • 用户线上购买率
    • 用户线上领取率
    • 用户线上不消费次数
    • 用户线上优惠券核销次数
    • 用户线上优惠券核销率
    • 用户线下不消费次数占线上线下总的不消费次数的比重
    • 用户线下的优惠券核销次数占线上线下总的优惠券核销次数的比重
    • 用户线下领取的记录数量占总的记录数量的比重
  • 商家相关的特征

    • 商家优惠券被领取次数
    • 商家优惠券被领取后不核销次数
    • 商家优惠券被领取后核销次数
    • 商家优惠券被领取后核销率
    • 商家优惠券核销的平均/最小/最大消费折率
    • 核销商家优惠券的不同用户数量,及其占领取不同的用户比重
    • 商家优惠券平均每个用户核销多少张
    • 商家被核销过的不同优惠券数量
    • 商家被核销过的不同优惠券数量占所有领取过的不同优惠券数量的比重
    • 商家平均每种优惠券核销多少张
    • 商家被核销优惠券的平均时间率
    • 商家被核销优惠券中的平均/最小/最大用户-商家距离
  • 用户-商家交互特征

    • 用户领取商家的优惠券次数
    • 用户领取商家的优惠券后不核销次数
    • 用户领取商家的优惠券后核销次数
    • 用户领取商家的优惠券后核销率
    • 用户对每个商家的不核销次数占用户总的不核销次数的比重
    • 用户对每个商家的优惠券核销次数占用户总的核销次数的比重
    • 用户对每个商家的不核销次数占商家总的不核销次数的比重
    • 用户对每个商家的优惠券核销次数占商家总的核销次数的比重
  • 优惠券相关的特征

    • 优惠券类型(直接优惠为0, 满减为1)
    • 优惠券折率
    • 满减优惠券的最低消费
    • 历史出现次数
    • 历史核销次数
    • 历史核销率
    • 历史核销时间率
    • 领取优惠券是一周的第几天
    • 领取优惠券是一月的第几天
    • 历史上用户领取该优惠券次数
    • 历史上用户消费该优惠券次数
    • 历史上用户对该优惠券的核销率
  • 其它特征

    这部分特征利用了赛题leakage,都是在预测区间提取的。

    • 用户领取的所有优惠券数目
    • 用户领取的特定优惠券数目
    • 用户此次之后/前领取的所有优惠券数目
    • 用户此次之后/前领取的特定优惠券数目
    • 用户上/下一次领取的时间间隔
    • 用户领取特定商家的优惠券数目
    • 用户领取的不同商家数目
    • 用户当天领取的优惠券数目
    • 用户当天领取的特定优惠券数目
    • 用户领取的所有优惠券种类数目
    • 商家被领取的优惠券数目
    • 商家被领取的特定优惠券数目
    • 商家被多少不同用户领取的数目
    • 商家发行的所有优惠券种类数目

模型设计与模型融合

基于以上提取到的特征,进行模型设计与融合。

  • 单模型

    第一赛季只训练了XGBoost单模型提交,连续几周位居排行榜第一位。

    第二赛季训练了XGBoost,GBDT,RandomForest三种单模型,其中GBDT表现最好,XGBoost次之,RandomForest相比之下最差。GBDT和XGBoost单模型在第二赛季仍然名列Top3,融合后效果更佳,尝试了以下两种方法:

  • 加权融合

    得到了单模型的预测结果后,直接将概率预测值进行加权融合,我们简单地用0.65 * GBDT + 0.35 * XGBoost就得到了第一的成绩。

  • Blending模型

    我们尝试了两层的blending模型,首先将训练集分为两部分(D1和D2),一部分用于第一层(level 1)的训练,另一部分用于第二层(level 2)的训练。level1 在D1上训练了4个XGBoost,4个GBDT,4个RandomForest,将这些模型的预测结果作为level2的feature,在D2上训练第二层模型。Blending模型的结果相比单模型有细微的提升,但这点提升相对于模型复杂度带来的计算代价显得微不足道。

  • 转载。原文:https://github.com/wepe/O2O-Coupon-Usage-Forecast

目录
相关文章
|
7天前
|
数据采集 机器学习/深度学习 自然语言处理
大模型应用:大模型时代的XGBoost:传统梯度提升树与大模型的协同应用.103
本文详解XGBoost与大模型融合方法:利用大模型提取文本等非结构化数据的语义Embedding,与XGBoost处理的结构化特征拼接建模,兼顾高精度、强可解释性与语义理解能力,显著提升预测性能。
153 2
|
PyTorch 算法框架/工具
Pytorch中最大池化层Maxpool的作用说明及实例使用(附代码)
Pytorch中最大池化层Maxpool的作用说明及实例使用(附代码)
1738 0
|
2月前
|
人工智能 Linux API
OpenClaw阿里云/本地保姆级部署使用教程!支持的ACP协议详解+免费大模型API配置+避坑指南
2026年开源AI代理框架OpenClaw在发布重磅版本,正式全面支持ACP(Agent Client Protocol)协议,彻底改写AI代理生态协作规则。这一更新让Codex、Claude Code、Gemini等顶级编码AI成为OpenClaw的一级子代理,实现跨模型无缝调度,中英日开发者社区瞬间引爆,单条更新推文最高斩获636万浏览、3699个点赞,标志着AI代理从各自为战的草莽时代,迈入协议统一、工程化落地的标准化新阶段。
1868 1
|
Java Maven
IDEA 2021 整合 SSM 配置离线 Maven 3.8.1 报错大全 Since Maven 3.8.1 http repositories are blocked.
IDEA 2021 整合 SSM 配置离线 Maven 3.8.1 报错大全 Since Maven 3.8.1 http repositories are blocked.
8139 0
IDEA 2021 整合 SSM 配置离线 Maven 3.8.1 报错大全 Since Maven 3.8.1 http repositories are blocked.
|
Linux 应用服务中间件 PHP
Linux下搭建PHP环境-源码编译安装PHP7.2
Linux下搭建PHP环境-源码编译安装PHP7.2
817 0
|
9月前
|
存储 JSON 数据建模
数据建模怎么做?一文讲清数据建模全流程
本文深入解析了数据建模的全流程,聚焦如何将模糊的业务需求转化为可落地的数据模型,涵盖需求分析、模型设计、实施落地与迭代优化四大核心环节,帮助数据团队提升建模效率与模型实用性。
|
7月前
|
安全 数据安全/隐私保护
Dataphin功能Tips系列(73)Dataphin行级权限:构建灵活高效的权限管理体系
Dataphin行级权限通过“控制字段”实现精细化数据管控,有效避免传统字段权限过度开放带来的安全风险,提升权限管理效率与灵活性,满足复杂场景下的数据安全需求。
282 4
|
7月前
|
机器学习/深度学习 自然语言处理 数据可视化
28_主题建模详解:从LDA到BERTopic - 深度解析与教学
主题建模(Topic Modeling)是自然语言处理(NLP)领域的核心技术之一,旨在从大量非结构化文本中自动发现潜在的主题结构和语义模式。随着大语言模型的崛起,主题建模技术也在不断演进,从传统的统计方法到基于深度学习的高级模型,为文本理解、信息检索、舆情分析等任务提供了强大的技术支撑。
1717 0
|
机器学习/深度学习 自然语言处理 PyTorch
从零开始构建nlp情感分析模型!
本教程介绍了如何使用PyTorch和Hugging Face的Transformers库构建一个情感分析模型。主要内容包括导入所需库、读取训练数据集、加载预训练的BERT模型和分词器、定义情感数据集类、划分训练集和验证集、创建数据加载器、设置训练参数、训练模型、评估模型性能以及定义和测试预测函数。通过这些步骤,可以实现一个简单而有效的情感分析模型。
1286 2
|
边缘计算 安全 物联网
5G与4G LTE的比较:主要改进与优势
5G与4G LTE的比较:主要改进与优势
3996 1

热门文章

最新文章