天池O2O优惠券比赛总结

一、   赛题简介

本赛题的比赛背景:随着移动设备的完善和普及,移动互联网+各行各业进入了高速发展阶段,这其中以O2O(Online to Offline)消费最为吸引眼球。据不完全统计,O2O行业估值上亿的创业公司至少有10家,也不乏百亿巨头的身影。O2O行业天然关联数亿消费者,各类APP每天记录了超过百亿条用户行为和位置记录,因而成为大数据科研和商业化运营的最佳结合点之一。以优惠券盘活老用户或吸引新客户进店消费是O2O的一种重要营销方式。然而随机投放的优惠券对多数用户造成无意义的干扰。对商家而言,滥发的优惠券可能降低品牌声誉,同时难以估算营销成本。个性化投放是提高优惠券核销率的重要技术,它可以让具有一定偏好的消费者得到真正的实惠,同时赋予商家更强的营销能力。本次大赛为参赛选手提供了O2O场景相关的丰富数据,希望参赛选手通过分析建模,精准预测用户是否会在规定时间内使用相应优惠券。

二、   数据

本赛题提供用户在2016年1月1日至2016年6月30日之间真实线上线下消费行为,预测用户在2016年7月领取优惠券后15天以内的使用情况。

字表段:

Table 1: 用户线下消费和优惠券领取行为

Field

Description

User_id

用户ID

Merchant_id

商户ID

Coupon_id

优惠券ID:null表示无优惠券消费,此时Discount_rate和Date_received字段无意义

Discount_rate

优惠率:x \in [0,1]代表折扣率;x:y表示满x减y。单位是元

Distance

user经常活动的地点离该merchant的最近门店距离是x*500米(如果是连锁店,则取最近的一家门店),x\in[0,10];null表示无此信息,0表示低于500米,10表示大于5公里;

Date_received

领取优惠券日期

Date

消费日期:如果Date=null & Coupon_id != null,该记录表示领取优惠券但没有使用,即负样本;如果Date!=null & Coupon_id = null,则表示普通消费日期;如果Date!=null & Coupon_id != null,则表示用优惠券消费日期,即正样本;




Table 2: 用户线上点击/消费和优惠券领取行为

Field

Description

User_id

用户ID

Merchant_id

商户ID

Action

0 点击, 1购买,2领取优惠券

Coupon_id

优惠券ID:null表示无优惠券消费,此时Discount_rate和Date_received字段无意义。“fixed”表示该交易是限时低价活动。

Discount_rate

优惠率:x \in [0,1]代表折扣率;x:y表示满x减y;“fixed”表示低价限时优惠;

Date_received

领取优惠券日期

Date

消费日期:如果Date=null & Coupon_id != null,该记录表示领取优惠券但没有使用;如果Date!=null & Coupon_id = null,则表示普通消费日期;如果Date!=null & Coupon_id != null,则表示用优惠券消费日期;

 

Table 3:用户O2O线下优惠券使用预测样本

Field

Description

User_id

用户ID

Merchant_id

商户ID

Coupon_id

优惠券ID

Discount_rate

优惠率:x \in [0,1]代表折扣率;x:y表示满x减y.

Distance

user经常活动的地点离该merchant的最近门店距离是x*500米(如果是连锁店,则取最近的一家门店),x\in[0,10];null表示无此信息,0表示低于500米,10表示大于5公里;

Date_received

领取优惠券日期



三、   数据分析

(1)在线下训练集约48.1%的用户参与了线上活动;2.9%的优惠券出现在线上训练集;线下商户与线上商户完全没有交集。

(2)测试集中用户与优惠券均来自线下训练集。

(4)测试集中商家97.22%被训练集中线下商家全部覆盖

(5)测试集中全部是全新的优惠券,与线上与线下训练集的优惠券是完全不同的,所以优惠券的使用情况与优惠券ID无关。

(6)根据经验,我们知道活跃用户更可能使用优惠券,活跃商家所发出的优惠券更可能被使用,用户对某个商家的喜爱程度越高越可能使用这个商家发的优惠券。用户在周末更有时间更可能使用优惠券。

四、   特征提取

1。商户相关:

(1)销售使用优惠券。总优惠券

(2)转移率=销售使用优惠券/总优惠券数。

(3)商家距离用户的平均距离。

(4)商家距离用户最小距离。

(5)商家最大距离用户的最大距离

(6)使用优惠券总销售额:优惠券票率=销售使用/总销售。

(7)优惠券使用比率=销售使用总额/总销售。

2。优惠券相关:

(1)被领取数

(2)消费数

(3)消费率,弃用率

(4)消费平均距离

(5)领取再消费平均距离

3。用户相关:

(1)用户使用优惠券的平均距离。

(2)用户使用优惠券的最小距离。

(3)用户使用优惠券的最大距离。

(4)购买使用优惠券次数。

(5)无领券消费次数。

(6)购买使用优惠券次数。

(7)收到相同优惠券的时间平均间隔、最小间隔、最大间隔。

4.日期

(1)每个月用户收到所有的优惠券计数。

(2)每个月用户收到相同的优惠券计数。

(3)每个月用户收到相同的优惠券最后一个。

(4)每个月用户收到相同的优惠券第一个。

(5)每一天用户收到所有的优惠券计数。

(6)每一天用户收到相同的优惠券计数。

5.折扣率

(1)转换为折扣率。

(2)数据离散化,分为5个区间。

(3)满多少,减多少。

6.距离:

(1)区间离散化,分为10个区间

(2)对每个区间计算领券数,消费数。

(3)领券平均距离。

(4)消费平均距离。

五、   训练模型(xgboost, sklearn)

1.设置基本参数

(1)params={'booster':'gbtree',

 'objective': 'rank:pairwise',

 'eval_metric':'auc',

 'gamma':0.1,

 'min_child_weight':1.1,

'max_depth':5,

'lambda':10,

'subsample':0.7,

'colsample_bytree':0.7,

'colsample_bylevel':0.7,

'eta': 0.01,

'tree_method':'exact',

 'seed':0,

'nthread':12

        }

(2)num_boost_round=3500

(3)evals =watchlist

2.使用xgb.train()方法进行训练集进行训练,得到模型model

3.使用model.predict()方法对预测集进行预测,得到它们在领取优惠券后15天以内的使用情况。

六、   总结与收获

1.做数据分析,确定分析目的与方法论很重要。本题中的数据分析的目的是:是预测用户领取优惠券后15天以内的使用情况,而使用情况的只有两种:即使用与未使用。是二分类问题,考虑到是求解使用概率,使用xgboost算法较为合适。

2.模型的准确性,特征的提取很关键。

3.对使用python进行数据分析、特征提取、模型训练的理解更进一步。

 

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页