考虑到较为远的信息参考价值没有那么明显(比如:某用户近一个月的行为会对接下来5天是否发生购买行为产生较大的影响,而时间更远的行为的指导意义不大),所以采用了一个月的数据作为训练集,也就是2016-03-10 至 2016-04-11的数据作为训练集,选取和需要预测时间长度相同的时间段 2016-04-11 至 2016-04-16的数据对训练集中的记录打label。
这里需要注意,不可以只打第8类(P子集)的label,因为用户的购买不同商品的行为是具有相似性的,如果只是考虑第8类商品,会使样本十分不均衡!
选取比赛需要预测的时间点前一个月的数据构造测试集,也就是2016-03-15 至 2016-04-16的数据.然后对其中有行为的记录进行预测,过滤出第8类商品作为提交的答案.
年龄 -> one-hot编码,性别 -> one-hot编码,用户等级 -> ont-hot编码
用户的三种属性,a1,a2,a3 -> one-hot编码
用户行为 -> one-hot编码,巧妙运用编码之后求和累计用户-商品对的行为次数
用户行为 -> one-hot编码, 随后仅统计sku_id的行为累计次数,也即使用groupby('sku_id').sum()
用户行为 -> one-hot编码, 随后仅统计user_id的行为累计次数,也即使用groupby('user_id').sum()
用户行为的累计数按照时间进行衰减处理
差评率,好评率,评论数目等级 -> one-hot编码
对于用户而言,不同用户行为下单转化率特征
对于商品而言,不同用户行为下单转化率特征
对于上面的特征使用不同的时间窗口获得不同的统计特征值
亮点1:使用滑窗的统计特征
亮点2:由于最近的行为的影响更大,所以使用了统计量随时间衰减的特征
亮点3:对用户行为特征one-hot编码之后,使得行为次数的统计变得十分方便
亮点4: 构造的线下验证集与线上基本一致,使得线上线下同增同减
思考1:当时的瓶颈应该在覆盖率上,也就是选取一个月的数据作为测试集,覆盖率不够,导致实际发生购买行为的样本根本不在测试集中出现,就更谈不上准确的预测了
思考2:这个问题是一个样本不均衡的问题,也就是正样本的数量不多,由于是第一个比赛,没有想到这个问题