本届腾讯算法大赛赛况激烈,大神云集。高手们在同台过招之余,也会借此机会进行技术交流和赛题探讨。今天我们就邀请到竞赛高分选手chizhu来分享参赛心得,希望这份独家“经验指南”会带给赛程中的你一些新思考。

大家好,我是林智敏。长期混迹竞赛圈,chizhu是我的赛圈id,我也曾获得Kaggle Master头衔。本次比赛单模成绩为1.4516,暂时排名第七。以下就是我今天要跟大家分享的解题思路。

01

解题思路

本届腾讯广告算法大赛的题目是用户画像,根据用户点击广告的序列预测用户的年龄和性别。这个题目对于我而言再熟悉不过了,因为之前的易观赛和华为赛也是预测年龄和性别。我们团队有幸在这两个比赛都取得第一名的好成绩。针对此类型的赛题,我们团队磨合出了一种思路,即先把id看成一个词,然后把id拼接起来连成一个句子,于是我们的任务就变成了一个脱敏场景下的文本分类问题。在此附上上述比赛解决方案,供选手们参考:

易观:

https://github.com/chizhu/yiguan_sex_age_predict_1st_solution

华为:

https://github.com/luoda888/HUAWEI-DIGIX-AgeGroup

回到正题,既然是文本分类,不可或缺的自然是文本表示——词向量。最常见的自然是word2vec,这里分享下个人的小经验:在数据量大的情况下采用skip-gram效果会好些,本次题目还有个重要参数window,细调可能有意外发现哦。

02

模型建立&后处理

(1)

模型结构

目前我的模型结构是:5输入+transformer(一层)+LSTM。

why not bert here ?我们知道bert在NLP届的霸主地位不可动摇,但因本次赛题的特殊性,最强的creative_id的词表共有300w+个,从头预训练一个bert的成本是非常高的。而且经过我的尝试,效果也不尽如人意。我也尝试了直接初始化一个4头注意力,128维的6层bert,最高只能到1.30。

(2)

模型详情

emb层词表实在过多,这里直接冻结不做更新。然后直接输入transformer(一层),这里需要用到click_time序列来做加权mask (把clisk_time当成attention_mask输入)。

transformer各个子模块都是有现成的,可以直接调用(这里要为huggingface团队打call):


from transformers.modeling_bert import BertConfig, BertEncoder, BertAttention,BertSelfAttention,BertLayer,BertPooler

后面再接一层LSTM,并做最大池化(只需要最大池化)。我也对均值池化进行了测试,结果显示attention加权求和都不上分。

最后简单的分出两条分支,直接双任务训练即可。

定义双loss求和:


def custom_loss(data1, targets1,data2, targets2):''' Define custom loss function '''loss1 = nn.CrossEntropyLoss()(data1,targets1)loss2 = nn.CrossEntropyLoss()(data2,targets2)return loss1*0.5+loss2*0.5

可以调节权重,看偏向哪个子任务。

还可以尝试啥?三大特征抽取器:transformer/LSTM/CNN。

后续可以尝试CNN,组合LSTM使用,排列组合,搭积木,搭出一片天。

(3)

后处理

对于acc/F1这类与阈值有关的指标其实可以针对类别设置不同权重。从output=argmax(preds)变成output=argmax(preds*weights)。

附上权重搜索的代码:


####optclass_num=10weights = [1.0]*class_numdef search_weight(valid_y, raw_prob, init_weight=[1.0]*class_num, step=0.001):weight = init_weight.copy()f_best = accuracy_score(y_true=valid_y, y_pred=raw_prob.argmax(axis=1))flag_score = 0round_num = 1while(flag_score != f_best):print("round: ", round_num)round_num += 1flag_score = f_bestfor c in range(class_num):for n_w in range(0, 2000,10):num = n_w * stepnew_weight = weight.copy()new_weight[c] = numprob_df = raw_prob.copy()prob_df = prob_df * np.array(new_weight)f = accuracy_score(y_true=valid_y, y_pred=prob_df.argmax(axis=1))if f > f_best:weight = new_weight.copy()f_best = fprint(f)return weight

今年我做了认真准备,来参加腾讯广告算法大赛,希望能在这个平台突破自我,取得佳绩!参赛后,我在每天工作之余,改改结构参数挂着跑,还是非常舒服的。我目前的思路还是只有NLP上的解法,很期待看到大佬们不一样的见解。

最后,祝大家取得满意的成绩。

每一次的切磋都是一次学习的机会,在互相竞技的过程中,既充满各式各样的挑战,也有新思路的启发。希望各位竞赛人能在腾讯算法大赛的平台上磨练技艺,不断进步,收获满满!

点击如下链接,查看赛况

2020腾讯广告算法大赛

扫码加入大赛官方QQ群

或搜索群号:1094257162

和小伙伴一起解锁更多内容

【王牌选手分享】一发问鼎!鹅厂大神上分思路,助你玩转初赛!相关推荐

  1. 花式上分算法大赛,速看鹅厂六强团队解题思路集锦【附PPT下载】

    历经4个月的算法征程,伴随着外部.内部赛道终极答辩,2020腾讯广告算法大赛正式落下帷幕(点击回顾).本届赛事火爆空前,外部赛道吸引了上万名全国选手火热PK,内部赛道的角逐也颇为激烈,吸引了来自 TE ...

  2. 【综述篇】鹅厂大剧拉开帷幕,“一条河”、“两张网”……等等!还有啥?

    我是一条河 流经时间与空间 连接万象与未来 -- 走进犹如梵高画作般的剧院,开场一部官宣主题片<河流>将腾讯二十年始终未变的"连接力"以及"行万里.利万物&q ...

  3. 第三周进步奖得主分享心得,带你一起快速上分!

    2019腾讯广告算法大赛初赛战场愈发火热,为了夺得复赛的入场券,选手们也各出奇招努力上分.小编也为大家及时送来第三周进步奖得主的心得分享,教你短期快速提分,顺利进入复赛战场! 关于赛题 数学问题 首先 ...

  4. 以朋友圈为例,腾讯资深架构师揭秘鹅厂大数据平台是怎样运营的

    导读:本文将从构成运营成本的主要运营资源(设备资源.带宽资源.专线资源)出发,以实际案例分别阐述精细化技术运营实施的要点. 需要提醒注意的是:精细化技术运营的目标是创造价值,而不是为了摧毁价值.精细化 ...

  5. 分享基于silverlight的一个大文件上传控件

    虽然codeplex已经有一些多文件,带进度条的上传控件,但是觉得都不是很好用,所以基于上面的控件重新设计了一个上传控件,更好的交互,属性绑定和管理文件. 1. 客户端使用: <mycontro ...

  6. 【复赛前排分享(一)】上分有路勤为径,大神教你剖析提分点

    ​2020腾讯广告算法大赛复赛已经落幕,决赛答辩终极一战即将在8月3日14:00深圳腾讯滨海大厦举行.了解决赛详情并预约直播观赛,请点击: 决赛来袭!十强战队齐聚,终极一战拉开帷幕! ​ 外部赛场战况 ...

  7. 鹅厂如何构建大型基础网络平台

    鹅厂是一个业务类型非常丰富的互联网公司,涵盖了大型社交流量平台(微信/QQ).在线游戏.公有云.媒体(新闻/视频).移动应用.开放平台.互联网金融等,不同类型的业务都有着自己的技术应用特点.业绩目标. ...

  8. 【选手分享】你想知道的比赛思路这里都有!速查收!

    比赛激烈升级,选手们也在紧锣密鼓地准备模型和方案,今天我们就邀请到选手Weber给大家分享他的参赛感受和上分思路,希望给同样紧张备赛的你一些思考和启发. 01 参赛感受 大家好,我是Weber,非常高 ...

  9. 大神干货:腾讯广告算法大赛亚军女极客生存图鉴

    为了助力你更好地了解这次比赛,这期我们特地邀请到了去年腾讯广告大赛的亚军--来自北京邮电大学的"烧卖"同学,让她帮你为今年的广告大赛划重点,分享去年迎战各路技术大神的经验,晒出自己 ...

最新文章

  1. hdu5701-中位数计数
  2. JS中Math函数的常用方法
  3. fcm算法c语言实现,基于特征权重的FCM算法研究及应用
  4. windows 技术篇 - uispy 工具获取和使用,windows窗口属性快捷查看工具
  5. linux kernel内存管理学习篇
  6. Excel中去掉单元格中间的空格
  7. [PHP] 现代化PHP之路:composer的镜像站设置
  8. 转,jquery中attr和prop的区别
  9. 【C++grammar】文件I/O流的基本用法
  10. macos 安装scala_如何在MacOS上安装Scala和Apache Spark
  11. Spring : 异步注解 @EnableAsync 和 @Async
  12. LeetCode题目总结-滑窗法
  13. cie规定的标准光源_什么是标准光源?
  14. Sonar扫描python代码
  15. steam密码查看_如何查看和清除Steam中的先前别名
  16. OLED12864(SSD1306)驱动代码
  17. 工业互联网标识解析体系
  18. 中科大自主招生2018笔试数学之三
  19. androidStudio连接不上模拟器(夜神模拟器)
  20. 【408数据结构】备考常见必会算法图鉴

热门文章

  1. SAP License:实施SAP Business One-企业获得了哪些业务价值
  2. SAP License:CO07利润中心必输
  3. MySQL高级知识(六)——索引优化
  4. Linux中,Tomcat 怎么承载高并发(深入Tcp参数 backlog)
  5. 杂项:HTML5-3/3-技术要点
  6. 在webstorm中新建模板
  7. 一个项目需要提交哪了些文档?
  8. hdu 2149+hdu 1846(巴什博弈)
  9. 爱不释手(Typingfaster)1.82beta ,请试用并反馈,谢谢
  10. 高并发编程知识体系阅读总结