七月在线机器学习集训营“千里马”——天猫买了还买预测


这个是比赛链接:https://tianchi.aliyun.com/com ... 31674
赛题介绍

商家有时会在特定日期(例如“Boxing-day”,“黑色星期五”或“双11”)进行大促销(例如折扣或现金券),以吸引大量新买家。许多吸引的买家都是一次性交易猎人,这些促销可能对销售产生很小的长期影响。为了缓解这个问题,商家必须确定谁可以转换为重复买家。通过瞄准这些潜力忠诚的客户,商家可以大大降低促销成本,提高投资回报率(ROI)。
众所周知,在线广告领域,客户定位极具挑战性,特别是对于新买家而言。但是通过Tmall.com长期积累的用户行为日志,我们或许可以解决这个问题。在这个挑战中,我们提供了一套商家及其在“双11”日促销期间获得的相应新买家。你的任务是预测对于指定商家的新买家将来是否会成为忠实客户。换句话说,您需要预测这些新买家在6个月内再次从同一商家购买商品的概率。一个包含大约20万用户的数据集用于训练,还有一个类似大小的数据集用于测试。与其他比赛类似,您可以提取任何特征,然后使用其他工具进行训练。您只需提交预测结果进行评估。

评价指标是:AUC(Area under the ROC curve) 可以利用sklearn roc_auc_score方法计算

1.正负样本比例。
label 数量 样本比例
0 244912 0.938849
1 15952 0.061151
样本不均衡,这里并没有处理这个问题,实际当中可能回购率也就在0.06左右。
群里有人统计过预测值的分布,大部分都在0.06左右,和这个差不多。

2.发现用户log文件里面有重复的数据,删除里面重复数据
没删除数据有54925330,删除后41175132,减少了 13750198条。用删除重复数据的log文件做的特征工程。现在想想删除可能不对,有的用户一天内可以对一家商铺操作多次。(内存太小)

3.下面是按照时间戳做统计,发下双11统计量要比之前的要高。
所以针对这个做了一个每天的统计量,然后做特征重要度,发现1110和1111两天特征重要度要高,其余很小,所以只保留了这两个日期的特征。(可以重点做一些关于1111的特征)

4.在数据量大的情况下,我试着做了下,商铺在各个年龄段及性别下的回购率作为特征进行训练,交叉验证的结果在77左右,做了特征重要度分析,这个特征重要度很高,与第二个特征相差较大,怀疑特征会导致过拟合,提交了一下,线上63左右。
因此放弃了所有关于回购率的特征。

5.特征方面基本上从三个方面考虑:用户、商铺及用户+商铺,统计每个用户出现的次数、商铺的次数、用户+商铺出现的次数等统计信息。(特征思维导图中有全部内容)

6.在做完上述特征后,发现item_id cat_id brand_id没有用到,然后计算用户对商铺的item\brand\cat列表,利用sklearn中的CountVector转换成向量,与其他特征合并进行训练。单独对这三个特征进行测试,5折cv可以达到0.68的成绩。(可以通过这个考虑做一下商铺+年龄+性别对item、brand、cat的特征向量)

7.这个题目的意义是看用户是否在同一家商铺出现回购,因此action_type这个特征应该是很重要的,据此统计了用户+商铺+action_type出现次数,并对action_type进行ohe表示,表述这个用户在该商铺下,操作是变化。在特征重要度分析发现action_type=2(2对应购买)时重要度较高。

8.模型部分使用了lightgbm和xgboost两个模型,为了融合使用随机种子切分全部数据来训练5个lgb模型和5个xgb模型,然后使用部分特征分别训练了5个lgb模型和5个xgb模型,将模型输出使用sigmoid的反函数求反,然后计算20个模型的算数平均,最后在使用sigmoid函数计算最终的概率值。
def sigmoid_ver(x):#sigmoid反函数
    return np.log(x / (1 - x))
def sigmoid(x):
    return 1 / (1 + np.e ** (-x))

该方法经过试验会比直接取平均要好一些,大概在万分位左右。

9.模型部分考虑过catboost、nn及FM,nn使用了3层512节点的DNN效果不是很好,cv只能到0.63左右。

10.可以试着在造出来的特征基础上继续构造特征,这部分特征也是很重要的。

***附件为一些特征细节和模型方案
写的不好,欢迎大家批评指正,如果没有及时回复可以发我邮箱:s492120890@126.com
已邀请:

要回复问题请先登录注册

返回顶部