前言
实验逐渐接近尾声,有了之前那么多天的铺垫,今天开始进行模型训练。
正文
今天来完成任务一的实验八:参照实验指导书提供的baseline
源码,增加更多的特征(至少5个),完成模型参数训练,在阿里云天池平台提交结果。
初次尝试
首先直接跑一下baseline
源码看看效果如何,不过跑之前先把数据预处理打标部分换成上一个实验的代码。
baseline
使用了一些基础特征如:
- 领券日是周几
- 领券日是否为休息日
- 用户领券数
- 用户领取特定优惠券数
- 用户当天领券数
- 用户当天领取特定优惠券数
- 用户是否在同一天重复领取了特定优惠券
baseline
初始设定训练5167轮batch
,阿里天池提交结果为0.6964。后来试了下把训练次数增加到10000,结果反而还降了,应该是过拟合了。
增加特征
接下来尝试加入更多特征,将特征工程代码替换为:
1 | # 标签区间特征 |
不过一开始这里有个问题,在数据集融合这里一开始没有join_axes=[dataset.index]
这个代码,导致融合出来的index超出原有数量,不过之前提取特征的代码没加这个也没出现问题有点奇怪。
参考github上曾经排名第一的团队的项目文档中提供的特征:
用户线下相关的特征
- 用户领取优惠券次数
- 用户获得优惠券但没有消费的次数
- 用户获得优惠券并核销次数
- 用户领取优惠券后进行核销率
- 用户满0~50/50~200/200~500 减的优惠券核销率
- 用户核销满0~50/50~200/200~500减的优惠券占所有核销优惠券的比重
- 用户核销优惠券的平均/最低/最高消费折率
- 用户核销过优惠券的不同商家数量,及其占所有不同商家的比重
- 用户核销过的不同优惠券数量,及其占所有不同优惠券的比重
- 用户平均核销每个商家多少张优惠券
- 用户核销优惠券中的平均/最大/最小用户-商家距离
用户线上相关的特征
- 用户线上操作次数
- 用户线上点击率
- 用户线上购买率
- 用户线上领取率
- 用户线上不消费次数
- 用户线上优惠券核销次数
- 用户线上优惠券核销率
- 用户线下不消费次数占线上线下总的不消费次数的比重
- 用户线下的优惠券核销次数占线上线下总的优惠券核销次数的比重
- 用户线下领取的记录数量占总的记录数量的比重
商家相关的特征
- 商家优惠券被领取次数
- 商家优惠券被领取后不核销次数
- 商家优惠券被领取后核销次数
- 商家优惠券被领取后核销率
- 商家优惠券核销的平均/最小/最大消费折率
- 核销商家优惠券的不同用户数量,及其占领取不同的用户比重
- 商家优惠券平均每个用户核销多少张
- 商家被核销过的不同优惠券数量
- 商家被核销过的不同优惠券数量占所有领取过的不同优惠券数量的比重
- 商家平均每种优惠券核销多少张
- 商家被核销优惠券的平均时间率
- 商家被核销优惠券中的平均/最小/最大用户-商家距离
用户-商家交互特征
- 用户领取商家的优惠券次数
- 用户领取商家的优惠券后不核销次数
- 用户领取商家的优惠券后核销次数
- 用户领取商家的优惠券后核销率
- 用户对每个商家的不核销次数占用户总的不核销次数的比重
- 用户对每个商家的优惠券核销次数占用户总的核销次数的比重
- 用户对每个商家的不核销次数占商家总的不核销次数的比重
- 用户对每个商家的优惠券核销次数占商家总的核销次数的比重
优惠券相关的特征
优惠券类型(直接优惠为0, 满减为1)
优惠券折率
满减优惠券的最低消费
历史出现次数
历史核销次数
历史核销率
- 历史核销时间率
领取优惠券是一周的第几天
领取优惠券是一月的第几天
历史上用户领取该优惠券次数
历史上用户消费该优惠券次数
历史上用户对该优惠券的核销率
其它特征
这部分特征利用了赛题leakage,都是在预测区间提取的。
用户领取的所有优惠券数目
用户领取的特定优惠券数目
- 用户此次之后/前领取的所有优惠券数目
- 用户此次之后/前领取的特定优惠券数目
- 用户上/下一次领取的时间间隔
用户领取特定商家的优惠券数目
- 用户领取的不同商家数目
用户当天领取的优惠券数目
用户当天领取的特定优惠券数目
- 用户领取的所有优惠券种类数目
商家被领取的优惠券数目
商家被领取的特定优惠券数目
- 商家被多少不同用户领取的数目
- 商家发行的所有优惠券种类数目
灰色背景的特征被提取出来。不过在数据去重的时候出现了错误:
1 | ValueError: Buffer has wrong number of dimensions (expected 1, got 2) |
之前都是好好的,现在就有问题了,暂时还没找到原因,就先注释掉了。结果只后又在训练函数出现错误:
1 | ValueError: feature_names must be unique |
原来是之前复制粘贴代码特证名忘了改,名称称重复导致的错误。
同样设定训练5167轮batch
,阿里天池提交结果为0.7193,虽然不多好歹还是上升了一点了,说明新提取的特征还是有点用处。
结语
没想到这个实验从1月17号开始做,中途遇到点困难又错过了第一次提交的机会,搁置了一短时间,到2月4号才又捡起来完成。