O2O优惠券复盘(二)

回顾:接O2O优惠券预测复盘(一),对模型进行优化

https://blog.csdn.net/weixin_38966454/article/details/90057156


优化模型

优化模型主要体现在以下几个方面:

 

  1. 特征工程
  2. 机器学习算法
  3. 模型集成

本文将尝试采取机器学习算法-----决策树模型进行优化

建立决策树模型

  1. 使用上面的14个特征
  2. 训练集:20160101-20160515;验证集:20160516-20160615

#划分训练集、验证集
df=dfoff[dfoff['label']!=-1].copy()
train=df[(df['Date_received']<'20160516')].copy()
valid=df[(df['Date_received']>='20160516')&(df['Date_received']<='20160615')].copy()
print('Train Set: \n',train['label'].value_counts())
print('Valid Set: \n',valid['label'].value_counts())

特征


#feature
original_feature=['discount_rate','discount_type','discount_man','discount_jian','distance','weekday_type','weekday']+weekdaycols
print('共有特征:',len(original_feature),'个')
print(original_feature)

建立决策树模型


from sklearn.tree import DecisionTreeClassifier

def check_model(data,predictors):
    classifier=DecisionTreeClassifier(random_state=1)
    parameters={
        'max_leaf_nodes':list(range(2,100)),
        'min_sample_split':[8,10,15]}
   # StratifiedKFold用法类似Kfold,但是他是分层采样,确保训练集,测试集中各类别样本的比例与原始数据集中相同。
    folder=StratifiedKFold(n_splits=3,shuffle=True)
    grid_search=GridSearchCV(
        classifier,
        parameters,
        cv=folder,
        n_jobs=-1,#-1表示使用所有的进程
        verbose=1)
    
    grid_search=grid_search.fit(data[predictors],data['label'])
    
    return grid_search

训练



predictors=original_feature
model=check_model(train,predictors)

验证

对验证集中每个优惠券预测的结果计算 AUC,再对所有优惠券的 AUC 求平均

计算 AUC 的时候,如果 label 只有一类,就直接跳过,因为 AUC 无法计算



#valid_predict
y_valid_pred=model.predict_proba(valid[predictors])
valid1=valid.copy()
valid1['pred_prob']=y_valid_pred[:,1]
valid1.head(5)

计算AUC


vg=valid1.groupby(['Coupon_id'])
aucs=[]
for i in vg:
    tmpdf=i[1]
    if len(tmpdf['label'].unique())!=2:
        continue
    fpr,tpr,thresholds=roc_curve(tmpdf['label'],tmpdf['pred_prob'],pos_label=1)
    aucs.append(auc(fpr,tpr))
print(np.average(aucs))

测试



y_test_pred=model.predict_proba(dftest[predictors])
dftest1=dftest[['User_id','Coupon_id','Date_received']].copy()
dftest1['Probability']=y_test_pred[:,1]
dftest1.to_csv('submit_decisontree.csv',index=False,header=False)
dftest1.head(5)

后续将继续优化并修改代码

天池新人赛 O2O 优惠券是一项在线比赛,旨在鼓励参赛者运用数据分析和机器学习技术来解决O2O优惠券发放的问题。O2O即“线上到线下”,是指将线上平台的服务与线下实体商店的购物场景结合起来的商业模式。而优惠券则是一种促销手段,可以为消费者提供折扣、赠品或者其他优惠活动。 这个比赛的主要任务是根据用户的线上活动行为、线下消费行为,以及优惠券的相关信息,预测用户是否会在规定的时间内使用优惠券来购买指定的商品。通过分析大量的历史数据,参赛者需要构建准确的预测模型,同时考虑到用户的行为特征和优惠券的属性,从而提高优惠券的使用效率和商家的销售转化率。 此项比赛的意义在于挖掘并优化O2O优惠券发放策略,提供更精准的目标营销。通过合理分析用户行为和优惠券的匹配关系,商家可以有针对性地向潜在消费者发放优惠券,从而提高用户的购买转化率和忠诚度。同时,这也可以减少优惠券的浪费,降低商家的营销成本。 通过参与天池新人赛 O2O 优惠券竞赛,参赛者将面临来自各方面的挑战和难题。不仅需要运用数据分析和机器学习算法进行预测,还需要对于O2O领域的相关知识有一定的了解。此外,参赛者还可以通过与其他选手的交流和分享经验,提高自己的解题能力以及理解O2O优惠券的商业价值。 总的来说,天池新人赛 O2O 优惠券是一项挑战性的比赛,旨在促进数据分析和机器学习O2O领域的应用,为商家提供更智能化、精确化的优惠券发放策略,同时为消费者提供更个性化、经济实惠的购物体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值