第一届腾讯社交广告高校算法大赛-移动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依赖包
- Keras==2.0.6
- lightgbm==0.1
- matplotlib==2.0.0
- numpy==1.11.3
- pandas==0.19.2
- scikit-learn==0.18.1
- scipy==0.18.1
- tensorflow-gpu==1.2.1
- tqdm==4.11.2
- xgboost==0.6a2
- 其他库 LIBFFM v121
运行说明
- 将复赛数据文件
final.zip
放在根目录下 - 在根目录下运行
sh run.sh
命令生成特征文件 - 打开
./code/_4_*_model_*.ipynb
分别进行模型训练和预测,生成单模型提交结果,包括lgb,xgb,ffm,mlp
- 打开
./code/_4_5_model_avg.ipynb
进行最终的加权平均并生成最终提交结果
方案说明
- 用户点击日志挖掘
_2_1_gen_user_click_features.py
挖掘广告点击日志,从不同时间粒度(天,小时)和不同属性维度(点击的素材,广告,推广计划,广告主类型,广告位等)提取用户点击行为的统计特征。 - 用户安装日志挖掘
_2_2_gen_app_install_features.py
根据用户历史APP安装记录日志,分析用户的安装偏好和APP的流行趋势,结合APP安装时间的信息提取APP的时间维度的描述向量。这里最后只用了一种特征。 - 广告主转化回流上报机制分析
_2_4_gen_tricks.py
不同的广告主具有不同的转化计算方式,如第一次点击算转化,最后一次点击算转化,安装时点击算转化,分析并构造相应描述特征,提升模型预测精度。 - 广告转化率特征提取
_2_5_gen_smooth_cvr.py
构造转化率特征,使用全局和滑动窗口等方式计算单特征转化率,组合特征转化率,使用均值填充,层级填充,贝叶斯平滑,拉普拉斯平滑等方式对转化率进行修正。 - 广告描述向量特征提取
_2_6_gen_ID_click_vectors.py
广告投放是有特定受众对象的,而特定的受众对象也可以描述广告的相关特性,使用不同的人口属性对广告ID和APPID进行向量表示,学习隐含的语义特征。 - 建模预测
使用多种模型进行训练,包括LightGBM,XGBoost,FFM和神经网络,最后进行多模型加权融合提高最终模型性能。
其他
- 最终线上排名20,logloss 0.101763
- 最终特征维度在110左右
- 部分最终没有采用的特征代码依然保留
- 由于我们团队的代码是3个人共同完成的,我这里整理的模型训练的部分可能和当时略有差异,但特征部分基本一致。
deprecated
目录下为弃用的代码,包括一些原始代码和打算尝试的方法