2020腾讯广告算法大赛上分进榜艰难史

2020腾讯广告算法大赛链接

提交记录和目前排名

在这里插入图片描述
在这里插入图片描述

第一次参加算法比赛,在完成工作闲暇时间积极尝试,目前在初赛第63名,可以在2020腾讯广告算法大赛的榜单上,已备感荣幸。

尝试历程

提交记录这么多就可以看出,走的弯路很多,就当笨拙的案例稍微分享下。

赛题简单易懂,提供了用户在90天内的点击行为,从而预测出用户的年龄与性别。

1. 特征表示

  • 通常我们会先统计基础特征,提供的8个维度的 nunique,比如点击的不同的广告id数等,还有比如点击广告次数的最大最小值均值方差等等。其中有出现一个人点击的不同素材id(creative_id)n万的异常数据可以剔除。
  • 有了基础统计特征,之后单独对8个维度比如 creative_id 编码。简单可以想到的类似使用NLP的特征提取,把一个人点击的所有 creative_id 看作句子,所有人点击的 creative_id 看做文档,使用 tfidf 编码,调用 sklearn 的 CountVectorizer, TfidfVectorizer 就可以实现。tfidf 编码的维度非常大,和 one-hot 一样,区别只是 tfidf 反映的是 creative_id 的重要性,可以设置 min_df 大一些,降低维度。
  • 对于 tfidf 维度灾难的问题,这里有种方法比较适合,词嵌入的一种叫 word2vector 可以把高维稀疏向量变成稠密的向量。同样把一个人按时间顺序点击的 creative_id 认为一句话,creative_id 是一个词,[creative_id_1, creative_id_2…] 可以用 gensim 模块训练 creative_id 向量,经常在上下文出现的 creative_id 向量相近。
    这里你可以把训练集和测试集数据一起训练 w2v,window 可以设大一些。

2. 模型选择

  • 性别和分为10档的年龄都是分类问题,可以选择机器学习目前最热 lightgbm,速度快
  • 经过上文分析可以看成时序模型,可选用 lstm,gru 等。使用 creative_id 单个特征可以达到1.39+,而提供的数据集共有8个特征,转换成8种文本,一种做法是每种都 embedding 好,最底层拼接,其上接双向lstm层和全连接层;或者单独每种文本接 lstm 结构,最后多分类输出层拼接,再接全连接层输出。
  • 深度学习可以选择的网络很多,还可以尝试 lstm_attention、transformer,很多参数可以调节,学习率、batchsize、神经元个数层数、权重初始化、优化算法等等,都是至关重要的。目前我的结果还可以局部调优下去,进一步尝试。

深度学习相比机器学习来讲,或者特征工程,他是一个端对端的学习,学习过程中不进行分模块或分阶段进行训练,直接优化任务的总体目标,效果好。

后话

  1. 服务器配置也是一个不容忽视的点,我使用的配置就极其一般,CPU8核32G,GPU8G。在数据量特别大的情况下,又慢,内存不够的话size、embedding、特征维度都要截断,或者数据压缩。
  2. 比赛期间需要关注本届排名前列的大佬分享,比如鱼遇雨欲语与余 、明明可以靠实力偏偏要拼颜值等等,开拓思路
  3. 后续会继续调参,top1是1.45希望可以慢慢接近,或者尝试大佬分享的特征工程,如若进入复赛,比赛完分享代码,和大家一起学习进步。

仓促之下分享了代码,github地址:Xiaoyizhe

近刚开始申请公众号,希望可以努力分享人工智能的技术和编程,有想一起进步的可以关注一下,谢谢!

小亦折带你学AI

在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值