各位小伙伴们大家好,经主办方同意,楼主开源了基于DeepCTR实现的多任务学习模型MMOE。
完整代码及说明详见github:https://github.com/zanshuxun/WeChat_Big_Data_Challenge_DeepCTR_baseline
【更新】关于复现不出0.63的问题
群里有很多小伙伴提出无法复现0.63,跑出来结果只有0.5多。下面是我这边具体的环境,麻烦大家再试下(应该是tf版本不同导致的):
deepctr==0.8.5
numpy==1.16.4
pandas==0.24.2
tensorflow==1.12.0
scikit_learn==0.24.2
目前来看 tf 1.12.0或1.13.1是可以正常复现出0.63的。以下是一些同学的反馈:
方案说明
-
特征:本方案关注于模型,仅使用以下6个较为基础的原始特征:[‘userid’, ‘feedid’, ‘authorid’, ‘bgm_song_id’, ‘bgm_singer_id’, ‘videoplayseconds’]
-
线上结果:
得分 查看评论 点赞 点击头像 转发 0.633475 0.612465 0.613346 0.700479 0.643898
运行环境
python 3.6
deepctr==0.8.5
tensorflow-gpu(tensorflow)
pandas
scikit-learn
deepctr安装说明
- CPU版本
$ pip install deepctr==0.8.5
- GPU版本
先确保已经在本地安装tensorflow-gpu
,版本为tensorflow-gpu>=1.4.0,!=1.7.*,!=1.8.*
,然后运行命令$ pip install deepctr==0.8.5 --no-deps
运行说明
-
新建data目录,下载比赛数据集,放在data目录下并解压,得到wechat_algo_data1目录
-
python run_mmoe.py
运行时间
在Tesla P40 24G GPU、E5-2650 v4 CPU机器上,训练时间为205s/epoch(6708846条样本)。
训练时显存占用为695MiB,内存占用为2.2G。
预测时间如下:
4个目标行为421985条样本预测耗时(毫秒):352.331
4个目标行为2000条样本平均预测耗时(毫秒):1.670
关于DeepCTR
DeepCTR是一个易用、可扩展的深度学习点击率预测算法包,基于tensorflow深度学习框架。
添加特征时,仅添加feature_columns即可,无需改动模型;
在模型方面,DeepCTR包含20多个CTR模型(如DeepFM、xDeepFM、DCN、AutoInt、DIN、FiBiNET等),可直接通过模型名调用。如需自定义模型,DeepCTR中也有很多高复用性的模块(例如DNN、FM、BiInteractionPooling、CIN、CrossNet等)。更多使用方法请参考DeepCTR文档。
DeepCTR也有pytorch版本:DeepCTR-Torch: https://github.com/shenweichen/DeepCTR-Torch
(想用torch版的小伙伴在下方评论区扣1,人数多的话,后面实现一波torch版的MMOE)。
其他
楼主之前做比赛,从很多前辈的分享或开源中学到了很多,现在希望自己也能贡献一些。希望本文可以帮助大家降低深度学习CTR模型的门槛,普及这些算法技术。
预祝大家在本次大赛中取得好成绩!
1
出现不能复现结果的原因可能是各个版本对optimizer的实现或接口上有区别。我是tf 1.15会出现同样问题,但通过选择Adam优化器能到0.627。
train_model.compile("adam", loss='binary_crossentropy')
实测可以
上torch
1
1
1
求个pytorch版本
1
1
你好,请问直接复制的代码,线上为什么只有0.53呢?
2、这是我这边具体的环境,麻烦再试下 看会不会是tf版本不同导致的
deepctr==0.8.5
numpy==1.16.4
pandas==0.24.2
tensorflow==1.12.0
scikit_learn==0.24.2
numpy==1.16.4
pandas==1.1.5
tensorflow==1.14.0
tf版本1.14 ,结果还是0.5x,请问能详细展开说明下原因么