/Tencent_Social_Ads2017_Mobile_App_pCVR

Tencent Social Ads 2017 contest rank 20

Primary LanguageJupyter Notebook

第一届腾讯社交广告高校算法大赛-移动App广告转化率预估

赛题详情http://algo.tpai.qq.com/home/information/index.html  
题目描述
根据从某社交广告系统连续两周的日志记录按照推广中的App和用户维度随机采样构造的数据,预测App广告点击后被激活的概率:pCVR=P(conversion=1 | Ad,User,Context),即给定广告、用户和上下文情况下广告被点击后发生激活的概率。

运行环境

  • 操作系统 Ubuntu 14.04.4 LTS (GNU/Linux 4.2.0-27-generic x86_64)
  • 内存 128GB
  • CPU 32 Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
  • 显卡 TITAN X (Pascal) 12GB
  • 语言 Python3.6
  • Python依赖包
    1. Keras==2.0.6
    2. lightgbm==0.1
    3. matplotlib==2.0.0
    4. numpy==1.11.3
    5. pandas==0.19.2
    6. scikit-learn==0.18.1
    7. scipy==0.18.1
    8. tensorflow-gpu==1.2.1
    9. tqdm==4.11.2
    10. xgboost==0.6a2
  • 其他库 LIBFFM v121

运行说明

  1. 将复赛数据文件final.zip放在根目录下
  2. 在根目录下运行sh run.sh命令生成特征文件
  3. 打开./code/_4_*_model_*.ipynb分别进行模型训练和预测,生成单模型提交结果,包括lgb,xgb,ffm,mlp
  4. 打开./code/_4_5_model_avg.ipynb进行最终的加权平均并生成最终提交结果

方案说明

  1. 用户点击日志挖掘_2_1_gen_user_click_features.py
    挖掘广告点击日志,从不同时间粒度(天,小时)和不同属性维度(点击的素材,广告,推广计划,广告主类型,广告位等)提取用户点击行为的统计特征。
  2. 用户安装日志挖掘 _2_2_gen_app_install_features.py
    根据用户历史APP安装记录日志,分析用户的安装偏好和APP的流行趋势,结合APP安装时间的信息提取APP的时间维度的描述向量。这里最后只用了一种特征。
  3. 广告主转化回流上报机制分析_2_4_gen_tricks.py
    不同的广告主具有不同的转化计算方式,如第一次点击算转化,最后一次点击算转化,安装时点击算转化,分析并构造相应描述特征,提升模型预测精度。
  4. 广告转化率特征提取_2_5_gen_smooth_cvr.py
    构造转化率特征,使用全局和滑动窗口等方式计算单特征转化率,组合特征转化率,使用均值填充,层级填充,贝叶斯平滑,拉普拉斯平滑等方式对转化率进行修正。
  5. 广告描述向量特征提取_2_6_gen_ID_click_vectors.py
    广告投放是有特定受众对象的,而特定的受众对象也可以描述广告的相关特性,使用不同的人口属性对广告ID和APPID进行向量表示,学习隐含的语义特征。
  6. 建模预测
    使用多种模型进行训练,包括LightGBM,XGBoost,FFM和神经网络,最后进行多模型加权融合提高最终模型性能。

其他

  • 最终线上排名20,logloss 0.101763
  • 最终特征维度在110左右
  • 部分最终没有采用的特征代码依然保留
  • 由于我们团队的代码是3个人共同完成的,我这里整理的模型训练的部分可能和当时略有差异,但特征部分基本一致。
  • deprecated目录下为弃用的代码,包括一些原始代码和打算尝试的方法