导入
问题陈述与评估指标
让我们深入探讨Airbnb租赁搜索排名应用的问题描述及所需指标。
Airbnb房源搜索排序
1. 问题描述
Airbnb用户经常在特定位置搜索房源。平台不仅要返回相关住宿结果,更重要的是返回那些用户最有可能预订的房源。因此,排序系统的目标非常明确:
将房源按其被预订的可能性进行排序,使可能性更高的房源在搜索结果中排名更靠前。
一种简单粗暴的方法可能是基于关键词匹配或人工设计的评分规则——例如根据查询词与房源描述之间的相似性进行排序。但这种方法在实际应用中效果不佳。文本相似性可能返回“听起来不错”的结果,却未必能转化为真实预订。
相反,我们需要一种数据驱动的方法。如果我们能够估算出用户预订某个房源的概率,就可以按照该概率进行排序。这就引出了核心思路:
训练一个有监督的机器学习模型,通过历史用户会话数据进行学习,预测某个房源是否会被预订。 这本质上是一个二分类任务:预订 vs. 未预订。
为什么选择二分类?
- 我们的输出是二元的(预订或未预订)。
- 它在评估排序质量、分析用户行为以及优化收入等下游指标方面具有更大的灵活性。
- 虽然回归方法(如直接预测预订概率)也可行,但分类模型在平衡误报和漏报时更具控制力——这在高风险排序场景中尤为重要。
...
Airbnb的搜索排序系统
2. 指标设计与要求
指标
选择合适的评估指标与选择算法同样重要。错误的指标可能导致模型优化错误的行为。
我们将指标分为两类:离线指标(训练阶段使用)和在线指标(线上生产环境测量)。
离线指标
- 归一化折损累计增益(nDCG):nDCG 是排序问题中的标准指标,特别关注结果的位置。它对排在列表顶部的正确预测赋予更高权重——这正是搜索排序所期望的效果。
为何使用 nDCG?
- 用户很少浏览全部结果,排在第2位的相关结果比排在第10位的价值更高。
- 相较于基础准确率或AUC,它同时考虑了相关性和位置因素。
- 相比精确率、召回率等简单的分类指标,它更能反映用户满意度。
其中:
- relᵢ 表示第 i 个位置的结果的相关性得分
- IDCG 表示理想状态下的 DCG,即所有相关结果都按最优顺序排列时的值
该指标帮助我们优化最相关(可预订)房源在搜索结果顶部的呈现能力。
在线指标
-
转化率与收入提升:衡量每个用户搜索会话中产生的预订数量。
要求
处理数据不平衡问题
数据集存在严重不平衡:大多数房源并未被预订。模型必须对此类偏差具备鲁棒性。
- 使用分层采样、类别加权或焦点损失(focal loss),避免模型偏向多数类。
- 可考虑对未预订样本进行降采样,或采用SMOTE等技术缓解类别不平衡。
按时间划分训练集与验证集
为模拟线上真实情况:
- 设定一个时间截点;
- 使用该时间点之前的会话数据作为训练集;
- 使用之后的会话数据作为验证集。
推理与服务部署考量
-
延迟要求:50–100ms。搜索排序需快速响应,以避免影响用户体验。
-
冷启动挑战:新上线的房源缺乏历史数据。可通过混合模型或规则启发式方法补充(例如优先展示图片质量高或价格有竞争力的房源)。
总结
| 类型 | 目标要求 |
|---|---|
| 指标 | 实现较高的归一化折损累计增益(nDCG) |
| 训练 | 能够处理类别不平衡的数据 |
| 按时间切分训练集与验证集 | |
| 推理 | 延迟控制在50ms至100ms之间 |
| 具备应对新房源预测不足的能力 |