O2O优惠券预测

引言

在O2O优惠卷预测案例中,我们会把所有的数据分为训练数据集和测试数据集,训练数据集和测试数据集是用于训练和验证模型性能的两个不同数据集。

  1. 训练数据集(Training Dataset):训练数据集用于模型的参数估计和学习过程。它是用来训练和拟合机器学习模型的数据集。训练数据集包含了已知的输入特征以及相应的目标值或标签,模型使用这些数据来学习特征与目标之间的关系。通过迭代训练,模型会调整自身的参数以最大程度地减小预测和实际标签之间的误差。
  2. 测试数据集(Testing Dataset):测试数据集用于评估训练好的模型在未知数据上的性能和泛化能力。测试数据集通常包含与训练数据集相似的特征,但是不包含目标值或标签,因为我们想要使用模型进行预测并将其与真实的目标值进行比较。通过对测试数据集的预测结果与真实标签进行比较,可以评估模型的准确性、精确度、召回率等性能指标。

训练数据集和测试数据集的目的是为了验证模型在未知数据上的表现,以评估其泛化能力。它们需要从整体数据中随机选择,并且应该是相互独立的样本,以确保评估结果客观有效。一般而言,训练数据集占总数据集的大部分(例如 70-80%),而测试数据集占总数据集的一小部分(例如 20-30%),具体比例取决于具体问题和数据集规模。

需要注意的是,为了更好地评估模型的性能,还可以使用交叉验证(Cross Validation)方法,将数据集分割为多个训练和测试子集,多次训练和测试模型,并综合评估结果。这有助于更准确地估计模型的泛化能力和鲁棒性。

一、项目背景与目标

1、项目背景

  • 随着移动设备的完善和普及,移动互联网+各行各业进入了高速发展阶段,这其中以O2O(Online to Offline)消费最为吸引眼球。
  • O2O行业天然关联数亿消费者,各类APP每天记录了超过百亿条用户行为和位置记录。
  • 以优惠券盘活老用户或吸引新客户进店消费是O2O的一种重要营销方式。
  • 随机投放的优惠券会对多数用户造成无意义干扰,且影响商家声誉。
  • 个性化投放是提高优惠券核销率的重要技术。

2、项目目标

  • 精准预测用户是否会在规定时间内使用相应优惠券。

二、数据说明

  • 提供用户在2016年1月1日至2016年6月30日之间真实线上线下消费行为,预测用户在2016年7月领取优惠 券后15天以内的使用情况。
  • 为了保护用户和商家的隐私,所有数据均作匿名处理,同时采用了有偏采样和必要过滤。
    Table 1: 用户线下消费和优惠券领取行为
    ccf_offline_stage1_train.zip
    在这里插入图片描述
    Table 2:用户O2O线下优惠券使用预测样本
    ccf_offline_stage1_test_revised.csv
    在这里插入图片描述
    Table 3:选手提交文件字段
    sample_submission.csv
    在这里插入图片描述

三、数据预处理

1、正样本

  • Date!=null & Coupon_id != null,且Date-Date_received <= 15天。

2、负样本

  • Date=null & Coupon_id != null(领取了优惠券但没有使用)
  • Date!=null & Coupon_id != null,但是Date-Date_received > 15天

3、普通样本

  • 其他用户

4、处理特征值 Discount_rate

  • 300:20变为1-20/300=0.93

5、处理门槛

  • 300:20的门槛为300

6、处理时间——从领取到消费的天数

  • 领取时间为2022-02-12,消费时间为2022-02-20,则最后结果为8

四、特征构建

  • 哪些因素对你是否使用商家赠送的优惠券有影响?
    折扣力度、店铺距离、商品品牌、商家知名度……
  • 特征构建方向:
    1. 和优惠券相关
    2. 和商家相关
    3. 和用户相关
    4. 交互关系
  • 用户特征
    1、用户在商家15天内使用优惠卷的次数
    2、用户在商家领取优惠卷数
    3 、用户在商家消费的次数(使用优惠卷和不使用优惠券)
    4、 用户15天内在此商户核销率:使用的次数 / 消费的次数
    5、用户核销过优惠卷的不同商家数量(对商家去重)
    6、用户优惠券使用间隔天数(最小天数、平均天数)(从领券到消费的天数)
    7、用户-商家领券消费距离(最大/最小/平均距离)
    8、用户核销优惠券的平均门槛
  • 商家特征
    1、商户合计被消费次数
    2、商户被领券次数
    3、商户被领券消费次数
    4、商户用券率 : 商户被领券消费次数 / 商户合计被消费次数
    5、商户核销率 : 商户被领券消费次数 / 商户被领券次数
    6、此商户中所有消费者15天内核销总数、核销率 :此商户中所有消费者15天内核销总数 / 商户被领券次数
    7、商户-消费者距离(max/mean已核销的)
    8、商家已使用的优惠券门槛(平均、最小、最大)
    9、此商家中各个优惠券被使用的平均间隔时间和最少间隔时间(从领券到消费的天数)
  • 优惠券特征
    1、优惠价的流行度
    2、各类优惠券type被领取次数
    3、各类优惠券type被使用次数
    4、各类优惠券type核销率 : 各类优惠券type被使用次数 / 各类优惠券type被领取次数
    5、各类优惠券type15天内核销数量
    6、各类优惠券type15天内核销率 : 各类优惠券type15天内核销数量 / 各类优惠券type被领取次数
    7、各类优惠券type被使用的距离(max/mean)
    8、各类优惠券type被使用的时间间隔(mean/min)(从领券到消费的天数)
  • 用户——优惠券联合特征
    1、用户领取特定优惠券次数
    2、用户使用特定优惠券次数
    3、用户特定优惠券核销率
    4、15天核销次数
    5、15天核销率
    6、时间间隔
  • 用户——商户联合特征
    1、用户在特定商家消费次数
    2、用户在特定商家领取优惠券次数
    3、用户在特定商家使用优惠券次数
    4、用户在特定商家优惠券核销率
    5、用券率
    6、15天核销次数
    7、15天核销率
    8、时间间隔
  • 商户——优惠券联合特征
    1、商户领取特定优惠券次数
    2、商户使用特定优惠券次数
    3、商户特定优惠券核销率
    4、15天核销次数
    5、15天核销率
    6、时间间隔
  • 用户——商户——优惠券联合特征
    1、用户-商户-优惠券-领取次数
    2、用户-商户-优惠券-使用次数
    3、商户特定优惠券核销率
    4、15天核销次数
    5、15天核销率

五、特征拼接

把上面提取出来的特征拼接到测试集和训练集中
训练集:
datasets=pd.merge(datasets,Merchant_sale_sum,on=‘Merchant_id’,how=‘left’)
测试集:
datasets_yc=pd.merge(datasets_yc,Merchant_sale_sum,how=‘left’,on=‘Merchant_id’)
对此训练集和测试集前后填充空值

#处理空值
datasets_yc.fillna(method='ffill',inplace=True)
datasets_yc.fillna(method='bfill',inplace=True)

六、模型训练

对feature参数,在此之前所有提取出来的特征值都加进去,再调用这个函数

#建模函数
def get_train_model(datasets=datasets,model=GradientBoostingClassifier(n_estimators=100,max_depth=3),features=['Discount_rate','Distance'],label='label'):
    #4.提取正样本和负样本组合成新的样本
    data_pro = datasets[datasets[label]==1]
    data_neg = datasets[datasets[label]==0]
    # datas = data_pro.append(data_neg)
    datas = pd.concat([data_pro,data_neg],axis =0)  #按列连接
    datas.reset_index(inplace=True)

    #5.提取两列特征值进行建模
    X = datas[features]
    y = datas[label]
    #划分训练集和测试集
    x_train,x_test,y_train,y_test = train_test_split(X,y,test_size=0.2,stratify=y)
    model = model
    model.fit(x_train,y_train)
    pre = model.predict_proba(x_test)[:,1]
    #评估模型
    auc = roc_auc_score(y_test,pre)
    return model,auc

七、模型评估与预测

调用get_predict函数,并把结果存入result_final12.csv中

#预测函数
def get_predict(datas=datasets_yc,model=model,features=['Discount_rate','Distance'],outfiles='result01.csv'):
    data_yc = datas[features]
    pre_yc = model.predict_proba(data_yc)[:,1]
    result = datas[['User_id','Coupon_id','Date_received']]
    result['probability'] = pre_yc
    #保存为提交所用的csv文档
    result.to_csv(outfiles,index=None,header=None)
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
O2O优惠券使用预测数据集 背景描述 随着移动设备的完善和普及,移动互联网+各行各业进入了高速发展阶段,这其中以O2O(Online to Offline)消费最为吸引眼球。 据不完全统计,O2O行业估值上亿的创业公司至少有10家,也不乏百亿巨头的身影。O2O行业天然关联数亿消费者,各类APP每天记录了超过百亿条用户行为和位置记录,因而成为大数据科研和商业化运营的最佳结合点之一。 以优惠券盘活老用户或吸引新客户进店消费是O2O的一种重要营销方式。然而随机投放的优惠券对多数用户造成无意义的干扰。对商家而言,滥发的优惠券可能降低品牌声誉,同时难以估算营销成本。 个性化投放是提高优惠券核销率的重要技术,它可以让具有一定偏好的消费者得到真正的实惠,同时赋予商家更强的营销能力。 本数据集为研究人员提供了O2O场景相关的丰富数据,通过分析建模精准预测用户是否会在规定时间内使用相应优惠券。 数据说明 注意: 为了保护用户和商家的隐私,所有数据均作匿名处理,同时采用了有偏采样和必要过滤。 offline_train.csv | 用户线下消费和优惠券领取行为表 字段 说明 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 ,则表示用优惠券消费日期,即正样本; online_train.csv | 用户线上点击/消费和优惠券领取行为表 字段 说明 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,则表示用优惠券消费日期,即正样本; offline_test.csv | 用户O2O线下优惠券使用预测样本 字段 说明 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 领取优惠券日期 研究人员需要为上述预测预测出15天内用户线下使用优惠券的概率,其中 user_id, coupon_id 和 date_received 均来自上述预测样本, 而 Probability 为预测值。 字段 说明 Coupon_id 优惠券ID Date_received 领取优惠券日期 Probability 15天内用券概率,需预测给出 问题描述 数据提供了用户在2016年1月1日至2016年6月30日之间真实线上线下消费行为,可以预测用户在2016年7月领取优惠券后15天以内的使用情况。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值