返回列表

18th place solution (hypotheses on the datasets)

362. Google QUEST Q&A Labeling | google-quest-challenge

开始: 2019-11-22 结束: 2020-02-10 自然语言处理 数据算法赛
第18名方案(关于数据集的假设)

第18名方案(关于数据集的假设)

作者:flowlight | 比赛排名:第18名

感谢 Google 和 Kaggle 主办了这场激动人心的比赛。同时,祝贺所有参赛队伍!

看到比赛刚结束就在讨论区出现了这么多优秀的解决方案,我非常高兴。这让我也想与大家分享我自己的解决方案和见解。

假设

在描述建模和后处理之前,让我先解释一下我对本次比赛数据集的假设。

目标值的含义

我们看到每个标签都有一组奇怪的离散目标值,例如 {3/9, 4/9, 1/2, 5/9, 6/9, 7/9, 5/6, 8/9, 9/9}。虽然这在一些讨论帖(如 链接)中已经被讨论过,但我对这些目标值是如何生成的有一个不同的假设。我的假设主要包括以下几点:

  1. 每个目标值由三名评分者得出。
  2. 每名评分者在标注某个标签值时,会从一组答案值中选择一个。每个标签都有自己的一组答案值。例如,question_well_written 有 {1, 2, 3},question_type_choice 有 {0, 1},而 answer_satisfaction 有 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}。我假设 question_well_written 的答案值 1、2 和 3 分别对应“否”、“也许”、“是”。
  3. 每个目标值对应于(三名评分者答案值之和)/(答案值的最大可能总和)。例如,如果三名评分者对 question_well_written 分别给出 2、2 和 3 的答案值,则其目标值变为 (2 + 2 + 3) / (3 + 3 + 3) = 7 / 9。
  4. 根据第 1、2、3 点,我们可以得到 question_well_written 的目标值 {3/9, 4/9, 5/9, 6/9, 7/9, 8/9, 9/9}。但这并没有涵盖实际值中的 1/2 和 5/6。我猜测这些值是在某些目标值只有两名评分者的情况下获得的。

虽然第 4 点让我对我的假设不太自信,但我仍然相信每个目标有三名评分者比每个目标有超过 10 名评分者更符合现实。

训练集/测试集划分

我们可以获得以下信息:

  • 训练数据集中存在多个共享相同问题的问答对。
  • 测试数据集(包括公开和私有)中没有这样的对。
  • 训练集和测试集不共享任何共同问题。

基于此列表,我假设数据集划分如下:

  • 训练集:(频率 = 1 的问题)+(频率 > 1 的问题)。
  • 测试集(公开):频率 = 1 的问题。
  • 测试集(私有):频率 = 1 的问题。
  • 这三个数据集不共享共同问题。

基于此假设,我开始仅使用频率 = 1 的问题进行验证。这将我的单模型 CV 分数从 0.420 变为 0.382,这与我在测试数据集上的分数要接近得多。

建模

损失函数

在应用基于排名的最小-最大缩放后,我对每个目标使用了二元交叉熵。最小-最大缩放与第 3 名解决方案中提到的相同。使用最小-最大缩放是基于我对目标值的假设。例如,我假设 question_well_written 的 3/9 意味着非常强烈的“否”。

此外,我在最小-最大缩放之前将每个目标值替换为其排名。这提高了模型在目标值分布偏斜的标签上的性能。下图是 answer_well_written 目标值的分布。在这种情况下,区分目标值为 8/9 和 1 的问题比区分目标值为 0.5 和 8/9 的问题对 Spearman's rho 的影响更大。使用基于排名的最小-最大缩放将一组目标值从 {3/9, 4/9, 1/2, 5/9, 6/9, 7/9, 5/6, 8/9, 9/9} 转换为 {0, 0.001, 0.004, 0.008, 0.042, 0.137, 0.233, 0.482, 1.000},并鼓励模型检测那些对 Spearman's rho 产生较大影响的问题之间的差异。我在 CV 中通过基于排名的最小-最大缩放获得了 +0.01 的提升。

同比赛其他方案