【机器学习】天池O2O优惠券使用预测_系统性总结与心得

本文作者分享了在天池O2O优惠券使用预测大赛中获得第二名的经验,包括赛题背景、整体思路、开发环境、数据处理、单指标方法和机器学习方法。重点介绍了使用XGboost模型进行预测,以及如何通过特征工程和模型融合提升预测效果。
摘要由CSDN通过智能技术生成

Preface:上半年参加天池的O2O优惠券预测赛排名第二,同时参加了学校数据仓库老师的课程改革建设团队,于是把参赛经验总结成文,准备分享给该课程的学弟学妹。现在我把总结的参赛教程文章也发到CSDN上来,供参赛的同学们参考,也希望能得到更多的指教。

 

1 赛题背景

1.1 题目介绍

  • 比赛背景:赛题的发布网址如下:https://tianchi.aliyun.com/competition/gameList.htm#tab%3D%E5%85%A5%E9%97%A8%E8%B5%9B%26pageIndex%3D1。大家可以在这里提交自己的结果数据集,每天的10点和22点服务器会刷新成绩评测新提交的结果。
  • 赛题目标:提供用户在2016年1月1日至2016年6月30日之间真实线上线下消费行为数据,需要预测用户在2016年7月领取优惠券后15天以内的使用情况。
  • 赛题数据:包括三个数据表。TABLE1(用户线下优惠券消费记录),TABLE2(用户线上优惠券消费记录),TABLE3(待预测的样本数据,是用户线下消费记录)。在本教程中,我们只使用TABLE1来构造训练集,因为如果把TABLE1、TABLE2同TABLE3数据比较,会发现TABLE3的格式与TABLE1相同但与TABLE2有差异,从而能够推断TABLE1与TABLE3为同源数据,使用TABLE1的数据构造训练集更合适。比赛结果也证明只使用TABLE1的数据来训练效果良好。当然,TABLE2也可以作为辅助预测的数据使用。
  • 赛题模型:预测优惠券是否会在15天内核销可以看作一个数据挖掘中的分类问题。决策树是解决此类问题的常用模型,在本教程中我们将使用Xgboost(改进梯度提升决策树)模型。

1.2 整体思路

       教程给出了两个完全独立的赛题解决方式:单指标方法和机器学习方法。

  • 单指标方法是为了给读者一个简单的初步参赛体验,这也是笔者第一次提交结果时所用的方法,即只用一个基础统计指标来拟合优惠券的预期核销率,十分容易上手。
  • 机器学习方法是完整的使用机器学习模型参赛的流程教学,涵盖了特征工程和XGboost模型使用两部分。建议读者将本教程的解析和源代码结合起来阅读,更方便理解。源代码已经添加了较为详细的注释。

1.3 开发环境

  • 推荐Anaconda3+Python3+Pycharm的开发环境,这种搭配下撰写代码以及python包的管理都方便,省去了很多不必要的麻烦。

2 数据集情况及处理

2.1 数据集预处理(datapre.py)

       首先明确 O2O优惠券使用预测是二分类问题。要应用机器学习模型来分类,则数据集中必须有目标变量,这样才能把训练集“喂给”机器学习模型让它寻找特征属性到目标变量的映射规则。

因此教程的第一项就是在训练集中构造目标变量。本次竞赛的目标是:“预测用户在2016年7月领取优惠券后15天以内的使用情况”,所以我们需要为训练集构造一个“flag”属性,“flag”标识某条记录是否为领券后15天内核销了优惠券的记录。对于正向数据我们标记为1,负向数据标记为0。这一操作在datapre.py文件中完成,该操作最后生成了文件“off_flag.csv“,这一数据集是2.2节数据集划分的基础。

2.2 数据集划分(datapre.py)

这部分操作我们会划分出4个数据集(da

  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值