【技术分享】四:搜索排序—数据的采集与构造

  • 2019 年 10 月 28 日
  • 笔记

本文原作者:彭江军,经授权后发布。

导语:数据决定了任务的上限,模型方法决定达到上限的能力。在机器学习三要素里面,经验数据是极其重要的一环,直接决定了该机器学习任务的最终能达到的效果。尤其是在进入大数据时代,数据获取上面会比以往容易许多,选取数据集有时候带来的提升比更改模型带来的要快速的多。

1:数据的采集

按照有无标注的数据,可以将机器学习任务分为:监督学习,无监督学习,半监督学习。

监督学习,我们知道训练的特征和标注。寻找训练模型来拟合特征和标注之间的关系。

无监督学习,我们只知道训练的特征,而无标注。这个时候能利用的模型比较少,也没有标注的监督信息指导模型该怎么去优化。

半监督学习,利用少部分的有标注数据联合无标注的数据进行学习。在半监督学习中有一个常见的方法——active learning。

刚好之前做过一段时间,这里讲一下。

2: 主动学习

在一些复杂的监督学习任务中,获取标注样本是非常困难:既耗时,而且代价昂贵。如,语音识别(Speech recoginition)、信息提取(Information extraction)、分类和聚类(Classification and filtering)等。主动学习系统尝试解决样本的标注瓶颈,通过主动选择一些最有价值的未标注样本给相关领域的专家进行标注(Active learning systems attempt to overcome the labeling bottleneck by asking queries in the form of unlabeled instances to be labeled by an oracle)。

一般的流程是先基于小样本训练一个模型,然后对新的未标注样本进行标注,挑选样本扩大有标注的训练集,再次训练,如此迭代下去。流程如下所示:

这个里面在选择样本的时候有两个选择。

A:选择模型标注的高置信度的样本至有标注的数据集

B:选择模型标注的分不清楚的样本交给转给专家(标注人员)再行标注

我当时选择了A,因为可以避免人工的参与。

BUT结果并不是很明显。

可能原因是在于小样本学出来的模型能够学到的权重组合方式都是基于小样本的。基于小样本训练的模型挑选出来的无标注数据进行预测的高置信度的样本并没有带来更多的信息,从而不能带来更多的有用的数据。所以数据即使挑选的再多,带来的新信息也有限。无法对新数据进行更准确的预测。

如果需要选择扩充样本,可以通过挑选预测不确信的样本再次标注的方式来引入新的信息,从而加快模型对于未知样本的学习能力,加快模型达到最好预测精度的收敛速度。

3: 训练数据的构造

下面主要针对自己的项目,讲一讲如何构造样本的过程。

腾讯视频做一个有着1.6亿DAU的产品,和短视频不一样,每天有着亿级别的搜索请求,为了最好的掌握到用户的搜索点击兴趣,比较好的方式就是我们需要对用户的行为日志进行搜集和分析,构造训练数据。大量的训练样本可以较好的保持和线上的分布的一致性,接下来对训练样本的训练,就能对线上的排序起到一个比较好的预测作用。

在第一章写过需要构造的样本所需要的特征包括:

文本相关性类特征

内容质量分类特征

内容的时新类特征

点击类特征

用户画像类特征

需要的因变量有:

一次搜索下用户对于某个视频的行为结果

融合上述多张日志表,收集这些维度的上报特征,和用户的点击反馈日志按照搜索的id进行聚合形成排序的训练样本。上报的数据我们是通过TDWbossapi上报的,也可以通过原MIG的taf上报用户日志,数据落地到venus平台,然后进行后续的聚合等处理。

这份数据非常重要,它对应了我们第一章说的从哪里去学的问题。即便如此,有的时候有时,用户点击行为也无法衡量真实满意度。但是至少这份数据可以反映绝大多数用户的满意程度。日志的搜集流程是一个比较常规的流程,就不多讲了。

这里着重说一下,在选择样本的时候一些注意的事项。

3.1:样本采集分布的一致性

在进行采样的时候,数据的分布是需要花大气力来关注的。因为实际中数据分布的是很复杂,为了保证模型的泛化能力,需要对采集的数据的分布做分析。

这里在采集数据的时候,我们队采集的训练数据从视频一下几个方面进行确认来保证和线上分布的一致性。

           用户点击分布情况:仅曝光,短点击,中点击,长点击。

           搜索query的类型情况:如电视剧,电影,少儿,博客,体育等

           搜索query的点击情况,热门top query,冷门的query。

           搜索query的时新情况

3.2:训练数据样本筛选与清洗

实际中,由于上报的精确性,可能有的平台会增加噪音,或者用户搜索了一下比较偏门的query,或者异常的点击(重复点击)等等,因此需要对训练样本做一定清洗与筛选。

比较重要的环节有

1:Label的设置。在构造的过程中,我们将用户的行为分成了四种,仅曝光,短点击,中点击,长点击。分别给与label,0-3。

2:对冷门热门query的比列的选择,在我们预测用户的点击和长点击任务中,我们保持了和线上比较相近的比例。

3:用户点击数据需不需要做截断,因为后面的点击可能由于页面的展示,或者量少的原因会引入误差。在我们这里截图了前5屏(100条)的视频的结果。

4:一次搜索下面,有的用户可以压根没点,这部分排序样本该如何评定。在我们的样本选择过程做的比较粗糙,对于session下没有点击的或者点击次数,以及用户这次搜索下仅仅点击曝光了3条以下的视频的这次session的数据统统不考虑纳入训练样本。