高分选手讲解:如何突破思维圈限,从NLP角度挖掘新的解题思路

稳居排行榜前三,成绩高达1.453292的他,究竟是位怎样的神级选手?今天,我们就邀请到这位实力强劲的神秘大咖,为大家揭晓他的上分思路。

实力选手在线指导,火速报名与他PK一下吧!5月31日算法大赛报名截止,别犹豫,赶紧来挑战!

大家好,我是选手明明可以靠实力偏偏要拼颜值,很高兴能够参加今年的腾讯广告算法大赛。

本届赛题提供了用户在90天内的点击行为,从而预测出用户的年龄与性别。对于此次比赛,我将简单地从NLP的角度解析赛题,从而为大家提供解题思路。

01

如何转化成NLP问题

首先,我们来看下如何和NLP问题联系起来。用户在90天内点击了不同的广告,我们可以将每个广告看作一个单词word,然后把这些单词连接起来组成一句话:[creative_id_1,creative_id_2,…,creative_id_n]。

由于每个广告有不同属性,如广告主id,并且每个用户点击广告也有不同属性,如点击次数,这样对于每个用户我们就可以得到8种文本。那么剩下的问题就是如何根据这8种文本预测用户的年龄和性别。在NLP中,预测文本的类别有许多模型,比如lstm, gru, transformer等。对于这8种文本,我们将它们看成正常的文本,然后输入到常见的NLP模型中,在输出端做多分类即可。

02

如何解决OOV问题

OOV的全称是Out of Vocabulary, 在这里是指:测试集的某些广告不在训练集中,导致在训练的过程中,测试集中某些广告的embedding并没有被训练。因此,如果能够很好的解决OOV问题,那么就可以有效的提高成绩,这里主要有两种方法。第一种方法,我们可以截断低频广告,设置成unknown,那么对于测试集新出现的广告也可以直接设置成unknown。第二种方法是通过w2v的方式,预训练全部广告的embedding,然后在做训练时,把embedding的参数固定住。

03

如何解决词表过大而造成的显存溢出问题

但现在有一个问题:广告有300w左右,如果将embedding的维度设置为128,那么显存会溢出。针对这个问题,接下来我会提供一些解决方案。在上文中说过,如果经过w2v的预训练,我们可以把embedding的参数固定住,因此我们没有必要把embedding矩阵放到显存中,我们可以把该矩阵放到cpu上,这样就不会占用显存了。另一种方法大家也有使用,就是用类似keras的generator或者pytorch的dataloader,然后利用gensim模型去寻找广告所对应的embedding。由于generator和dataloader都是多线程处理,所以寻找起来也非常快。

目前,我使用了8种基本广告特征和用户点击特征,然后花了两周时间对模型进行修改和调参,达到了1.453的成绩,由此可以看出这8种文本信息还是非常重要的。接下来,如果需要取得好的成绩,可能需要进行一些特征工程。

祝大家在接下来的比赛中,能够取得好成绩。

收获了神秘大佬的心得分享后,你的解题思路有没有开阔了许多呢?祝各位选手在接下来的比赛中一帆风顺,成绩飙升!

和大咖同台竞技的绝佳机会

赶紧报名来挑战吧!

2020腾讯广告算法大赛报名截止时间:

5月31日

即将截止,欲报从速!

有意向者可点击下方链接前往大赛官网报名参加!

2020腾讯广告算法大赛

TI-ONE系列教程

如何注册与开通智能钛服务?

如何使用 TI-ONE 平台内置算子玩转算法大赛

如何使用 TI-ONE 平台内置框架玩转算法大赛

如何使用 TI-ONE Notebook 玩转算法大赛

如何使用 TI-ONE SDK 玩转算法大赛

扫码加入大赛官方QQ群

或搜索群号:1094257162

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

高分选手讲解:如何突破思维圈限,从NLP角度挖掘新的解题思路