文本点击率预估挑战赛-冠亚季军方案总结(上)

简介: 文本点击率预估挑战赛-冠亚季军方案总结(上)

12.png

1 正式赛题——文本点击率预估


搜索中一个重要的任务是根据query和title预测query下doc点击率,本次大赛参赛队伍需要根据脱敏后的数据预测指定doc的点击率,结果按照指定的评价指标使用在线评测数据进行评测和排名,得分最优者获胜。


比赛链接:

https://www.kesci.com/home/competition/5cc51043f71088002c5b8840


1.1 比赛数据


sample数据(右键保存下载)

sample样本:query以及对应网页数据的的明文数据,并已经分词为term,term之间空格分割,样本行数3000;这份样本供参赛队伍了解基本的参数数据模式。

说明:所有数据按列分割,分隔符为”,",为不带表头的CSV数据格式。


sample样本格式:

13.png


training样本:脱敏后的query和网页文本数据,并已经分词为term并脱敏,term之间空格分割,样本规模初赛1亿,复赛增加到10亿;这份数据主要用于参赛队伍训练模型,制定预估策略。

training 样本示例 : 正赛赛题数据规模比较大,线上运行调试比较慢。为了提高效率,现提供一个 2 万行训练数据样本文件提供给选手在线下进行模型搭建,该文件格式中为线上训练集的前 2 万行数据,与线上训练数据文件格式完全相同。线下的 Notebook 可以导入到 K-Lab 中,利用完整训练集数据进行模型的训练。具体操作如下:


14.png


training样本格式:

15.png


test样本:脱敏后的query和网页文本数据,并已经分词为term并脱敏,term之间空格分割,样本规模初赛5百万,复赛2千万(与初赛不重复);这份数据用于参赛队伍比赛中模型评估和排名,初赛队伍根据初赛队伍根据初赛排名择优进入复赛;复赛test数据数据仅用于复赛排名,不计入复赛最终成绩。


test样本格式:

16.png


最终成绩test****样本:脱敏后的query和网页文本数据,样本规模1亿,样本数据格式与test样本格式相同;这份数据用于复赛队伍的最终成绩评比和排名,不参与比赛过程的排名;数据放出日期为复赛结束前一周。


1.2 选手提交结果

对于测试数据“query_id, query, query_title_id, title”,选手提交数据是“query_id, query_title_id, prediction”,提交格式说明如下:


17.png


  • 对于测试数据:1, 1 2 3, 4,1 4 9
  • 提交样例如下(其中第一列为query_id,二列为query_title_id,三列为prediction):

1,1,1

1,2,0.5

1,3,0.49

1,4,0

1,5,0

1,6,0

2,1,1

...



1.3 评估标准


选手提交结果的评估指标是qAUC,qAUC为不同query下AUC的平均值,计算如下:


18.png


其中AUCi为同一个query_id下的AUC(Area Under Curve)。最终使用qAUC作为参赛选手得分,qAUC越大,排名越靠前。


非常感谢国内大佬无私的分享,我们愉快的学习吧~


2 冠军-Progressing 冠军方案


分享链接:


https://www.kesci.com/mw/project/5d9ef1fc037db3002d3f75a3


2.1 解题思路之机器学习


  1. 机器学习
  • 如果将这个题目可以看作:(文本)点击率预估的问题,则可以直接使用机器学习或者数据挖掘的方法来求解,即进行 特征工程+模型优化 的方法
  • 另外,由于这是一个中文文本相关的赛题,因此特征工程方面有很多是提取文本相关的特征,因此需要了解一些自然语言处理中文文本处理的前置知识(比如对句子进行分词的统计、TF-IDF 技术、词的表征方法等,都可以在网上找到相关的资料来学习)
  1. 特征工程我们团队主要提取了以下几部分特征:
  • 统计特征
    query/title 的长度/重复出现的数量,公共词的数量及在 query/title 中的占比和多项式特征,每组 title 长度的最大值最小值和平均值、不同粒度下的 CTR 特征 …
  • 距离特征
    基于词向量:canberra 距离,曼哈顿距离,欧几里得距离,braycurtis 距离,相关系数 …
    基于离散的词:曼哈顿距离,欧几里得距离,jaccard 距离,levenshtein 距离,levenshtein_jaro 距离,汉明距离 …
  • 相似度特征
    基于词向量:余弦相似度、levenshtein 相似度 …
    基于离散的词:余弦相似度、共现词的数量及占比 …
  • 语义特征
    N-Gram 特征、TF-IDF 特征、首词/末词/词的顺序以及出现位置 …
  1. 特征选择
  • 在这里我们主要使用了过滤法(filter)和包裹法(wrapper),以及结合 LightGBM 的特征重要度(feature_importance)来进行筛选
  1. 模型建立
  • 考虑到本赛题的样本量比较大,因此使用 LightGBM 来建立模型,它计算速度比 XGBoost 更快,而且科赛平台的技术人员已经为我们安装了 GPU 版本的 LightGBM,因此可以使用 GPU 进行加速计算(为科赛的小哥哥小姐姐点赞👍)
  1. 方法小结
  • 机器学习模型的上限不高,因为它无法完全利用文本的信息,也许做更加精细的关于文本的特征可能会有更好的效果,但是这种特征是比较难以想到或者不存在的


后面在决赛答辩的时候,了解到其他队伍利用了 BM25 相关度特征和一些自定义的 CTR 特征来提升模型结果

推荐一些文本处理工具库:Levenshtein、Textdistance、Difflib、Fuzzywuzzy 等

下图是部分重要特征分析:


19.png


2.2 解题思路之深度学习


  1. 深度学习
  • 将这个题目可以看作:短文本匹配+点击率预估 的问题。使用深度学习的方法可以更好的捕捉到词/句子/段落/文本之间的关系,关键的一点就是找到对每个 term(本赛题是将每个词划分为term)的表示(比如词向量),再搭建深度神经网络来训练样本,从而得到不同文本之间(query和title)的相关程度
  • 而且本次比赛的数据量比较大,达到了上亿级别,因此也特别适合使用深度学习方法来进行建模
    20.png


  1. 词的表征方法
  • 词的表示方法有很多,主要是要考虑到不同词向量的适用场景和训练效率。fasttext 的训练速度很快、效果也不错,但由于这是一个脱敏的文本,因此其 subword 机制会受到一定影响;而目前很火的 BERT 预训练模型也无法使用,因为需要重新对这些脱敏后的 term 进行训练,而 BERT 的参数量太大,GPU 资源又有限,因此重新训练 BERT 是不可行的 …
  • 于是我们队伍最终使用了经典的 word2vec 来训练词向量(有一些文本是重复的,因此可以考虑去重后加速训练速度),这是一种静态的词向量表示方法,但对于这个比赛来说已经足够了。训练使用是 gensim 库的 word2vec。其中,数据量是训练集的全部数据(使用迭代方式来训练,否则可能会因为内存不够而导致训练失败),词向量维度:300,滑动窗口大小:5,最小词频数:3,训练轮数:5,训练方式:skip-gram
  • 其实,对词的表征方法还可以使用不同词向量来组合表示,比如将 word2vec 和 fasttext 训练出的词向量进行加权求和,或者直接将这两种词向量进行横向拼接,来形成一个维度更大的词向量。这种操作方式,在某些任务上可能会取得更好的效果


  1. 深度神经网络
  • 在深度学习方面,我们最先直接使用深度学习模型来进行训练,但发现模型训练时 loss 比较高,无论是调节学习率、更换优化器还是增加数据量等,loss 都无法明显降低。直到后面在讨论区受到一些大佬的指点,发现在深度神经网络中融合其他特征,可以使得模型训练的 loss 进一步降低,从而学习到更多的信息
  • 主要尝试了 伪孪生网络ESIM 模型。(伪)孪生网络的训练速度比较快,效果也还不错。而 ESIM 由于采用了 attention 机制将句子对齐,可以更好的学习到句子之间的语义关系,从而可以很好地进行匹配,效果相比于孪生网络的效果提升不少,但训练的时间开销也更大。然后,我们团队也对 ESIM 做了一些定制化的改进,在提升模型效果的同时减少时间开销
  • 模型训练的一些细节:batch size 为 512(考虑到显存大小),学习率随着 epoch 增加递减,优化器为 Adam,以及对句子使用了动态padding的操作等


21.png
Image Name


  1. 模型集成
  • 为了尽可能地利用数据量,我们以每 1 亿或 2 亿数据来训练一个模型,挑选出每1亿或2亿中训练效果最好的模型来进行模型融合,最终使用了约 8 亿数据,使用效果最好的几个模型,并根据线上的结果来进行线性加权融合,以尽可能来降低模型在最终测试集上的泛化误差
  • 下图是深度学习模型效果与数据利用率一种可能的关系

    22.png
    Image Name


2.3 比赛总结


  • 需要注重细节:对比赛赛题有清晰的认识,将会直接关系到最后的成绩。像这种数据集比较大的比赛,更需要合理安排资源(比如内存、显存资源)和时间(可以使用一些多进程等其他技术来提高设备的利用率),如果有需要可以列一个详细的计划安排表,还可以另外建立一个文档来记录团队已完成和待完成的事项
  • 比赛过后,发现机器学习、深度学习的基础知识以及对一些框架地熟练使用对于做比赛是至关重要的,还有对一些最新前沿技术的了解与应用很多时候就是提升比赛成绩的关键
  • 在这个比赛学习到了很多关于深度学习和自然语言处理的知识,也结交了一些朋友,一个团队良好的沟通对于比赛成绩的提高是至关重要的


相关文章
|
13天前
|
数据可视化 Python
R语言量化技术分析的百度指数关注度交易策略可视化
R语言量化技术分析的百度指数关注度交易策略可视化
|
5月前
|
自然语言处理 安全 算法
23REPEAT方法:软工顶会ICSE ‘23 大模型在代码智能领域持续学习 代表性样本重放(选择信息丰富且多样化的示例) + 基于可塑权重巩固EWC的自适应参数正则化 【网安AIGC专题11.22】
23REPEAT方法:软工顶会ICSE ‘23 大模型在代码智能领域持续学习 代表性样本重放(选择信息丰富且多样化的示例) + 基于可塑权重巩固EWC的自适应参数正则化 【网安AIGC专题11.22】
80 0
23REPEAT方法:软工顶会ICSE ‘23 大模型在代码智能领域持续学习 代表性样本重放(选择信息丰富且多样化的示例) + 基于可塑权重巩固EWC的自适应参数正则化 【网安AIGC专题11.22】
|
11月前
|
机器学习/深度学习 存储 人工智能
深度学习应用篇-推荐系统[11]:推荐系统的组成、场景转化指标(pv点击率,uv点击率,曝光点击率)、用户数据指标等评价指标详解
深度学习应用篇-推荐系统[11]:推荐系统的组成、场景转化指标(pv点击率,uv点击率,曝光点击率)、用户数据指标等评价指标详解
深度学习应用篇-推荐系统[11]:推荐系统的组成、场景转化指标(pv点击率,uv点击率,曝光点击率)、用户数据指标等评价指标详解
|
12月前
|
机器学习/深度学习 存储 分布式计算
KDD 2022 | 快手提出基于因果消偏的观看时长预估模型D2Q,解决短视频推荐视频时长bias难题
KDD 2022 | 快手提出基于因果消偏的观看时长预估模型D2Q,解决短视频推荐视频时长bias难题
336 0
|
机器学习/深度学习 存储 开发框架
推荐系统[八]算法实践总结V1:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】
推荐系统[八]算法实践总结V1:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】
推荐系统[八]算法实践总结V1:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】
|
机器学习/深度学习 搜索推荐 算法
《基于深度学习的广告CTR预估算法》电子版地址
基于深度学习的广告CTR预估算法
66 0
《基于深度学习的广告CTR预估算法》电子版地址
|
数据可视化 前端开发 Python
基于搜索指数可视化分析近十年的中秋热度
基于搜索指数可视化分析近十年的中秋热度
133 0
基于搜索指数可视化分析近十年的中秋热度
|
机器学习/深度学习 人工智能 自然语言处理
飞桨文心大模型挑战高考作文:平均 1 秒生成 1 篇,水平超 75% 考生
全国高考正在进行中,百度 AI 技术也迎来一场“高考”。6 月 7 日,百度数字人度晓晓在高考语文考试结束后,化身为“数字人考生”,挑战高考作文写作。
284 0
飞桨文心大模型挑战高考作文:平均 1 秒生成 1 篇,水平超 75% 考生
|
机器学习/深度学习 算法
文本点击率预估挑战赛-冠亚季军方案总结(下)
文本点击率预估挑战赛-冠亚季军方案总结(下)
175 0
文本点击率预估挑战赛-冠亚季军方案总结(下)
|
机器学习/深度学习 数据采集 搜索推荐
技术解读 | 智能开放搜索CTR预估模型
本文介绍开放搜索CTR预估模型在个性化排序中的应用与实践
2230 2