我正在为电子商务构建一个搜索推荐系统,它会在给定输入查询的情况下生成最相关的结果。我将其定义为一个分类问题(学习排名)并使用逐点排名来计算相关性分数。
假设对于每个输入查询 Q1,我们必须生成 30 个最相关的结果。假设,用户发起搜索查询并选择第三个结果作为相关结果。我的问题是如何使用这种交互来为模型生成训练数据集:
- Q1 - 结果 3:正面标签
- Q1 - 结果 1,2:负标签(用户显然看到了结果 1,2 并且不喜欢它。在一些论文/博客中也被称为跳高)。
- Q1 - 随机:负标签(只需添加一些随机结果以将随机负数添加到数据集)。
4-30级怎么样。用户可能看到排名 4-8,但在这些排名之后用户甚至没有看到结果。是否应该使用这些较低的等级来生成隐含的负数以提供给模型?
优点
- 从较低等级的隐式负值中随机抽样将确保模型在预测期间必须得分的整个特征分布上进行训练。如果我们只使用步骤 1/2 中明确的正/负,模型将只在非常相关的结果上进行训练。从较低级别进行抽样将确保模型也将在整个相关结果范围内进行训练。
缺点
- 我们正在向训练数据集添加噪声,因为用户甚至没有与这些结果进行交互。
所以,主要的问题是我们是否应该将排名 4-30 的结果包括在内,这些结果可能甚至没有被用户视为训练数据集中的负面示例?