评论

0.63baseline:基于DeepCTR实现的多任务学习模型MMOE【更新关于复现不出0.63的问题】

完整代码及说明详见github:https://github.com/zanshuxun/WeChat_Big_Data_Challenge_DeepCTR_baseline

各位小伙伴们大家好,经主办方同意,楼主开源了基于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
    

运行说明

  1. 新建data目录,下载比赛数据集,放在data目录下并解压,得到wechat_algo_data1目录

  2. 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模型的门槛,普及这些算法技术。

预祝大家在本次大赛中取得好成绩!

最后一次编辑于  2021-05-23  
点赞 11
收藏
评论

22 个评论

  • ADAM.
    ADAM.
    2021-05-22

    1

    2021-05-22
    赞同 7
    回复
  • _一桶二锅头
    _一桶二锅头
    2021-06-02

    出现不能复现结果的原因可能是各个版本对optimizer的实现或接口上有区别。我是tf 1.15会出现同样问题,但通过选择Adam优化器能到0.627。

    train_model.compile("adam", loss='binary_crossentropy')
    
    2021-06-02
    赞同 3
    回复 1
    • 经丶纬
      经丶纬
      2021-06-03
      感谢
      实测可以
      2021-06-03
      回复
  • 武欣
    武欣
    2021-05-22

    上torch

    2021-05-22
    赞同 3
    回复
  • 彼岸
    彼岸
    2021-05-23

    1

    2021-05-23
    赞同 2
    回复
  • 👀
    👀
    2021-05-23

    1

    2021-05-23
    赞同 2
    回复
  • Mr.Hu
    Mr.Hu
    2021-05-22

    1

    2021-05-22
    赞同 2
    回复
  • 尹朴
    尹朴
    2021-05-27

    求个pytorch版本

    2021-05-27
    赞同 1
    回复
  • xmnyuni
    xmnyuni
    2021-05-23

    1

    2021-05-23
    赞同 1
    回复
  • Huaqin
    Huaqin
    2021-05-22

    1

    2021-05-22
    赞同 1
    回复
  • 起个什么昵称呢
    起个什么昵称呢
    2021-05-22

    你好,请问直接复制的代码,线上为什么只有0.53呢?

    2021-05-22
    赞同 1
    回复 5
    • 深度匹配树
      深度匹配树
      2021-05-22
      1、看下在验证集上的weighted uauc是多少?也是0.5x吗?
      2、这是我这边具体的环境,麻烦再试下 看会不会是tf版本不同导致的
      deepctr==0.8.5
      numpy==1.16.4
      pandas==0.24.2
      tensorflow==1.12.0
      scikit_learn==0.24.2
      2021-05-22
      2
      回复
    • django
      django
      2021-05-31回复深度匹配树
      deepctr==0.8.5
      numpy==1.16.4
      pandas==1.1.5
      tensorflow==1.14.0


      tf版本1.14  ,结果还是0.5x,请问能详细展开说明下原因么
      2021-05-31
      回复
    • 深度匹配树
      深度匹配树
      2021-05-31回复django
      试试tf 1.12.0或1.13.1?
      2021-05-31
      回复
    • 赵楚
      赵楚
      2021-06-03回复深度匹配树
      确实和tf版本有关系 1.15就是0.5x,但是用tf1.12 基本上 能达到楼主说的效果。
      2021-06-03
      回复
    • AKA凤凰院
      AKA凤凰院
      2021-06-08
      1
      2021-06-08
      回复

正在加载...

登录 后发表内容